目录
4 安装应用程序:Packages 和Ports
4.1 概要
4.2 寻找你要的应用程序
4.3 使用包管理系统
4.4 使用Ports Collection
4.5 安装中出现的问题
=============================================================
第4 章.安装应用程序:Packages 和ports
=============================================================
(翻译中出现的任何问题或错误,请广大读者及时反馈给我:freebsdhandbook@163.com)
4.1 概要
在FreeBSD 上有很多应用程序。如果你是一个操作系统的开发者,基本系统就包含了
你所需要的所有东西。如果你计划用FreeBSD 来做点事情,你可能需要安装额外的应用程
序。如:一个web 浏览器,或邮件服务器,或一个象KDE 和GNOME 这样的图形环境。如果
你在安装第三方应用软件之前,就已经在使用UNIX 系统了,那大概的安装情况就是这样的:
2. 用compress 或gzip 来解开软件。
3. 阅读相关文档,了解如何安装。
4. 如果软件是以源代码形式发布的,先编译。这可能需要编辑一个makefile 文件,或运
行一个配置脚本。
5. 测试和安装软件。
如果一切顺利的话,就这么简单。如果你在安装一个软件包时发生一些错误,你可能
需要编辑一下代码,以使它能正常工作。
你可以继续使用传统的方式安装软件。然而,FreeBSD 提供了两种技术:packages 和
ports。就在写这篇文章的时候,已经有超过6000 个第三方的应用程序可以使用了。
FreeBSD 的应用程序包是一个可以下载的文件。这些包包含了预编译的拷贝,还有一些
配置文件或文档。一个下载的包文件可以用FreeBSD 的包管理命令来操作,例如
pkg_add,pkg_delete,pkg_info 等等。
安装一个新的应用程序可以用一个简单的命令来完成。一个FreeBSD 的Port 是一个可
以自动从源代码编译成应用程序的文件集合。记住,如果你自己来编译的话,需要执行很
多步的操作(解压,补丁,编译,安装)。这些整理port 的文件集合包含了系统需要完成
这个工作的必需信ⅰD憧梢栽诵幸恍┘虻サ拿睿切┰创刖涂梢宰远叵略兀饪?nbsp;
打补丁,编译,直至安装完成。
第1 页FreeBSD 使用手册
Package 的优点
1. 一个编译的包通常要比一个压缩过的应用程序的源代码小得多。
2. 包不需要进行额外的编译。对于很大的应用程序如Mozilla, KDE 或GNOME,这点很重
要,特别是在你的系统比较小的情况下。
3. 包不需要你一定要知道如何在FreeBSD 上编译软件的详细过程。
Ports 的优点
1. 包在编译时通常比较保守,因为他们必须运行在比较大型的系统上。通过从port 安装,
你可以细微调整编译选项来产生适合于处理器的代码。
2. 一些包已经把与它们相关的能做和不能做的事情的选项都编译进去了。例如,Apache
可能就配置进了很多不同的组选项。你从port 中建构软件,不一定要接受默认的选项,
你可以自己来设置。
在一些例子中,多个包将需要为某个设置指定同一个应用程序。例如,Ghostscript 可
以使用ghostscript 和ghostscript-nox11 包,这取决于你是否安装了X11 服务器。这样
的略微调整对包是可能的,但如果一个应用程序有超过一个到两个不同的选项时,比较快
就变得不太好了。
1. 一些软件的许可条件禁止采用二进制形式发行。他们必须带上源代码。
2. 一些人不信任二进制发行形式。至少有了源代码,可以亲自阅读它,寻找潜在的问题。
3. 如果你要对软件打补丁,你就需要有源代码。
4. 一些人喜欢整天围着源代码转,所以他们喜欢亲自阅读源代码,修改源代码等等。
这章的其余部分将介绍如何使用packages 和ports 来安装和管理第三方软件。
4.2 寻找你要的应用程序
在你安装任何应用程序之前,你需要知道你需要什么,那个应用程序叫什么。FreeBSD 中
可用的应用程序正在不断地增长着。当前已经有超过6000 个可用的应用程序以package 或
ports 的形式存在。有许多方法可以找到你所需要的程序。
第2 页FreeBSD 使用手册
1. FreeBSD 站点上拥有一个可以搜索到的所有可用的应用程序列表, 在
(http://www.FreeBSD.org/ports/)上。它分很多种类,你既可以通过名称来搜索,
也可以在分类中列出所有可用的应用程序。
2. Dan Langille 维护着网站FreshPorts(http://www.freshports.org/)。FreshPort
时刻追踪着在ports 中应用程序的变化。当有任何程序被升级时,他们就会发email
提醒你。
3. 如果你不知道你想要的应用程序的名字, 可以通过FreshMeat
(http://www.freshmeat.net/) 或AppWatch (http://www.appwatch.com/这样的网站
来寻找。如果应用程序被找到了,你可以回FreeBSD 的主站去看一下。
4.3 使用包管理系统
4.3.1 安装一个package
你可以使用pkg_add 工具从本地或通过网络从一台服务器上安装FreeBSD 的package。
例如4-1.下载一个package 然后在本地安装它:
# ftp 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.
第3 页FreeBSD 使用手册
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub/FreeBSD/ports/packages/irc
250 CWD command successful.
ftp> get xchat-1.7.1.tgz
local: xchat-1.7.1.tgz remote: xchat-1.7.1.tgz
150 Opening BINARY mode data connection for ‘xchat-1.7.1.tgz' (471488
bytes).
100% |**************************************************| 460 KB
00:00 ETA
226 Transfer complete.
471488 bytes received in 5.37 seconds (85.70 KB/s)
ftp> exit
# pkg_add xchat-1.7.1.tgz
#
如果你没有本地package 的源代码,可能需要为pkg_add 加上-r 选项。这将迫使程序
自动决定目标文件的正确格式和版本,然后自动从一个FTP 站点寻找和安装package.
# pkg_add -r xchat-1.7.1
这将下载正确的package,而不需要用户的干预就可以添加。Package 文件是以.tgz 的
格式分发的。你可以在( ftp://ftp.freebsd.org/pub/FreeBSD/ports/packages/ ) 或
FreeBSD CDROM 上找到。每一个FreeBSD 发行CD 都把packages 放在/packages 目录中。
packages 的设计与/usr/ports 树很相似。每个分类都有它自己的目录,每个package 也能
在所有目录下找到。Package 系统的整个目录结构是与ports 的目录结构相对应的;他们以
package/port 的形式互相协调工作。
第4 页4.3.2 删除一个package
pkg_delete 是用来删除先前安装的软件package 的工具。
4.3.3 管理packages
pkg_info 是用来列出和描述已安装的不同package 的工具。
# pkg_info
cvsup-bin-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 是一个用来统计所有安装的package 的版本的工具。它可以用来比较本地
package 的版本与ports 目录中的当前版本是否一致。
# pkg_version
cvsup-bin =
docbook =
...
符号
=
<
>
?
*
FreeBSD 使用手册
# pkg_delete xchat-1.7.1
#
在第二列的符号指出了安装版本的相关年纪和本地ports 目录树中可用的版本。
含义
在本地ports 树中与已安装的软件包相匹配。
已安装的版本要比在ports 树中的版本来得老。
已安装的版本要比在ports 树中的版本来得新。
已安装的软件包无法在ports 索引中找到。
软件包有很多版本。
第5 页FreeBSD 使用手册
4.3.4 其他一些
pkg_add pkg_delete pkg_info pkg_version pkg_create
所有的package 信息都保存在/var/db/pkg目录下。每一个package 的内容和描述都能在这
个目录的相关文件中找到。
4.4.使用Ports Collection
下面的章节提供了使用ports collection 来安装或卸载程序的基本用法。
4.4.1 获得Ports Collection
在你安装ports 之前,你必须先获得ports collection-----一套Makefiles, patches
和描述文件,通常被放在/usr/ports 下。
当你安装FreeBSD 系统时,Sysinstall 会问你是否要安装ports collection。如果你
选择no,你可以根据现在的指示获得ports collection。
Sysinstall 方法
这个方法包括重新使用sysinstall 来安装ports collection。
1. 首先成为root,运行/stand/sysinstall:
# /stand/sysinstall
2. 用箭头选择Configure,然后键入Enter。
3. 用箭头选择Distributions,然后键入Enter。
4. 用箭头选择ports,然后键入Space 键。
5. 用箭头选择Exit,然后键入Enter。
6. 选择你要使用的安装设备,如CDROM, FTP 等。
7. 选择菜单退出sysinstall。
还有一种获得和确保你的ports collection 始终保持最新的方法是使用CVSup,
/usr/share/examples/cvsup/ports-supfile。
CVSup 方法
第6 页FreeBSD 使用手册
这是一个使用CVSup 获得ports collection 的快速方法。如果你要确保你的ports 树
为最新或想了解更多有关CVSup 的信息,请阅读先前提到的章节。
安装net/cvsup port.看看CVSup Installation 的介绍了解更多信息。1.
进入root 方式,拷贝/usr/share/examples/cvsup/ports-supfile 到一个新的目录, 2.
如/root 或你的主目录。
编辑ports-supfile 3.
修改CHANGE_THIS.FreeBSD.org 为离你比较近的一个CVSup。看看有关CVSup 的镜4.
象信息。
运行cvsup -g -L 2 <path_to_supfile> 5.
# cvsup -g -L 2 /root/ports-supfile 6.
以后可以经常运行这个命令来下载最新的ports collection 的修正。7.
4.4.2. 安装Ports
当提到Ports collection 时,第一个要说明的就是何谓“skeleton”。一个port skeleton
是让一个程序在FreeBSD 上简洁地编译并安装的所需文件的最小组合,每个port skeleton
包含:
一个编译文件。编译文件包括好几个部分,指出应用程序是如何编译的和它将被安
装在系统的哪个地方。
一个distinfo 文件。这个文件包括这些信息:这些文件需要被下载后才能构造,需
要检查数目,确保在下载过程中文件不会被中断。
一个file 目录。这个目录包括编译程序和安装到FreeBSD 系统的补丁。这些补丁基
本上都是些小文件,指出这些文件的特殊变化。
一个pkg-comment 文件。这是一行程序的描述。
一个pkg-descr 文件。这是一个提供更多细节,有多行程序的描述文件。
一个pkg-plist 文件。这是即将被安装的许多文件的列表。它告诉ports 系统在重
新安装时什么文件需要被删除。
现在,你已经了解了足够的ports collection 的背景信息,你可以准备安装ports 了。
共有两种安装方法,下面具体介绍。在你安装之前,你需要选择一个安装的port。有两种
第7 页FreeBSD 使用手册
方法,最容易的方法是到FreeBSD 的网站上查看ports 的列表。每个port 都有一个描述文
件,你需要在安装之前先浏览一下。另外一种方法是使用whereis 命令。只需要输入“whereis
<你想安装的程序>”,如果能被系统找到,你就会看到它的保存路径:
#whereis xchat
xchat: /usr/ports/irc/xchat
#
这个命令告诉你xchat 能在/usr/ports/irc/xchat 目录中找到。另外一种查找port 的
方法是使用ports 内建的搜索功能。要使用这个功能,你先要进入/usr/ports 目录,然后
运行make search key=program-name ,这里的program-name 就是你要找的程序的名称。
例如,如果你要找xchat:
# cd /usr/ports
# make search key=xchat
Port: xchat-1.3.8
Path: /usr/ports/irc/xchat
Info: An X11 IRC client using the GTK+ toolkit, and optionally, GNOME
Maint: jim@FreeBSD.org
Index: irc
B-deps: XFree86-3.3.5 bzip2-0.9.5d gettext-0.10.35 giflib-4.1.0 glib-1.2.6
gmake-3.77 gtk-1.2.6
imlib-1.9.8 jpeg-6b png-1.0.3 tiff-3.5.1
R-deps: XFree86-3.3.5 gettext-0.10.35 giflib-4.1.0 glib-1.2.6 gtk-1.2.6
imlib-1.9.8 jpeg-6b
png-1.0.3 tiff-3.5.1
你要密切注意输出内容的“Path:”行,它告诉你能在哪儿找到它。其它的信息是在安
装ports 时不需要的,在这里就不提了。
注意: 必须具有root 权限才能安装port。
4.4.2.1.从CDROM 安装ports
做这一步的前提是你有一张FreeBSD 的安装光盘。如果你没有,你可以从FreeBSD 商店
订购一张(www.freebsdmall.com)。在确信光盘已经放入光驱之后,你需要先挂上/cdrom,
才可以安装ports。开始,改变目录到你要安装的ports