FreeBSD 配置 Packages 国内镜像软件源
在 FreeBSD 系统中基本的包管理工具是 pkg,它使用 Packages 配置软件源,从配置的软件源获取二进制软件包,然后安装到系统中。
在本文中将介绍 Packages 的相关内容,如何更换软件源,以及国内可用的镜像源,以及如何配置国内镜像源。
Packages 分支
FreeBSD 系统中为 Packages 提供两种软件包分支,为了满足不同的用户需求:
- Quarterly 分支:每个季度更新一次的软件包,主要是提供安全、稳定的软件包,功能可能不是最新的。分支的命令形式是
年份 + 季度,格式为YYYYQx,如2025Q1 - Latest 分支:包含最新软件包的软件分支,只要有最新的软件更新,都会添加到该分支中。
你需要使用哪个 Packages 分支,可以根据自己的情况使用。
使用 Quarterly 分支:
- 在生产环境中
- 追求安全、稳定的软件版本
使用 Latest 分支:
- 在开发环境中
- 追求最新功能的软件版本
FreeBSD 系统使用软件源来配置使用的软件包分支,系统默认使用的是 Quarterly 分支,默认的系统 Packages 软件源配置文件为 /etc/pkg/FreeBSD.conf。
FreeBSD 系统默认使用的是 Quarterly 分支,配置文件的部分内容:
FreeBSD-ports: {
url: "pkg+https://pkg.FreeBSD.org/${ABI}/quarterly",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
mirror_type 字段解释说明:
none:直接使用 url 指定的地址获取软件包,默认值http:从 url 指定的地址获取一个文本文件,其内容为一行一个镜像地址,逐个访问提供的地址,直到能够获取到软件包srv:是指 DNS SRV 记录,访问该地址会返回一个或多个镜像地址,从镜像列表中根据记录的配置自动选择镜像获取软件包。
从 FreeBSD 15开始,软件源的名称由原来的 FreeBSD 修改为了 FreeBSD-ports,软件包是从 Ports 源代码构建而成的二进制包。
软件源类型
从 FreeBSD 15 开始 pkg 的软件源分为三类:
FreeBSD-ports源:原来的镜像源FreeBSD改为了FreeBSD-ports,意为该部分 pkg 的镜像源中的二进制软件包,是从 Ports 集中的源代码构建而来。FreeBSD-ports-kmods源:FreeBSD 的内核模块的源FreeBSD-base源:FreeBSD 的基础系统源,从 FreeBSD 15 开始,采用全新的 Pkgbase 模式,使用base源配置基础的系统。
修改软件源
如果想要修改使用的分支,或者要修改镜像源,最好不要在系统配置文件 /etc/pkg/FreeBSD.conf 中修改,而是在用户配置目录 /usr/local/etc/pkg/repos 中添加自定义配置,在该目录中添加的配置会覆盖掉系统配置中同软件源名称的配置。
覆盖原软件源
使用相同的软件源名称,修改软件源的 url 属性,即可修改软件源使用的分支。
1)修改为使用 Latest 分支:
printf 'FreeBSD-ports: {\n url: "pkg+https://pkg.FreeBSD.org/${ABI}/latest"\n}\n' > /usr/local/etc/pkg/repos/FreeBSD.conf
2)修改为使用 Quarterly 分支:
printf 'FreeBSD-ports: {\n url: "pkg+https://pkg.FreeBSD.org/${ABI}/quarterly"\n}\n' > /usr/local/etc/pkg/repos/FreeBSD.conf
3)修改软件源后,更新软件源:
doas pkg update
自定义软件源
也可以重新创建一个软件源,需要配置所有的信息,但是需要禁用原来的系统软件源 FreeBSD-ports。
1)禁用原来的系统软件源 FreeBSD-ports,执行如下命令:
printf 'FreeBSD-ports: {\n enabled: no\n}\n' > /usr/local/etc/pkg/repos/FreeBSD-custom.conf
或者使用如下形式添加:
# 编辑文件
doas vi /usr/local/etc/pkg/repos/FreeBSD-custom.conf
# 添加内容
FreeBSD-ports: {
enabled: no
}
2)添加新的自定义软件源 FreeBSD-ports-custom:
printf 'FreeBSD-ports-custom: {\n url: "pkg+https://pkg.FreeBSD.org/${ABI}/quarterly",\n mirror_type: "srv",\n signature_type: "fingerprints",\n fingerprints: "/usr/share/keys/pkg",\n enabled: yes\n}\n' >> /usr/local/etc/pkg/repos/FreeBSD-custom.conf
或者使用如下形式添加:
# 编辑文件
doas vi /usr/local/etc/pkg/repos/FreeBSD-custom.conf
# 添加内容
FreeBSD-ports-custom: {
url: "pkg+https://pkg.FreeBSD.org/${ABI}/quarterly",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
3)修改软件源后,更新软件源:
doas pkg update
配置内核模块仓库
FreeBSD 中内核模块配置在段都的软件源中,主要包含图形驱动、专用硬件驱动等内核模块。也可以自定义内核模块使用的软件源:
1)打开或创建文件:
doas vi /usr/local/etc/pkg/repos/FreeBSD-ports-kmods-custom.conf
2)禁用原系统 kmods 软件源:
# 添加内容
FreeBSD-ports-kmods: {
enabled: no
}
3)添加类似如下的自定义软件源配置:
FreeBSD-ports-kmods-custom: {
url: "pkg+https://pkg.FreeBSD.org/${ABI}/KMODSFLAVOR",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
要把如上软件源中的 KMODSFLAVOR 替换为具体的内容。
KMODSFLAVOR 内容形式为:kmods_PORTBRANCH_MINORRELEASE,其中 PORTBRANCH 为分支名,MINORRELEASE 为次版本好,如 FreeBSD 15 的 KMODSFLAVOR 的取值为:
| FreeBSD 版本 | Latest 分支 | Quarterly 分支 |
|---|---|---|
| FreeBSD 15.0-RELEASE | kmods_latest_0 | kmods_quarterly_0 |
| FreeBSD 15.0-STABLE | kmods_latest | kmods_quarterly |
| FreeBSD 15.1-CURRENT | kmods_latest | - |
配置国内镜像源
使用 FreeBSD 官方镜像源 pkg.FreeBSD.org 安装软件包的速度相对较慢,想要加快下载速度,可以修改为国内的镜像源。
国内的镜像没有提供 srv 类型的镜像,需要使用 none 类型,因此可以不设置 mirror_type 字段,更改为国内镜像源可只添加 url 字段。
注意:国内的镜像源可能会存在缺少个别的软件包的情况,如果遇到可以临时切回到原系统软件源。
可用的国内镜像源
当前可用的 FreeBSD 国内镜像源比较少,很多其他的国内镜像源已经不可用,网易的 FreeBSD 镜像源的软件包不完整,当前可用的 FreeBSD 镜像源有:
- 南京大学 FreeBSD 开源镜像源(NJU)
- 中国科技大学 FreeBSD 开源镜像源(USTC)
禁用原系统软件源
配置使用国内镜像源,需要禁用原来的系统软件源 FreeBSD-ports,执行如下命令:
printf 'FreeBSD-ports: {\n enabled: no\n}\n' > /usr/local/etc/pkg/repos/FreeBSD-custom.conf
或者使用如下形式添加:
# 编辑文件
doas vi /usr/local/etc/pkg/repos/FreeBSD-custom.conf
# 添加内容
FreeBSD-ports: {
enabled: no
}
使用中国科学技术大学镜像源
更改 pkg 的 ports 源
使用 Quarterly 分支
1)更改为中国科学技术大学镜像源的 Quarterly 分支:
printf 'FreeBSD-ports-ustc: {\n url: "https://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/quarterly",\n enabled: yes\n}\n' > /usr/local/etc/pkg/repos/FreeBSD-ustc.conf
或者使用如下形式添加:
# 编辑文件
doas vi /usr/local/etc/pkg/repos/FreeBSD-ustc.conf
# 添加内容
FreeBSD-ports-ustc: {
url: "https://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/quarterly",
enabled: yes
}
2)修改软件源后,更新软件源:
doas pkg update
使用 Latest 分支
1)更改为中国科学技术大学镜像源的 Latest 分支:
printf 'FreeBSD-ports-ustc: {\n url: "https://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/latest",\n enabled: yes\n}\n' > /usr/local/etc/pkg/repos/FreeBSD-ustc.conf
或者使用如下形式添加:
# 编辑文件
doas vi /usr/local/etc/pkg/repos/FreeBSD-ustc.conf
# 添加内容
FreeBSD-ports-ustc: {
url: "https://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/latest",
enabled: yes
}
2)修改软件源后,更新软件源:
doas pkg update
更改 pkg 的内核模块源
使用 Quarterly 分支
1)更改为中国科学技术大学镜像源的 Quarterly 分支:
printf 'FreeBSD-ports-kmods-ustc: {\n url: "https://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/kmods_quarterly_${VERSION_MINOR}",\n enabled: yes\n}\n' >> /usr/local/etc/pkg/repos/FreeBSD-ustc.conf
或者使用如下形式添加:
# 编辑文件
doas vi /usr/local/etc/pkg/repos/FreeBSD-ustc.conf
# 添加内容
FreeBSD-ports-kmods-ustc: {
url: "https://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/kmods_quarterly_${VERSION_MINOR}",
enabled: yes
}
2)修改软件源后,更新软件源:
doas pkg update
使用 Latest 分支
1)更改为中国科学技术大学镜像源的 Latest 分支:
printf 'FreeBSD-ports-kmods-ustc: {\n url: "https://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/kmods_latest_${VERSION_MINOR}",\n enabled: yes\n}\n' > /usr/local/etc/pkg/repos/FreeBSD-ustc.conf
或者使用如下形式添加:
# 编辑文件
doas vi /usr/local/etc/pkg/repos/FreeBSD-ustc.conf
# 添加内容
FreeBSD-ports-ustc: {
url: "https://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/kmods_latest_${VERSION_MINOR}",
enabled: yes
}
2)修改软件源后,更新软件源:
doas pkg update
更改 pkg 的 base 源
1)更改为中国科学技术大学镜像源的 Quarterly 分支:
printf 'FreeBSD-base-ustc: {\n url: "https://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/base_release_${VERSION_MINOR}",\n enabled: yes\n}\n' >> /usr/local/etc/pkg/repos/FreeBSD-ustc.conf
或者使用如下形式添加:
# 编辑文件
doas vi /usr/local/etc/pkg/repos/FreeBSD-ustc.conf
# 添加内容
FreeBSD-base-ustc: {
url: "https://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/base_release_${VERSION_MINOR}",
enabled: yes
}
2)修改软件源后,更新软件源:
doas pkg update
使用南京大学镜像源
更改 pkg 的 ports 源
使用 Quarterly 分支
1)更改为南京大学镜像源的 Quarterly 分支:
printf 'FreeBSD-ports-nju: {\n url: "https://mirror.nju.edu.cn/freebsd-pkg/${ABI}/quarterly",\n enabled: yes\n}\n' > /usr/local/etc/pkg/repos/FreeBSD-nju.conf
或者使用如下形式添加:
# 编辑文件
doas vi /usr/local/etc/pkg/repos/FreeBSD-nju.conf
# 添加内容
FreeBSD-ports-nju: {
url: "https://mirror.nju.edu.cn/freebsd-pkg/${ABI}/quarterly",
enabled: yes
}
2)修改软件源后,更新软件源:
doas pkg update
使用 Latest 分支
1)更改为南京大学镜像源的 Latest 分支:
printf 'FreeBSD-ports-nju: {\n url: "https://mirror.nju.edu.cn/freebsd-pkg/${ABI}/latest",\n enabled: yes\n}\n' > /usr/local/etc/pkg/repos/FreeBSD-nju.conf
或者使用如下形式添加:
# 编辑文件
doas vi /usr/local/etc/pkg/repos/FreeBSD-nju.conf
# 添加内容
FreeBSD-ports-nju: {
url: "https://mirror.nju.edu.cn/freebsd-pkg/${ABI}/latest",
enabled: yes
}
2)修改软件源后,更新软件源:
doas pkg update
更改 pkg 的内核模块源
使用 Quarterly 分支
1)更改为南京大学镜像源的 Quarterly 分支:
printf 'FreeBSD-ports-kmods-nju: {\n url: "https://mirror.nju.edu.cn/freebsd-pkg/${ABI}/kmods_quarterly_${VERSION_MINOR}",\n enabled: yes\n}\n' >> /usr/local/etc/pkg/repos/FreeBSD-nju.conf
或者使用如下形式添加:
# 编辑文件
doas vi /usr/local/etc/pkg/repos/FreeBSD-nju.conf
# 添加内容
FreeBSD-ports-kmods-nju: {
url: "https://mirror.nju.edu.cn/freebsd-pkg/${ABI}/kmods_quarterly_${VERSION_MINOR}",
enabled: yes
}
2)修改软件源后,更新软件源:
doas pkg update
使用 Latest 分支
1)更改为南京大学镜像源的 Latest 分支:
printf 'FreeBSD-ports-kmods-nju: {\n url: "https://mirror.nju.edu.cn/freebsd-pkg/${ABI}/kmods_latest_${VERSION_MINOR}",\n enabled: yes\n}\n' > /usr/local/etc/pkg/repos/FreeBSD-nju.conf
或者使用如下形式添加:
# 编辑文件
doas vi /usr/local/etc/pkg/repos/FreeBSD-nju.conf
# 添加内容
FreeBSD-ports-nju: {
url: "https://mirror.nju.edu.cn/freebsd-pkg/${ABI}/kmods_latest_${VERSION_MINOR}",
enabled: yes
}
2)修改软件源后,更新软件源:
doas pkg update
更改 pkg 的 base 源
1)更改为南京大学镜像源的 Quarterly 分支:
printf 'FreeBSD-base-nju: {\n url: "https://mirror.nju.edu.cn/freebsd-pkg/${ABI}/base_release_${VERSION_MINOR}",\n enabled: yes\n}\n' >> /usr/local/etc/pkg/repos/FreeBSD-nju.conf
或者使用如下形式添加:
# 编辑文件
doas vi /usr/local/etc/pkg/repos/FreeBSD-nju.conf
# 添加内容
FreeBSD-base-nju: {
url: "https://mirror.nju.edu.cn/freebsd-pkg/${ABI}/base_release_${VERSION_MINOR}",
enabled: yes
}
2)修改软件源后,更新软件源:
doas pkg update