4.2.软件安装的概述 ================== FreeBSD *port* 是一组文件的集合,旨在自动完成从源代码编译应用程序的过程。组成 port 的文件包含了自动下载、 解压缩、 打补丁、 编译和安装应用程序的所有必要信息。 如果该软件尚未在 FreeBSD 上进行移植和测试,则可能需要对源代码进行编辑,以使其能够正常安装和运行。 然而,已经有超过 `36000 `__ 个第三方应用程序被移植到了 FreeBSD。在可行的情况下,这些应用程序会以预编译 *软件包* 的形式提供给大家下载。 软件包可以通过 FreeBSD 的软件包管理命令来操作。 软件包和 ports 都能解析依赖关系。如果使用软件包或 port 安装一个应用程序,而所依赖的库还没有安装,那么就会先自动安装这个库。 一个 FreeBSD 软件包包含了该应用程序的所有命令的预编译副本,以及任何配置文件和文档。可以用 `pkg(8) `__ 命令来操作软件包,比如 ``pkg install``\ 。 虽然这两种技术是相似的,但软件包和 ports 都各有长处。应选择符合你安装特定应用程序的要求的技术。 软件包的好处 - 软件包文件通常比包含应用程序的源代码的压缩文件小。 - 软件包不需要花时间编译。对于大型的应用程序,如 Firefox、KDE Plasma 或 GNOME,这在运行较慢的系统中可能很重要。 - 软件包不需要了解在 FreeBSD 上编译软件的过程。 port 的好处 - 软件包通常是用保守的选项编译的,因为它们必须在尽可能多的系统上运行。通过从 port 编译,人们可以改变编译选项。 - 一些应用程序有与安装哪些功能有关的编译时选项。例如,NGINX® 可以被配置成各种不同的内置选项。 在某些情况下,同一个应用程序会存在多个软件包来指定某些设置。例如,NGINX® 可以被拆分为一个 **nginx** 软件包和一个 **nginx-lite** 软件包,这取决于是否安装了 Xorg。如果一个应用程序有超过一个或两个不同的编译时选项,创建多个软件包很快就变得非常困难。 - 一些软件的许可证禁止二进制发布。这种软件必须以源代码的形式发布,必须由终端用户编译源代码。 - 有些人不信任二进制分发,或者喜欢通读源代码,以寻找潜在的问题。 - 为了应用定制的补丁,需要源代码。 要跟踪 ports 的更新,可以订阅 `FreeBSD ports 邮件列表 `__ 和 `FreeBSD ports bugs 邮件列表 `__\ 。 **警告** 在安装任何应用程序之前,请检查 https://vuxml.freebsd.org/ 以了解有关的安全问题。使用 ``pkg audit -F`` 来检查已安装的应用程序是否存在已知的漏洞。 本章的其余章节将解释如何使用软件包和 ports 来安装和管理 FreeBSD 上的第三方软件。