一、 核心概念:Ports 与 Packages
FreeBSD 提供了两种安装第三方软件的方式:
| 方式 |
描述 |
特点 |
| Ports Collection |
从源代码编译安装。 |
高度可定制(可启用/禁用功能),但编译耗时。 |
| Packages (pkg) |
安装预编译的二进制包。 |
快速、便捷,是管理附加软件的首选方式。 |
关键路径差异:通过 pkg 安装的软件,其二进制文件和大多数配置文件位于 /usr/local/ 目录下(例如 /usr/local/bin, /usr/local/etc),这与 Linux 发行版常见的 /usr/ 和 /etc 不同。
二、 安装与初始配置
1. 安装 pkg 工具
在全新的 FreeBSD 系统上,pkg 工具本身并未预装。首次使用任何 pkg 命令(如 pkg install)时,系统会提示你安装它:
也可以直接运行以下命令来引导安装:
2. 配置文件 (/usr/local/etc/pkg.conf)
pkg 的行为可通过此文件进行全局定制。文件采用 UCL 格式,包含大量注释说明。
- 常用配置项:
ASSUME_ALWAYS_YES: true:默认对所有确认提示回答“是”,适用于脚本。
AUTOCLEAN: true:安装/升级后自动清理过时的缓存包。
- 定义命令别名:在文件底部的
ALIAS 部分,可以为常用命令组合创建快捷方式。
- 查看手册:
man pkg.conf
三、 日常包管理操作
1. 搜索软件包
在安装前,需要确定软件包的正确名称。
1 2 3 4 5 6
| pkg search apache
pkg search -R apache24
|
2. 安装与卸载
1 2 3 4 5 6 7 8 9 10
| pkg install apache24
pkg install -y nginx
pkg delete nginx
pkg remove nginx
|
注意:卸载一个被其他包依赖的包时,依赖包也会被一同卸载。
3. 查询已安装的包
1 2 3 4 5 6 7 8 9 10 11
| pkg info
pkg info nginx
pkg info -l nginx
pkg which /usr/local/bin/curl
|
4. 更新与升级
1 2 3 4 5 6 7 8
| pkg update
pkg upgrade
pkg upgrade nginx
|
四、 高级管理与维护
1. 包缓存管理
pkg 会将下载的包文件缓存到 /var/cache/pkg。
1 2 3 4 5 6 7 8 9 10 11 12 13
| pkg fetch nginx
pkg fetch -d nginx
pkg clean
pkg clean -a
ls /var/cache/pkg
|
2. 锁定与解锁包
防止特定包被意外升级或删除。
1 2 3 4 5 6 7 8 9 10 11 12
| pkg lock openssl
pkg lock -l
pkg unlock openssl
pkg lock -a pkg unlock -a
|
3. 依赖与自动清理
1 2 3 4 5
| pkg autoremove
pkg prime-list
|
4. 安全检查与验证
1 2 3 4 5 6 7 8
| pkg audit -F
pkg check -saq
pkg check -s nginx
|
五、 包仓库(Repository)配置
FreeBSD 的官方包仓库配置在 /etc/pkg/FreeBSD.conf。默认使用 quarterly 分支,更稳定。
1 2 3 4
| FreeBSD: { url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly", enabled: yes }
|
- 切换分支:将
url 中的 quarterly 改为 latest 可获取最新的软件包(可能包含测试版)。
- 添加第三方仓库:在
/usr/local/etc/pkg/repos/ 目录下创建 .conf 文件。需确保 pkg.conf 中 REPO_DIRS 包含该路径。
六、 命令速查与参考
| 任务 |
命令 |
| 安装 |
pkg install <包名> |
| 卸载 |
pkg delete <包名> |
| 搜索 |
pkg search <关键词> |
| 列表 |
pkg info |
| 更新仓库 |
pkg update |
| 升级系统 |
pkg upgrade |
| 清理缓存 |
pkg clean |
| 自动移除孤儿包 |
pkg autoremove |
| 安全检查 |
pkg audit -F |
| 锁定包 |
pkg lock <包名> |
| 获取帮助 |
pkg help <子命令> |
七、 重要文件与目录
| 路径 |
用途 |
/usr/local/etc/pkg.conf |
pkg 主配置文件 |
/etc/pkg/FreeBSD.conf |
官方 FreeBSD 包仓库配置 |
/usr/local/etc/pkg/repos/ |
自定义第三方仓库配置目录 |
/var/cache/pkg/ |
下载的包文件缓存目录 |
/var/db/pkg/local.sqlite |
已安装包的注册数据库(切勿删除) |
/usr/local/ |
通过 pkg 安装的软件根目录 |
总结:对于绝大多数 FreeBSD 系统管理任务,pkg 是管理第三方软件最有效、最推荐的工具。除非你需要特定的编译选项或软件尚未被打包,否则应优先使用 pkg 而非 Ports。