起因

一台FreeBSD 10跑了好几年了,一直稳定也就没经常去折腾,今天突然要上去用nmap扫描一个IP,发现系统上没有,于是就随手执行了 pkg install nmap 进行安装,结果就一直报 pkg size mismatch 的错误,重复多次都一样.
FreeBSD pkg install size mismatch报错

第一感觉就怀疑是不是网络问题,导致pkg 下载的包不完整,所以无法通过校验,后来尝试挂了加密代理后安装还是一样;最后经过多方搜索,基本搞懂了问题原因,不算太复杂的问题。

原因

因为这一台 FreeBSD 系统太久没更新了,pkg cache 也都是旧的,而 pkg 源上的很多软件版本以及相关信息都更新了,所以下载下来的新版本 pkg 包就无法在系统本地通过校验了,解决方法就是要先更新系统本地的 pkg cachepkg meta 数据;

解决方法

很简单,执行如下三条指令即可:

#pkg clean
#rm -rf /var/cache/pkg/*
#pkg update -f

FreeBSD pkg update

从这里的 pkg update 的结果可以看到系统正确发现了新版本的 package bibcursed,我们只需要同意系统更新即可;
这也就突然解释了我很久以来的一个困惑,为什么这台系统这么久没更新过了,但是我每次执行 pkg update 都提示没有任何更新,原因就是系统本地缓存的 package bibcursed 没有更新导致;

接下来,终于可以正常安装 nmap 工具了,顺便也把整个系统已安装的 pkg 都更新了一下
FreeBSD pkg install nmap

小结

以后定期要 update 系统或安装新软件之前,建议都将本地的 pkg cache 都清理并更新一下!

Last modification:June 13, 2018
如果觉得我的文章对你有用,请随意赞赏