FreeBSD Ports与Packages软件安装卸载详解
FreeBSD Ports 管理实用指南
在日常使用 FreeBSD 时,ports 与 packages 的管理几乎是每位系统管理员和开发者的必修技能。下面这份指南涵盖了从源码抓取、打包、清理到升级的常见操作,按编号可快速定位具体步骤。需要注意的是,部分操作存在依赖关系,实际执行时建议先理解每个命令的作用。
1、如何只下载 tar 源码包?
2、如何仅执行解压 tarball 的操作?
3、如何既解压 tarball 又自动应用官方补丁?
4、如何安装一个新的 port?
5、如何安装新 port 并同时生成 package 包?
6、如何打包一个 port 及其所有依赖的 ports?
7、如何对已安装的 port 进行打包?
8、如何清除 port 编译过程中产生的临时文件?
9、如何同时清除临时文件与对应的 tarball?
10、如何在安装 port 前查询所需的依赖/相关套件?
11、如何卸载已安装的 port?
12、如何一并卸载其依赖的 ports?
13、如何重新安装已安装过的 port?
14、如何通过关键字搜索 ports?
15、如何升级已安装的 ports?
16、如何查询当前系统安装了哪些套件?
17、如何查询当前系统是否安装了包含某个关键字的套件?
18、如何查询某个文件属于哪些套件?
19、如何查询某个套件安装了哪些文件?
20、如何安装旧版本的 port?
21、如何更新 ports 的 mk 框架?
22、如何解决安装 ports 时出现的 sed -i 错误?
23、如何列出所有可升级的 ports?
24、如何查看 Ports 系统为某个 port 提供的编译参数?
25、如何手动添加编译 port 时的参数?
26、如何指定 port 的安装路径?
27、安装 ports 时遇到 FORCE_PKG_REGISTER 错误如何处理
28、安装 ports 时出现 Shared object libintl.so.X not found 错误如何解决
29、如何安装 packages?
30、如何强制安装 packages?
31、如何查询 packages 之间的依赖关系?
32、如何远程安装 packages?
33、如何更新 INDEX 索引表?
34、如何更新 INDEX HTML 页面?
35、如何针对某些 ports 跳过 CVSup 更新?
36、如何使用 CVSup 同步 ports 集合?
37、安装 ports 时出现 “port is outdated” 错误如何处理
39、安装 ports 时出现 OpenSSL vulnerabilities 错误如何解决
40、如何在 FreeBSD 上模拟 Linux 运行环境?
41、如何在 FreeBSD 上安装 Linux 的 rpm 包?
42、安装 ports 时原本应有的选项菜单消失了怎么办
43、如何检查是否存在重复安装的 ports/packages?`make deinstall` 与 `pkg_delete` 有何区别?
44、安装 ports 时出现 “local modification time does not match remote” 错误如何解决
1、如何只下载 tarball?
如果仅需下载 tarball 源码包,而暂不进行编译安装,只需执行 make fetch 即可。以 editors/joe 为例:
| 代码: |
| cd /usr/ports/editors/joe/ make fetch |
tarball 默认会保存到 /usr/ports/distfiles/ 目录下。
若想将该 port 及其所有依赖的 tarball 一并下载,可使用 make fetch-recursive。以 sysutils/portupgrade 为例:
| 代码: |
| cd /usr/ports/systuils/portupgrade/ make fetch-recursive |
下载完成后同样位于 /usr/ports/distfiles/。
如果想一次性下载所有 ports 的 tarball,直接在 ports 根目录下执行:
| 代码: |
| cd /usr/ports/ make fetch |
如果只想下载某个分类下的全部 ports,例如 ftp 目录:
| 代码: |
| cd /usr/ports/ftp/ make fetch |
下载路径均为 /usr/ports/distfiles/。
2、如何仅执行解压 tarball 的操作?
如果你习惯手动修改源码,往往只需将 tarball 解压即可,无需后续编译安装。以 editors/joe 为例:
| 代码: |
| cd /usr/ports/editors/joe/ make extract |
解压后的源码会放入 /usr/ports/editors/joe/work/ 目录。
3、如何既解压 tarball 又自动应用官方补丁?
这个操作与上一步类似,区别在于它会在解压后自动打上官方提供的补丁,方便你在此基础上进行二次修改。同样以 editors/joe 为例:
| 代码: |
| cd /usr/ports/editors/joe/ make patch |
解压后的源码位于 /usr/ports/editors/joe/work/,且已自动完成官方补丁的集成。
4、如何安装一个新的 port?
如果系统尚未安装某个软件,直接使用 make install 是最简洁的方式。以 editors/joe 为例:
| 代码: |
| cd /usr/ports/editors/joe/ make install |
安装完成后,如需清理编译产生的临时目录,可以接着执行 make clean(具体可参考 FAQ 8):
| 代码: |
| cd /usr/ports/editors/joe/ #make clean |
若想一次性清除所有 ports 的临时目录,在 ports 根目录下运行:
| 代码: |
| cd /usr/ports/ #make clean |
5、如何安装新 port 并同时生成 package 包?
将安装好的软件打包成 package 有很多好处:可轻松分发给集群中的其他机器,或者在软件出问题时通过 package 快速恢复。以 editors/joe 为例:
| 代码: |
| cd /usr/ports/editors/joe/ #make package |
默认生成的 package 文件会放在 /usr/ports/editors/joe/ 目录。若希望集中管理,建议先创建统一目录:
| 代码: |
| mkdir -p /usr/ports/packages/All/ |
之后所有 package 都会自动存入该路径,系统还会按类别自动整理。如果安装后希望同时清理临时目录,可以执行 make package clean:
| 代码: |
| cd /usr/ports/editors/joe/ make package clean |
6、如何打包一个 port 及其所有依赖的 ports?
FAQ 5 仅打包了最终的目标 port,但其中间依赖的 ports 并未被打包。在实际部署时,如果目标 port 依赖的其他 ports 没有 package,那么通过 package 安装时就会缺少依赖。解决办法是在 make package 时添加 DEPENDS_TARGET=package 参数。以 sysutils/portupgrade 为例:
| 代码: |
| cd /usr/ports/sysutils/portupgrade/ make DEPENDS_TARGET=package package |
这样会同时将 portupgrade 及其所有依赖的 ports 全部打包成 package。
7、如何对已安装的 port 进行打包?
有时安装软件后才想起没有生成 package,事后补打包也很简单。以 editors/joe 为例:
| 代码: |
| cd /var/db/pkg/ pkg_create -b joe-{版本号} |
打包好的文件会存放在 /var/db/pkg/ 目录下。
8、如何清除 port 编译过程中产生的临时文件?
编译 ports 时会在 work 目录下生成大量临时文件,安装后通常可以清理以释放磁盘空间。以 editors/joe 为例:
| 代码: |
| cd /usr/ports/editors/joe/ make clean |
如果想清理所有 ports 的临时目录:
| 代码: |
| cd /usr/ports/ make clean |
也可以只清理某个分类,比如 ftp 目录下的所有 ports:
| 代码: |
| cd /usr/ports/ftp/ make clean |
9、如何同时清除临时文件和对应的 tarball?
FAQ 8 只清理了 work 目录,但之前下载的 tarball 仍保留在 /usr/ports/distfiles/ 中。如果想一并删除 tarball,使用 make distclean 即可。该命令本身已包含 make clean 的功能。以 editors/joe 为例:
| 代码: |
| cd /usr/ports/editors/joe/ make distclean |
同理,若要清理所有 ports 的 work 和 tarball:
| 代码: |
| cd /usr/ports/ make distclean |
或只清理 ftp 分类:
| 代码: |
| cd /usr/ports/ftp/ make distclean |
10、如何在安装 port 前查询所需的依赖或相关套件?
正式安装之前,先了解该 port 的依赖关系是一个好习惯。以 mail/p5-Mail-SpamAssassin 为例,可以使用以下命令查看:
| 代码: |
| cd /usr/ports/mail/p5-Mail-SpamAssassin/ make all-depends-list # 显示所有相关的套件 make pretty-print-build-depends-list # 显示编译期间需要的套件 make pretty-print-run-depends-list # 显示运行时需要的套件 |
11、如何卸载已安装的 port?
卸载已安装的 port 有两种常用方法。第一种是使用 make deinstall:
| 代码: |
| cd /usr/ports/editors/joe/ make deinstall |
第二种是使用 pkg_delete:
| 代码: |
| cd /var/db/pkg/ pkg_delete joe-{版本号} |
有时因依赖关系会导致直接删除报错。如果确实需要强制删除,可以添加 -f 参数:
| 代码: |
| cd /var/db/pkg/ pkg_delete -f joe-{版本号} |
但强制删除可能导致其他依赖该套件的程序出现异常,使用时需谨慎。关于 make deinstall 与 pkg_delete 的区别,请参考 FAQ 43。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
微软详解Win11时间点还原 默认每24小时创建恢复点
微软今日推送了最新的 6 月可选更新,并发布博客详细解读了 Win11 全新的“时间点还原”(Point-in-time restore)功能——这一功能本质上是对系统恢复体验的一次全面升级,旨在让用户更轻松地应对电脑故障。 微软表示,面向 Windows 11 客户端用户的“时间点还原”功能现已正
Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验
微软今天推送了Windows 11 26H1设备的6月可选更新KB5095091,安装完成后系统版本号会升级到Build 28000 2340。值得一提的是,这次更新并非面向所有设备,而是专门为搭载高通骁龙X2系列芯片的机型准备的——包括骁龙X2 Plus、X2 Elite和X2 Elite Ext
Win11六月可选更新KB5095093修复回收站弹窗异常
微软已悄然推送Windows 11六月可选更新,编号KB5095093。本次更新覆盖两个版本:24H2用户安装后版本号升级至Build 26100 8737,而25H2用户则更新至Build 26200 8737。 本次更新并非仅是小修小补,而是带来了多项实质性新功能。下面我们就来详细解析这些更新内
苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞
科技媒体 Cult of Mac 昨日(6月23日)发布博文指出,苹果在 macOS 27 Beta 2 更新中悄然封堵了一个此前可用的后门——用户曾能通过一条终端命令绕过候补名单,直接启用新版 Siri AI,如今这一方法已失效。 简要回顾一下:在 macOS 27 Beta 1 阶段,只需在 M
微软加速Win11 25H2推送 覆盖所有符合条件家用PC
近日(6月23日),科技媒体 Windows Latest 发布了一则值得关注的动态:微软已进一步扩大 Windows 11 25H2 的推送范围,所有满足硬件要求、且不受 IT 部门管理的家庭版和专业版设备,现在均可顺利接收本次更新。 此次升级有一个显著特点——采用“启用包”(eKB)方式进行推送
- 日榜
- 周榜
- 月榜
相关攻略
2026-06-30 07:39
2026-06-30 07:39
2026-06-30 07:39
2026-06-30 07:38
2026-06-30 07:38
2026-06-30 07:38
2026-06-30 07:38
2026-06-30 07:38
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

