pkg 是默认选择
首次运行会引导安装 pkg。常用的只读查询与变更命令:
pkg search nginx
pkg info
pkg info -r openssl
pkg install nginx
pkg upgrade
pkg delete nginx
pkg autoremove
pkg audit -F
执行 pkg upgrade 前先阅读事务摘要,特别注意将被删除的软件、ABI 变化和内核模块。pkg autoremove 也必须审阅,不应放入无人看管的修复脚本。
quarterly 与 latest
FreeBSD 官方包仓库通常提供季度分支与 latest 分支。季度分支强调稳定变化节奏,latest 更快获得新版本。切换分支会影响整套依赖,必须在配置管理中显式记录,并在测试机验证;不要临时修改 URL 只为取得一个新包。
查看实际仓库配置:
pkg -vv
find /etc/pkg /usr/local/etc/pkg -type f -maxdepth 3 -print
不要直接编辑 /etc/pkg/FreeBSD.conf,本地覆盖放在 /usr/local/etc/pkg/repos/,并用 pkg -vv 验证最终合并结果。
什么时候才使用 Ports
Ports 适合需要非默认编译选项、补丁或尚无二进制包的软件。它不是“更新的软件商店”。使用前确认 /usr/ports 与目标包仓库分支的关系,并使用 poudriere 等隔离构建方案,而不是在生产主机随意 make install clean。
混用的主要风险是:pkg 不知道某个 Ports 构建所采用的选项,下一次升级可能替换它或引入不兼容依赖。少量自编译包也应记录 origin、选项、构建日志和回退包。
更新前后清单
pkg prime-origins | sort -u > /var/backups/pkg-prime-origins.txt
pkg check -da
pkg update
pkg upgrade -n
-n 只预览。正式升级后检查服务、配置差异、动态库和 pkg audit -F。大版本 FreeBSD 升级存在 ABI 变化,官方流程要求 pkg-static upgrade -f;小版本升级不要无理由强制重装全部包。
PkgBase 不是第三方 pkg 的同义词
普通 pkg install nginx 管理 /usr/local 下第三方软件;PkgBase/freebsd-base 管理基础系统。两者使用不同仓库角色,不能因为都用 pkg 就混成一套无差别升级策略。参见PkgBase 边界。