3. Packages和Ports：在 FreeBSD 中添加软件
上一页 |  | 下一页

## 3. Packages和Ports：在 FreeBSD 中添加软件

除了经典的 UNIX® 安装软件的方法 （下载源码包，解压，编辑源码，编译）外，FreeBSD 还提供了另外两种方法来安装应用程序：packages 和 ports。 你可以在 这里 到一份完整可用的 ports 和 packages 的软件清单。

### 3.1. Packages

Packages 是预编译好的应用程序，在 FreeBSD 中等价于基于 Debian/Ubuntu 的系统中的 `.deb` 软件包以及基于 Red Hat/Fedora 的系统中的 `.rpm` 软件包。 Packages使用 pkg_add(1) 来进行安装。 例如，下面的命令将用来安装 Apache 2.2：

`#` `pkg_add `/tmp/apache-2.2.6_2.tbz``

使用 `-r` 操作将告诉 pkg_add(1) 来自动获取并安装一个软件包，以及解决所有的依赖关系：

`#` `pkg_add -r `apache22`` Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/Latest/apache22.tbz... Done. Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/All/expat-2.0.0_1.tbz... Done. Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/All/perl-5.8.8_1.tbz... Done. [snip] To run apache www server from startup, add apache22_enable="YES" in your /etc/rc.conf. Extra options can be found in startup script.

### 注意:

如果你正运行着 release 版本的 FreeBSD （6.2，6.3，7.0等， 通常从 CD-ROM 被安装的）`pkg_add -r` 会为其下载专门为这些特定版本构建好的软件包。 这些软件包 可能 不是当前最新的程序。 你可以使用 `PACKAGESITE` 变量来覆盖默认的动作。 例如，把 `PACHAGESITE` 设置成 ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/Latest/ 来下载 6.X 系列最新的包。

想了解更多的 packages 信息请查阅 FreeBSD 手册的 4.4 小节：使用 Packages 系统。

### 3.2. Ports

FreeBSD 的第二种安装应用程序的方法就是使用 Ports 套件了。 Ports 套件是 FreeBSD 上的一个利用 `Makefile` 和一些补丁文件来特定从源码定制安装各种软件程序的框架。 当安装一个 port 时系统会获取程序源码， 应用任何所需要的补丁，编译源码， 并安装应用程序（并针对依赖关系以同样的方式安装解决）。

Ports 套件，常被称作 ports 树，可以在 `/usr/ports` 下找到。 假设Ports套件已经在安装 FreeBSD 时安装过了。 如果 Ports 套件还没有被安装可以通过 sysinstall(8) 来进行安装，或者使用 csup(1) 或 portsnap(8) 来从 FreeBSD 的服务器上面拉下来。在手册的 4.5.1 小节 可以找到安装 Ports 套件的详细介绍。

安装一个 port 就像进入 port 的目录并开始构建过程一样简单（通常情况下）， 下面是从 Ports 套件安装 Apache 2.2 的例子：

`#` `cd /usr/ports/www/apache22` `#` `make install clean`

使用 ports 安装软件的最大好处就是能够自定义安装选项。 例如，从 ports 安装 Apache 2.2 时你可以通过设置 `WITH_LDAP` make(1) 变量来启用 mod_ldap：

`#` `cd /usr/ports/www/apache22` `#` `make WITH_LDAP="YES" install clean`

请查看 FreeBSD 手册的 4.5 小节， 使用 Ports Collection， 以获取更多关于Ports Collection 的信息。

### 3.3. Ports还是packages，我应该使用哪个？

Packages 就是预编译好的 ports， 所以从源码（ports）安装与从二进制 packages 安装这两者间确实有很大关联。每种方法各有自己的优点：

Packages（二进制）

- 更快速的安装 （比较大的应用程序编译起来会花很长时间）。
- 你不需要知道如何编译软件。
- 不需要在操作系统上安装编译器。

Ports（源码）

- 能够定制安装选项。 （Packages通常都是使用标准选项构建的。使用 ports 你能够定义各种各样的选项， 比如类似构建附加的模块或是更改安装路径之类的。）
- 如果你喜欢的话还可以使用自己的补丁。

如果你没有一些特别的需求， packages 可能刚好最适合你的情况。如果你需要进一步定制， ports 是最适合的方法了。（请记得， 如果你需要定制而自己又更倾向于使用 packages， 你可以使用 `make` `package` 从 ports 构建一个定制的 package，然后复制到其他的服务器。）

上一页 |  | 下一页
2. Shell程序：没有Bash吗？ | 起始页 | 4. 系统启动：运行级别在哪里？

本文档和其它文档可从这里下载： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题，请先阅读 文档，如不能解决再联系 <questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.