第 11.3 节 通过源代码更新
基本思路就是获取 FreeBSD 的源代码,然后进行编译安装。可以使用 git 直接拉取代码,也可以直接下载 ISO 镜像里面的 txz 压缩文件或者去 github 上下载当前 FreeBSD 项目的 zip 压缩包。
编译流程见 Handbook 即可。非常地简单。
获取源代码
FreeBSD 项目在 2021 年从 SVN 全面迁移到了 Git,即 https://git.freebsd.org
所以获取源代码的方式也产生了变化,不再使用 svn 了。
从 Git 获取源代码
- Git
# pkg install -y git
# git clone --depth 1 https://git.FreeBSD.org/src.git /usr/src # 或 https://github.com/freebsd/freebsd-src
故障排除:
- Git
fatal: unable to update url base from redirection
使用 FreeBSD 源却没加 .git
- Gitup
# pkg install -y gitup
# gitup release # 具体版本需要参考当前 gitup 配置 https://github.com/johnmehr/gitup/blob/main/gitup.conf
# gitup current # 获取 current 源代码
故障排除:
fatal: unable to access 'https://git.FreeBSD.org/src.git/': SSL certificate problem: certificate is not yet valid
可能是时间不对造成的,同步时间:
# ntpdate -u pool.ntp.org # 当时间相差较大时必须使用该命令,其他命令不会生效
从压缩包获取源代码(推荐)
该方法比较简单快捷。
以 FreeBSD 14.0 为例:
# fetch https://download.freebsd.org/ftp/releases/amd64/14.0-RELEASE/src.txz
# tar xvzf src.txz -C /
如果速度慢可以切换到 14.0-RELEASE/src.txz
开始编译
# cd /usr/src
# make -j4 buildworld # 编译世界
# make -j4 kernel # 编译并安装内核
# reboot # 重启使用新内核
# etcupdate -p # 合并更新
# cd /usr/src
# make installworld # 安装世界
# etcupdate -B # 合并更新
# reboot # 重启
故障排除:
Conflicts remain from previous update, aborting.
root@ykla:~ # etcupdate -B
Conflicts remain from previous update, aborting.
# export EDITOR=/usr/bin/ee # 切换 vi 为 ee,vi 不会用,限 FreeBSD 14 及以上。csh 使用: setenv EDITOR /usr/bin/ee
# export VISUAL=/usr/bin/ee # 切换 vi 为 ee,vi 不会用,限 FreeBSD 14 及以上。csh 使用: setenv VISUAL /usr/bin/ee
# etcupdate resolve # 解决冲突
Resolving conflict in '/etc/group':
Select: (p) postpone, (df) diff-full, (e) edit,
(h) help for more options: e # 输入 e 解决冲突
# etcupdate -B