起因
一台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
都清理并更新一下!