在 FreeBSD 系统上有几种不同的工具用来管理 package:
sysinstall
工具可以在正在运行的系统上运行,
以完成安装、 删除和列出可用的以及已经安装的预编译软件包的任务。 如欲了解进一步信息,
请参阅 第 2.10.11 节 “安装预编译的软件包 (package)”。
这一节余下的部分将介绍用于管理预编译软件包的命令行工具。
您可以用 pkg_add(1) 这个命令从本地文件或网络上的服务器来安装一个 FreeBSD 软件包。
#
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 [email protected]. 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 CD-ROM),
可以执行 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
。 当使用远程安装 Package
的时候软件名字不需要包含版本号。 pkg_add(1)
将自动的找到这个软件最新的版本。
如果您使用 FreeBSD-CURRENT 或 FreeBSD-STABLE版本的FreeBSD, pkg_add(1)
将下载您的应用软件的最新版本。 如果您使用 -RELEASE 版本的
FreeBSD, 它将会获得与您的版本相应的软件包版本。
您可以通过修改环境变量 PACKAGESITE
来改变这一行为。 例如, 如果您运行 FreeBSD 8.1-RELEASE
系统, 默认情况下 pkg_add(1) 将尝试从
ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/
下载预编译的软件包。 如果您希望强制 pkg_add(1) 下载
FreeBSD 8-STABLE 的软件包, 则可以将 PACKAGESITE
设置为
ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/
。
软件包采用 .tgz
和 .tbz
两种格式。您可以在 ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/
下面或从 FreeBSD 的发行光盘找到, 它在每一个 4CD 的 FreeBSD 发行版的
/packages
目录中。 软件包的设计规划与
/usr/ports
树一致。 每个分类都有自己的目录,
所有的软件包可以在目录 All
中找到。
软件包系统的目录结构与ports的设计规划一致; 它们共同构成了整个 package/port。
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 树中移出或改名了) |
* | 软件包有很多版本。 |
! | 已安装的软件包在索引中存有记录,
但是由于某些原因 pkg_version
无法比较已安装的软件包与索引中相对应的版本号。 |
要删除先前安装的软件package,只要使用pkg_delete(1) 工具。
#
pkg_delete xchat-1.7.1
需要注意的是, pkg_delete(1) 需要提供完整的包名; 如果您只是指定了类似
xchat
而不是
xchat-1.7.1
这样的名字, 则它将拒绝执行操作。
不过, 您可以使用 pkg_version(1) 来了解安装的 package 的版本。
除此之外, 也可以使用通配符:
#
pkg_delete xchat\*
这时, 所有名字以
xchat
开头的 package 都会被删掉。
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<[email protected]>.
关于本文档的问题请发信联系
<[email protected]>.