5.8 使用源代码更新 FreeBSD
基本思路是获取 FreeBSD 的源代码,然后进行编译和安装。可以使用 Git 直接拉取代码,也可以从 ISO 镜像中下载 txz 压缩文件,或者从 GitHub 下载当前 FreeBSD 项目的 zip 压缩包。
编译流程参见 Handbook 即可。
SVN 到 Git 的迁移
FreeBSD 项目在 2021 年从 SVN 全面迁移到了 Git,即 https://git.freebsd.org
因此,获取源代码的方式也发生了变化,不再使用 SVN。
从 Git 获取源代码
安装 Git
使用 pkg 安装 Git:
# pkg install git或者使用 ports 安装 Git:
# cd /usr/ports/devel/git/
# make install cleanGit 代理设置方法
设置 Git 全局代理:
取消 Git 全局代理:
Git 拉取源代码
拉取 CURRENT
通过 FreeBSD 官方存储库拉取。克隆 FreeBSD 源码仓库到 /usr/src,使用浅克隆减少下载量:
参数 --depth 1 说明:浅克隆,仅拉取最新的提交,不拉取全部的日志及历史记录
或者通过 GitHub 拉取(GitHub 是 FreeBSD.org 上 src 仓库的镜像,每 10 分钟同步一次。)
拉取某 RELEASE
通过 FreeBSD 官方存储库拉取。克隆 FreeBSD 15.0 发布分支源码到 /usr/src,使用浅克隆并仅包含该分支:
--branch releng/15.0:指定拉取分支(FreeBSD RELEASE 的版本)--single-branch:仅克隆一个分支,除该已克隆的单一分支外不含任何其他引用(refs)。
或者通过 GitHub 拉取。从 GitHub 克隆 FreeBSD 15.0 发布分支源码到 /usr/src,使用浅克隆并仅包含该分支:
参考文献
Gitup
使用 pkg 安装 Gitup:
还可以使用 ports 安装 Gitup:
从压缩包获取源代码(方便但非最新)
该方法较为简单快捷。
以 FreeBSD 15.0-RELEASE 为例:
为何要解压到
/?因为解压到
/会将源代码解压到/usr/src。如果将上面的路径改成/usr/src,会将源代码解压到/usr/src/usr/src。因为该压缩包是包含路径的。
技巧
如果速度慢可以切换到 https://mirrors.ustc.edu.cn/freebsd/releases/amd64/15.0-RELEASE/src.txz
开始编译
附录:解决冲突
Conflicts remain from previous update, aborting.
需要解决冲突。
技巧
与绝大多数现代 Linux 不同,FreeBSD(OpenBSD)上的
vi是 nvi(原版 ex/vi 的再实现),并不是指向任何 vim 的链接符号。基本上很少有人使用,也一般没有学习的必要,因此有必要更换为其他文本编辑器。
合并冲突。使用 etcupdate 执行备份模式,以便在更新配置文件前备份现有文件:
解决冲突:
故障排除与未竟事宜
Git:fatal: unable to update url base from redirection
fatal: unable to update url base from redirection使用 FreeBSD 源仓库地址时未加 .git 后缀。
Git:fatal: unable to access 'https://git.FreeBSD.org/src.git/': SSL certificate problem: certificate is not yet valid
fatal: unable to access 'https://git.FreeBSD.org/src.git/': SSL certificate problem: certificate is not yet valid可能是系统时间不正确导致的,使用 pool.ntp.org 服务器同步系统时间
参考资料
最后更新于
这有帮助吗?