首页 > 教程 > FreeBSD 教程 > 安装软件 > FreeBSD 配置 Packages 国内镜像软件源

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