起因
一台FreeBSD 10跑了好几年了,一直稳定也就没经常去折腾,今天突然要上去用nmap扫描一个IP,发现系统上没有,于是就随手执行了 pkg install nmap 进行安装,结果就一直报 pkg size mismatch 的错误,重复多次都一样.
第一感觉就怀疑是不是网络问题,导致pkg 下载的包不完整,所以无法通过校验,后来尝试挂了加密代理后安装还是一样;最后经过多方搜索,基本搞懂了问题原因,不算太复杂的问题。
原因
因为这一台 FreeBSD 系统太久没更新了,pkg cache 也都是旧的,而 pkg 源上的很多软件版本以及相关信息都更新了,所以下载下来的新版本 pkg 包就无法在系统本地通过校验了,解决方法就是要先更新系统本地的 pkg cache 和 pkg meta 数据;
解决方法
很简单,执行如下三条指令即可:
#pkg clean
#rm -rf /var/cache/pkg/*
#pkg update -f
从这里的 pkg update 的结果可以看到系统正确发现了新版本的 package bibcursed,我们只需要同意系统更新即可;
这也就突然解释了我很久以来的一个困惑,为什么这台系统这么久没更新过了,但是我每次执行 pkg update 都提示没有任何更新,原因就是系统本地缓存的 package bibcursed 没有更新导致;
接下来,终于可以正常安装 nmap 工具了,顺便也把整个系统已安装的 pkg 都更新了一下
小结
以后定期要 update 系统或安装新软件之前,建议都将本地的 pkg cache 都清理并更新一下!