Home -- Michael's Blog :: Just Do IT -- Manuals

4.4. 使用Packages系统

Contributed by Chern Lee.

4.4.1. 一个package的安装

您可以用 pkg_add(1)这个命令从本地文件或网络上的服务器来安装一个FreeBSD 软件包.

例子 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,而不需要用户的干预就可以安装。如果您想指定FreeBSD package的镜像站点,替换主站点,您必须新设置PACKAGESITE 这个环境变量,覆盖原来的设置. pkg_add(1) 使用 fetch(3) 下载文件,可以使用多种环境变量,包含 FTP_PASSIVE_MODE, FTP_PROXY, 和FTP_PASSWORD. 如果您使用FTP/HTTP 代理或在防火墙后面,您可能需要设置这些环境变量。详细的列表可以看 fetch(3) 。上述例子中用lsof替代了 lsof-4.56.4. 当使用远程安装 ackage的时候软件名字不需要包含版本号。 pkg_add(1) 将自动的找到这个软件最新的版本。

注: 如果您使用 FreeBSD-CURRENT 或 FreeBSD-STABLE版本的FreeBSD ,pkg_add(1) 将下载您的应用软件的最新版本。 如果您使用 -RELEASE 版本的FreeBSD, 它将会获得与您的版本相应的软件包版本。如果您更改了PACKAGESITE这个环境变量可能会发生不同的情况。

软件包采用 .tgz.tbz两种格式。您可以在ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/下面或从FreeBSD的发行光盘找到。在每一个4CD的FreeBSD发行版的/packages目录中。软件包的设计规划与/usr/ports树一致. 每个分类都有自己的目录,所有的软件包可以在目录All中找到。

软件包系统的目录结构与ports的设计规划一致; 并且package/port 系统运行相互依赖 。

4.4.2. 软件包的管理

pkg_info(1) 是用于列出已安装的所有软件包列表和描述的程序。

# 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的版本与ports目录中的当前版本是否一致。

# pkg_version
cvsup                       =
docbook                     =
...

在第二列的符号指出了安装版本的相关时间和本地ports目录树中可用的版本。

符号 含义
= 在本地ports树中与已安装的软件包版本相匹配。
< 已安装的版本要比在ports树中的版本旧。
> 已安装的版本要比在ports树中的版本新(本地的port树可能没有更新)。
? 已安装的软件包无法在ports索引中找到。(可能发生这种事情,举个例子,您早先安装的一个port从port树中移出或改名了)
* 软件包有很多版本。

4.4.3. 删除一个软件包

要删除先前安装的软件package,只要使用pkg_delete(1) 工具。

# pkg_delete xchat-1.7.1

4.4.4. 其它

所有已安装的package信息都保存在/var/db/pkg 目录下。安装文件的列表和每个package的内容和描述都能在这个目录的相关文件中找到。

Michael's Blog :: Just Do IT -- manuals