如果你以前使用过 UNIX® 系统,那典型的第三方软件安装的步骤是像下面描述的:
下载这个软件,软件的发行版可能是源代码格式,或是一个二进制包。
解开软件(其中代表性的是用 compress(1), gzip(1), 或 bzip2(1) 压缩过的tar包)。
阅读相关文档,了解如何安装。 (多半一个文件名是INSTALL或README ,或在doc/ 目录下的一些文档)
如果软件是以源代码形式发布的,那就需要编译它。可能需要编辑一个 Makefile文件, 或运行 configure脚本,和其他的一些工作。
测试和安装软件。
如果一切顺利的话,就这么简单。如果你在安装一个软件包时发生一些错误,你可能需要编辑一下代码,以使它能正常工作。
你可以继续使用 ``传统的''方式安装软件。然而,FreeBSD提供了两种技术:packages和ports。就在写这篇文章的时候,已经有超过10,000个第三方的应用程序可以使用了。
对于一个应用程序包是一个可以下载的文件。这些包包含了预编译的拷贝,还有一些配置文件或文档。一个下载的包文件可以用FreeBSD的包管理命令来操作,例如 pkg_add(1),pkg_delete(1), pkg_info(1)等等。
用这种方法,安装一个新的应用程序可以用一个简单的命令来完成。一个FreeBSD的port是一个可以自动从源代码编译成应用程序的文件集合。
记住,如果你自己来编译的话,需要执行很多步的操作(解压,补丁,编译,安装)。这些整理port的文件集合包含了系统需要完成这个工作的必需信息。你可以运行一些简单的命令,那些源代码就可以自动地下载,解开,打补丁,编译,直至安装完成
实际上,ports系统做出可以被pkg_add的程序包和不久就要讲到的其他包管理命令来安装的软件包。
Packages和ports是互相依赖的。假设你想安装一个依赖于已经安装的特定库的应用程序。应用程序和那个库都已经应用于FreeBSD ports和packages。如果你使用命令或ports系统来添加应用程序,两个都必须注意库是否被安装,如果没有,它会自动先安装库。
这里给出的两种技术是很相似的,你可能会奇怪为什么FreeBSD会弄出这两种技术。其实,Packages和ports都有它们自己的长处,使用哪一种完全取决于你自己的喜好。
Package的优点
一个压缩的package通常要比一个压缩的包含源代码的应用程序小得多。
package不需要进行额外的编译。对于很大的应用程序如 Mozilla,KDE或GNOME,这点很重要,特别是在你的系统资源比较差的情况下。
package不需要你知道如何在FreeBSD上编译软件的详细过程。
Ports 的优点
package在编译时通常使用比较保守的选项,因为他们保证可能运行在大多数的系统上。 通过从port安装,你可以细微调整编译选项来产生适合于处理器的代码(针对于Pentium IV或AMD的Athlon CPU)。
一些软件包已经把与它们相关的能做和不能做的事情的选项都编译进去了。例如, Apache 可能就配置了很多的选项。你从port中建立软件,不一定要接受默认的选项,你可以自己来设置。
在一些例子中,一个软件有不同的配置存在多个package。 例如, Ghostscript存在 ghostscript package 和 ghostscript-nox11 package两个配置package, 这取决于你是否安装了X11服务器。 这样的调整对package是可能的,但如果一个应用程序有超过一个或两个不同的编译时间选项时,就不行了。
一些软件的许可条件禁止采用二进制形式发行。它们必须带上源代码。
一些人不信任二进制发行形式。至少有了源代码,(理论上)可以亲自阅读它,寻找潜在的问题。
如果你要自己对软件打补丁,你就需要有源代码。
一些人喜欢整天围着源代码转,所以他们喜欢亲自阅读源代码,修改源代码等等。
保持更新ports,订阅邮件列表 FreeBSD ports 邮件列表 和递交错误报告 FreeBSD ports bugs 邮件列表。
这章的其余部分将介绍如何使用packages和ports来安装和管理第三方软件。