你可以使用 pkg_add(1)工具从本地或通过网络从一台服务器上安装FreeBSD的package。
Example 4-1. 下载一个package然后在本地安装:
# ftp -a ftp2.FreeBSD.org Connected to ftp2.FreeBSD.org. 220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready. 331 Guest login ok, send your email address as password. 230- 230- This machine is in Vienna, VA, USA, hosted by Verio. 230- Questions? E-mail freebsd@vienna.verio.net. 230- 230- 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /pub/FreeBSD/ports/packages/sysutils/ 250 CWD command successful. ftp> get lsof-4.56.4.tgz local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz 200 PORT command successful. 150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes). 100% |**************************************************| 92375 00:00 ETA 226 Transfer complete. 92375 bytes received in 5.60 seconds (16.11 KB/s) ftp> exit # pkg_add lsof-4.56.4.tgz
如果你没有本地package的安装盘(如FreeBSD cdrom),可以执行 pkg_add(1)命令并加上-r选项。这将迫使程序自动决定目标文件的正确格式和版本,然后自动从一个FTP站点寻找和安装package。
# pkg_add -r lsof
上面的例子将下载正确的package,而不需要用户的干预就可以安装。 pkg_add(1) 使用 fetch(3) 下载文件, 可以使用多种环境变量,包含 FTP_PASSIVE_MODE, FTP_PROXY, and FTP_PASSWORD. 如果你使用FTP/HTTP 代理或在防火墙后面,你可能需要设置这些环境变量。详细的列表可以看 fetch(3) 。 上述例子中用lsof替代了 lsof-4.56.4. 当使用远程package的时候软件名字不包含版本号。 pkg_add(1) 将自动的找到这个软件最新的版本。
Package文件是以.tgz的格式发放的。你可以在ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/, 或在FreeBSD发行的 CD-ROM中找到。每一个FreeBSD发行CD都把package放在/packages 目录中。packages的设计与/usr/ports树很相似。每个分类都有它自己的目录 ,每个package也能在All目录下找到。
Package系统的目录结构是与port的目录结构相对应的;它们以package/port的形式互相协调工作。
pkg_info(1)是用来列出和描述已安装的各种package的工具。
# pkg_info cvsup-16.1 A general network file distribution system optimized for CV docbook-1.2 Meta-port for the different versions of the DocBook DTD ...
pkg_version(1)是一个用来统计所有安装的package版本的工具。它可以用来比较本地package的版本与ports目录中的当前版本是否一致。
# pkg_version cvsup = docbook = ...
在第二列的符号指出了安装版本的相关时间和本地ports目录树中可用的版本。
所有的package信息都保存在/var/db/pkg目录下。已安装文件的列表和每个package的内容和描述都能在这个目录的相关文件中找到。