游乐游手机版
首页/系统平台/文章详情

FreeBSD软件安装方法从入门到精通完整指南

时间:2026-06-18 07:45
安装了 FreeBSD 后,您一定还会需要安装其它非 FreeBSD 内附的软件。在 FreeBSD 上安装软件有许多种方法,我们将一一为各位介绍。 本章涵盖了软件安装的几个核心课题: 各种安装方式的优缺点 如何使用 package 如何使用 port 如何使用传统安装方法自行编译软件 10 1 概

安装了 FreeBSD 后,您一定还会需要安装其它非 FreeBSD 内附的软件。在 FreeBSD 上安装软件有许多种方法,我们将一一为各位介绍。

本章涵盖了软件安装的几个核心课题:

  • 各种安装方式的优缺点
  • 如何使用 package
  • 如何使用 port
  • 如何使用传统安装方法自行编译软件

10.1 概论

传统上,在一个 UNIX 系统上安装第三方软件时,无非这么几步:下载(可能是二进制文件或源码),解压(tar 或 gzip),翻阅说明文档(readme 或 doc/),如果是源码还要编辑 Makefile 或执行 configure,然后编译、测试、安装。这套流程 FreeBSD 当然也支持,但免费BSD提供了更简单的选择——package 和 ports 两种方式。

所谓 package,就是别人已经替你编译好的二进制文件,连安装路径都帮你定好了。你只需下载一个压缩包,执行 pkg_add 就能快速搞定。这无疑是最简单的安装方式,但缺点也很明显:缺少灵活性,无法根据个人需求修改编译参数。

而 ports 则是基于源码的安装方式。进入 /usr/ports/ 下对应软件的目录,敲一句 make install 即可。FreeBSD 已经帮你准备好了安装所需的步骤和依赖。无论是 package 还是 ports,当安装的软件需要其他软件支持时,它们都会自动帮你装上。所有已安装的软件都会记录在 /var/db/pkg 中,日后想卸载,一条 pkg_delete 加软件名就搞定。

既然 ports 这么好用,为什么 FreeBSD 还同时保留 package?我们来对比一下两者的优势——

package 的优点:

  • 已编译好的压缩包通常比源码包小很多。
  • 不需要再编译,如果你的机器性能一般,装 KDE、GNOME 这种大型软件时能省下大量时间。
  • 使用 package 不需要你了解 FreeBSD 上的编译环境和过程。

ports 的优点:

  • package 为了保证兼容性,编译参数往往比较保守。而使用 ports 你可以针对自己的 CPU 进行优化,比如 Pentium III 或 Athlon。
  • package 的功能在编译时就已经固定,无法扩展。比如 Apache 有很多模块,用 ports 安装时你可以按需勾选。
  • 通过更新 Port Tree,你可以用上最新的软件版本,而 package 通常只随系统一起发布。
  • 有些软件不允许以二进制方式分发,只能下载源码。
  • 有源码在手上,你可以修改、学习,甚至应用到自己的项目中。
  • 很多人就是喜欢拥有源码,读它、研究它。

接下来,我们分别深入讲讲 package 和 ports 的具体用法。

10.2 使用 package

10.2.1 安装 Package

安装 package 有两种途径:一种是使用 sysinstall(也就是安装 FreeBSD 时的那个图形界面),另一种是手动安装。通过 sysinstall 安装时,你需要选择安装来源,最常用的是网络或光盘。不过光盘容量有限,里面包含的 package 数量不多,所以个人更推荐网络安装。手动安装则需要自己下载文件,再用命令安装。

方式一:使用 sysinstall

假设要安装邮件客户端 pine,首先执行 sysinstall 进入安装界面:

# sysinstall

图 10-1

接着选择 Configure 选项,进入图 10-2 的画面:

图 10-2

选择 Packages 选项来安装 package:

图 10-3

在图 10-3 中,必须选择安装来源。这里选择 FTP,从 FTP 上能找到更多软件。选择 FTP 后,出现图 10-4 的画面,让你挑选要使用的 FTP 站点:

图 10-4

选择 「URL」 来自定义 FTP 站点。接着弹出一个输入地址的窗口,如图 10-5 所示。假设使用交大资工的站点,输入 freebsd.csie.nctu.edu.tw/pub/releases/i386/

图 10-5

输入站点后,会询问是否使用当前网络设置。如果已经联网,选 YES,否则选 NO 来配置网络。接下来出现一个软件分类菜单,各个软件分门别类放置,其中 All 是所有软件的集合,如图 10-6。

图 10-6

以安装邮件软件 pine 为例,pine 位于 mail 分类下,所以选择 mail。如果想装中文版 pine,应该选 Chinese 而不是 mail。选择 mail 后,列出该分类下的所有软件,选中 pine-4.58,如图 10-7:

图 10-7

选好后点 OK 返回前一个分类画面。按此方式选好所有想安装的软件后,点击 「Install」 即可。安装前会出现已选软件列表,如图 10-8,确认无误后点 OK 继续。

图 10-8

方式二:使用手动安装

手动安装时,先得把要用的 package 文件取回来。Package 文件的扩展名是 .tgz,用 pkg_add 命令安装。下面是一个简单范例,安装 lsof-4.66.1.tgz

# ftp -a freebsd.csie.nctu.edu.tw
Connected to freebsd.csie.nctu.edu.tw.
220---------- Welcome to Pure-FTPd ----------
...
ftp> cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp> get lsof-4.71.tgz
local: lsof-4.71.tgz remote: lsof-4.71.tgz
...
ftp> bye
221-Goodbye.
# pkg_add lsof-4.71.tgz

要安装 package,首先得拿到文件。可以从各大学 FTP 站获取。Package 的扩展名是 .tgz,存放在各 FTP 站点的 ports/packages 目录下。以交大资工为例,路径是 ftp://freebsd.csie.nctu.edu.tw/pub/ports/packages;中央资工是 ftp://freebsd.csie.ncu.edu.tw/FreeBSD/ports/packages。进入 ports 目录后,可以看到很多子目录,根据系统版本选择一个。其中 packages 目录包含了最新的 packages。如果想用 packages-5.4-release,就进入对应目录。进去后又有一堆分类目录,结构和 /usr/ports/ 下类似,All 目录包含所有软件。

如果只知道软件名称,不知道版本和完整文件名,例如想下载 popa3d,可以进入 All 目录后这样查询:

ftp> ls popa3d*
227 Entering Passive Mode ...
-r--r--r--  1 FTP CSIE 19007 Nov 11 12:43 popa3d-0.6.4.1.tgz
ftp> get popa3d-0.6.4.1.tgz

找到版本后,用 get 取回,然后 exit 离开。最后执行 pkg_add popa3d-0.6.4.1.tgz 即可安装。

10.2.2 管理 Package

如果后悔了想卸载软件,只需执行 pkg_delete popa3d-0.6.4.1 即可。所有已安装的软件都记录在 /var/db/pkg 目录中。

使用 pkg_info 可以查看软件信息。例如,想知道 popa3d-0.6.4.1.tgz 的信息,运行:

# pkg_info popa3d-0.6.4.1.tgz

单独执行 pkg_info 则会列出所有已安装的软件。

10.3 使用 ports

要用 ports 安装软件,首先得确认 /usr/ports 目录是否存在。如果没有,可以通过 /stand/sysinstall 来安装它:

  1. 以 root 执行 /stand/sysinstall
  2. 选择 Configure 后按 Enter
  3. 选择 Distributions 后按 Enter
  4. 选择 ports 后按空格键
  5. 选择 Exit 后按 Enter
  6. 选择从 CDROM 或 FTP 安装等
  7. 跟着菜单操作,最后退出

或者也可以到 https://freebsd.org/ports/ 手动下载 port.tar.gz,放在 /usr/ 下,然后解压:

# cd /usr
# tar zxvf port.tar.gz

现在就可以进入 /usr/ports 目录安装软件了。每个软件都有一个自己的目录,里面包含以下关键文件:

  • Makefile —— 编译设定,可修改安装参数
  • README.html —— 浏览所有 ports 说明
  • distinfo —— 安装所需文件及其 MD5 校验信息
  • pkg-comment —— 简短描述
  • pkg-descr —— 详细描述,通常包含软件主页地址
  • pkg-plist —— 安装后文件清单及存放位置

如果不知道某个软件在哪个目录,可以用 whereis 查找。例如 whereis qpopper。如果只知道关键词,可以这样:

# cd /usr/ports
# make search key='关键词'

进入目标目录后,最简单的安装方式就是直接执行 make install,系统会自动从网络下载所需文件并安装。安装 ports 时,make 查找文件的顺序是:先 /usr/ports/distfiles,再 /cdrom/ports/distfiles,最后从网络下载。如果不打算使用网络,可以提前把文件下载到 /usr/ports/distfiles/ 下。如果文件在光盘里,安装前需要将光驱挂载到 /cdrom。不过有些软件不会自动去光盘找文件,所以建议还是把光盘中 /ports/distfiles 的内容复制到 /usr/ports/distfiles 目录,或者直接联网。

默认下载服务器在国外,为了加速,可以修改 /etc/make.conf 指定国内 FTP 站,例如添加:

MASTER_SITE_BACKUP?= \
    ftp://freebsd.csie.ncu.edu.tw/distfiles/${DIST_SUBDIR}/ \
    ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=   ${MASTER_SITE_BACKUP}

安装完 ports 后,建议执行 make clean 清除编译过程中产生的临时文件——否则大量临时文件会占用不少磁盘空间。如果已经装了一堆软件才想起没清理,也没关系,编译时的文件都存放在对应软件目录下的 work 子目录中。可以用这条命令找出所有未清理的目录并删除:

# find /usr/ports -depth -name work -exec rm -rf {} \;

注意,如果用网络安装,下载的源码会保存在 /usr/ports/distfiles 里,执行 make clean 后不会清除它们。

如果想卸载已安装的软件,进入该软件的 ports 目录,执行 make deinstall 即可。注意:千万不要在 /usr/ports 的根目录下执行 make deinstall,那样会卸载所有软件!

还有一些不太常用的 make 参数:

  • make fetch —— 仅下载所需源码
  • make fetch-list —— 显示安装所需文件列表
  • make checksum —— 下载并用 MD5 校验
  • make extract —— 下载并解压源码
  • make configure —— 进行配置,但不编译
  • make all install —— 下载、编译并安装
  • make reinstall —— 如果之前安装中断,可继续
  • make package —— 将 ports 打包成 package 文件

安装完新软件后,如果使用的 Shell 是 Csh 或 Tcsh,可能需要执行 rehash 重建 hash table,否则可能找不到新命令,除非输入完整路径或重新登录。

已安装的软件都可以在 /var/db/pkg 目录下找到,每个软件一个目录,里面记录着安装信息和文件清单。有些软件在安装前会要求先装其他软件,通常会自动处理。所以 /var/db/pkg 里可能会出现一些并非你主动安装的依赖软件。想知道软件之间的依赖关系?可以使用 pkg_tree 这个工具。先通过 ports 安装它:

# cd /usr/ports/sysutils/pkg_tree
# make install clean

然后执行 pkg_tree | more 即可查看各软件之间的关系(别忘了先 rehash)。

10.4 更新 port tree

FreeBSD 发布时会事先测试 ports 目录中所有软件能否正常安装。由于软件之间相互依赖,发布前会暂停更新各软件版本以确保稳定。但发布之后,ports 中的软件版本可能已有更新,有些只是增加新功能,有些则涉及安全修复。如果想用最新版本,最好先更新整个 port tree。

不过也要注意:更新 port tree 后,因为版本依赖问题,某些软件可能暂时无法安装,通常过几天再更新一次就能解决。

更新 port tree 的方法很简单——使用 CVSup。CVSup 是一套神奇的同步工具,能让你和开发团队的源码保持同步。它不仅可以更新 port tree,还可以更新 /usr/src 下的 FreeBSD 源码。

首先安装 CVSup。由于不需要图形界面,安装 cvsup-without-gui

# cd /usr/ports/net/cvsup-without-gui
# make install clean

系统里已经有一份 CVSup 更新 port tree 的配置文件范例,可以直接修改或复制一份再改:

# cp /usr/share/examples/cvsup/ports-supfile /root/

用文本编辑器打开 /root/ports-supfile,找到 host 部分,设置你要用的 CVSup 服务器:

# Defaults that apply to all the collections
*default host=cvsup.tw.freebsd.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
*default compress

## Ports Collection.
ports-all

上面示例中使用的是 cvsup.tw.freebsd.org(交大资工维护)。你也可以使用 cvsup1cvsup13.tw.freebsd.org,比如 cvsup3 在中山大学,cvsup13 是和信超媒体。最后一行 ports-all 表示更新全部目录。如果你想只更新部分目录,就把 ports-all 注释掉,去掉 ports-base 的注释,然后只保留你需要的分类(如 ports-www)。

设定完成后,执行命令开始更新:

# cvsup -g -L 2 /root/ports-supfile

参数 -g 表示不使用图形界面,-L 2 表示日志详细程度(0~2),最后的文件是配置文件。

养成一个好习惯:在安装 ports 之前,先跑一次 CVSup。这样你就能随时拿到最新版本的软件。当然,前提是你的机器必须连上互联网。

10.5 使用 portupgrade 更新软件

用 ports 装了一堆软件后,如果它们有新版怎么办?FreeBSD 的 ports 管理工具里有个非常好用的东西——portupgrade

Ports 中的软件通常有依赖关系。比如安装 Apache 会自动装 libexpat,安装反垃圾邮件软件会装一堆 Perl 模块。更新时一定要保证依赖的软件一并更新,否则可能出问题。不过这不意味着要天天更新——软件并非越新越好,没人能保证新版的行为和旧版完全一致。只有在必要时才使用 portupgrade

portupgrade 在更新时会保留你原来的配置文件。比如更新 Apache 时,它会保住 httpd.conf。这是目前更新 ports 软件比较安全的方式。

用 CVSup 更新 port tree 后,可以先用这条命令查看已安装软件和 port tree 中的版本差异:

# pkg_version -v
ispell-3.2.06_12 = up-to-date with port
jasper-1.701.0 = up-to-date with port
jpeg-6b_3 = up-to-date with port
kde-3.3.0 < needs updating (port has 3.3.1)
kdeaccessibility-3.3.0 < needs updating (port has 3.3.1)
...

输出中带 < needs updating 的就是需要更新的软件。然后可以用 portupgrade 来更新。首先用 ports 安装 portupgrade 本身:

# cd /usr/ports/sysutils/portupgrade
# make install clean

如果只想升级某个软件本身,不更新依赖,执行 portupgrade pkgname 即可。如果还要更新依赖该软件的其他软件,加参数 -r。如果连依赖的依赖也一起更新,用 -R。参数 -m 可以给编译传递额外选项,参数 -f 可以强制更新(即使版本相同)。

举个例子,要更新 perl-5.8,可以这样:

# portupgrade -rf "perl-5.8.*" -m "ENABLE_SUIDPERL=yes"

这条命令会递归更新所有依赖 perl 的软件,并在编译时启用 SUID Perl 支持。

来源:https://www.jb51.net/os/Unix/1503.html
上一篇FreeBSD 6.0 Apache MySQL PHP phpMyAdmin Webmin 安装配置 下一篇FreeBSD系统常用命令速查表与快速实用技巧详解
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
微软详解Win11时间点还原 默认每24小时创建恢复点
系统平台 · 2026-06-30

微软详解Win11时间点还原 默认每24小时创建恢复点

微软今日推送了最新的 6 月可选更新,并发布博客详细解读了 Win11 全新的“时间点还原”(Point-in-time restore)功能——这一功能本质上是对系统恢复体验的一次全面升级,旨在让用户更轻松地应对电脑故障。 微软表示,面向 Windows 11 客户端用户的“时间点还原”功能现已正

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验
系统平台 · 2026-06-30

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验

微软今天推送了Windows 11 26H1设备的6月可选更新KB5095091,安装完成后系统版本号会升级到Build 28000 2340。值得一提的是,这次更新并非面向所有设备,而是专门为搭载高通骁龙X2系列芯片的机型准备的——包括骁龙X2 Plus、X2 Elite和X2 Elite Ext

Win11六月可选更新KB5095093修复回收站弹窗异常
系统平台 · 2026-06-30

Win11六月可选更新KB5095093修复回收站弹窗异常

微软已悄然推送Windows 11六月可选更新,编号KB5095093。本次更新覆盖两个版本:24H2用户安装后版本号升级至Build 26100 8737,而25H2用户则更新至Build 26200 8737。 本次更新并非仅是小修小补,而是带来了多项实质性新功能。下面我们就来详细解析这些更新内

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞
系统平台 · 2026-06-30

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞

科技媒体 Cult of Mac 昨日(6月23日)发布博文指出,苹果在 macOS 27 Beta 2 更新中悄然封堵了一个此前可用的后门——用户曾能通过一条终端命令绕过候补名单,直接启用新版 Siri AI,如今这一方法已失效。 简要回顾一下:在 macOS 27 Beta 1 阶段,只需在 M

微软加速Win11 25H2推送 覆盖所有符合条件家用PC
系统平台 · 2026-06-30

微软加速Win11 25H2推送 覆盖所有符合条件家用PC

近日(6月23日),科技媒体 Windows Latest 发布了一则值得关注的动态:微软已进一步扩大 Windows 11 25H2 的推送范围,所有满足硬件要求、且不受 IT 部门管理的家庭版和专业版设备,现在均可顺利接收本次更新。 此次升级有一个显著特点——采用“启用包”(eKB)方式进行推送