首页 > 教程 > FreeBSD 教程 > 安装软件 > FreeBSD 使用 Ports 集安装软件包

FreeBSD 使用 Ports 集安装软件包

Ports 集是由很多以软件名命名的目录组成,目录中为该应用程序的配置文件,也称为一个 Port,这些配置文件包括 Makefile、补丁和描述文件。Ports 集默认存储在 /usr/ports 目录下。

pkg 可以的分支有:

  • Quarterly 分支:按季度发布的软件分支,会自动使用当前最新的季度分支
  • Latest 分支:包含最新软件版本的分支

Ports 集可以使用的分支有:

  • 季度分支:需要设置特定的季度分支,如 2025Q4,不能自动使用当前最新的季度分支
  • HEAD 分支:包含最新软件版本的分支,对应 pkg (Packages)的 Latest 分支

注意:最好只使用 Ports 或 pkg 中的一种安装软件,因为 Ports 和 pkg 可能使用不同的分支,不同的分支依赖的软件的版本不同,同时使用 Ports 和 pkg 安装软件,软件包的依赖可能会存在冲突。

如果想要同时使用 Ports 和 pkg 安装软件,需要使它们使用同一分支。

Ports 目录结构

Ports 集按照软件的类别划分目录,类别目录下的每个子目录对应一个应用程序,在应用程序目录中包含应用程序的配置文件::

  • Makefile:编译文件,用来指定编译规则和安装路径
  • distinfo:内容为源代码文件的名称和校验和
  • files/:包含补丁文件和构建软件所需的其他文件
  • pkg-descr:应用程序的详细描述
  • pkg-plist:安装的所有文件的列表,用于卸载时删除文件
  • pkg-message:安装后的提示信息,不是全部 Ports 都包含该文件

Ports 当中不包含源代码文件,就是 distfile,编译时会自动下载源码到 /usr/ports/distfiles 目录。

安装 Ports 集

在安装系统时,选择软件包最好不要安装 Ports 集。

推荐使用 Git 安装 Ports 集,因为使用 Git 安装 Ports 集可以灵活的切换使用的分支。

安装 Git

使用 pkg 命令安装 Git:

pkg install git

克隆 Ports 树:

克隆 Ports 树就是把远程的 Ports 目录结构和文件内容下载到本地,在下载 Ports 集时使用 git 可以指定分支。

1)不指定任何分支时,默认使用 HEAD 分支:

git clone --depth 1 https://git.FreeBSD.org/ports.git /usr/ports

2)指定 Quarterly 分支,需要指定特定的季度,特定季度分支的名称为 年份 + 季度,如 2025Q4

git clone --depth 1 https://git.FreeBSD.org/ports.git -b 2025Q4 /usr/ports

3)选项说明:

  • -b:指定具体分支
  • --depth 1:表示不克隆提交记录;如果需要克隆提交记录,删除该参数即可。

注:Ports 最好不要使用国内镜像源,因为国内镜像源没有完整的。

更新 Ports 树

使用如下的命令更新 Ports 树:

git -C /usr/ports pull

切换分支

1)切换分支前需要先下载需要分支的 Ports 集,如下载特定 Quarterly 分支 2025Q4

git -C /usr/ports fetch --depth 1 origin 2025Q4:2025Q4

2)切换分支:

git -C /usr/ports switch 2025Q4

安装 Ports 应用

在使用 Ports 集安装软件之前,最好先先使用 git -C /usr/ports pull 更 Ports 树,并使用 pkg audit -F 检查应用是否存在安全漏洞。

在使用 Ports 集安装软件需要具有 doassudo 或者 root 执行权限,且需要联网。

基本安装步骤

1)进入应用的 Ports 目录

以安装 lsof 为例:

cd /usr/ports/sysutils/lsof

2)编译并安装

执行编译并安装命令,会自动下载源代码、解压、打补丁、配置、编译并安装:

make install

# 或者使用 doas 执行
doas make install

3)清理临时文件

在编译时会生成很多的编译文件和其他文件,使用如下的命令删除这些临时文件:

make clean

# 或者使用 doas 执行
doas make clean

注:也可以一次性执行编译安装和清理临时文件命令:

make install clean

# 或者使用 doas 执行
doas make install clean

安装说明

使用 Port 安装的应用,默认安装在 /usr/local 目录中。

自定义 Ports 安装

一些 Ports 支持自定义构建选项,如可以启用 / 禁用某些功能模块、添加某些安全选项,如 www/firefoxsecurity/gpgme

构建配置选项

可以使用如下命令构建配置选项:

  • make config:配置当前 Port 的构建选项,会弹出一个菜单供选择;使用 space 选中或取消选中,使用 Tab 或方向键移动选项,使用 Enter 确定选择。
  • make config-recursive:一次性配置当前 Port 及其所有依赖 Port 的选项,可以避免多次弹窗;使用 space 选中或取消选中,使用 Tab 或方向键移动选项,使用 Enter 确定选择。
  • make showconfig:查看当前 Port 的配置选项
  • make rmconfig:清除当前 Port 的配置选项,重新配置

自定义下载与安装路径

指定下载地址

若需从国内镜像或者其他镜像下载源代码,可以使用 MASTER_SITE_OVERRIDE 选项指定下载地址。

1)转到应用程序的 Port 目录:

cd /usr/ports/目录

2)使用 MASTER_SITE_OVERRIDE 选项指定下载地址

make MASTER_SITE_OVERRIDE=ftp://ftp.example.com/pub/FreeBSD/ports/distfiles/ fetch

指定工作目录

可以使用 WRKDIRPREFIX 选项指定编译时使用的工作目录,用于存放临时文件:

make WRKDIRPREFIX=~/ports install

指定安装目录

可以使用 PREFIX 选项指定应用安装目录,默认的安装目录为 /usr/local

make PREFIX=~/local install

离线下载源代码

可以先下载软件包,然后再进行安装;可以使用如下命令下载源代码:

1)下载当前 Port 的源代码:

make fetch

2)下载当前 Port 及其所有依赖包的源代码:

make fetch-recursive

卸载 Ports 应用

使用 Ports 集安装的应用,具有两种卸载的方式。

使用 pkg 命令卸载

推荐:使用 Ports 集安装的应用,也可以使用 pkg 命令卸载,与卸载 pkg 安装的应用方式相同:

pkg delete 应用名

使用 make 命令卸载

与使用 make 命令安装 Ports 应用相对应,同样可以 make 命令卸载应用。

1)转到应用目录

cd /usr/ports/应用目

2)运行 make 命令,卸载应用程序:

make deinstall

注:卸载时若提示有其他应用的依赖该 Port,卸载完成后,建议重新安装依赖该应用的其他应用,避免依赖出现问题,而使应用无法正常运行。

升级 Ports 应用

在升级 Ports 应用之前,首先要更新 Ports 应用,确保 Ports 中的应用版本是最新的。

查看可升级的 Ports

使用如下命令可以列出所有的可升级的 Ports,也就是版本过期的 Ports:

pkg version -l "<"

升级前准备

在升级之前可以查看 /usr/ports/UPDATING 文件,查看升级注意事项:

less /usr/ports/UPDATING

使用 Portmaster 升级

推荐使用 Portmaster 升级应用,ports-mgmt/portmaster 是轻量的 Ports 升级工具。

安装 Portmaster

1)转到 Portmaster 的 Port 目录:

cd /usr/ports/ports-mgmt/portmaster

2)安装 Portmaster:

make install clean

查看 Ports 分类及更新

使用如下命令查看 Ports 分类及更新:

portmaster -L

升级 Ports

1)使用如下的命令升级所有过时 Ports:

portmaster -a

常用选项解释说明:

  • -b:保留旧版本备份软件包
  • -i:以交互的形式升级软件,升级前需要先确认
  • -af:强制升级并重建所有 Ports

2)安装新 Port 并同时升级其依赖的所有软件包:

安装时,只需指定 Port 的目录:

portmaster shells/bash

使用 Synth 升级

Synth 是较新的 Ports 管理工具,支持并行编译,适合大规模升级应用。

安装 Synth

1)转到 Synth 的 Port 目录:

cd /usr/ports/ports-mgmt/synth

2)安装 Synth:

make install clean

初始化 Synth

在初次使用 Synth 之前,需要先初始化其配置:

synth configure

升级 Ports

使用如下的命令升级所有 Ports:

synth upgrade-system

清理 Ports 空间

Ports 编译会占用大量磁盘空间,可通过以下命令清理。不推荐使用 Portupgrade,因为在将来会被移除。

清理编译临时目录

转到 Port 目录,清理当前 Port 的临时文件:

make clean

清理源代码文件

使用 portmaster 交互式的清除源代码文件:

portmaster --clean-distfiles

移除无用 Ports

使用 Ports 安装 ports-mgmt/pkg_cutleaves,然后运行 pkg_cutleaves 命令,自动删除无用的 Port:

pkg_cutleaves