新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 网络学院 > 操作系统 > Unix系统 > FreeBSD教程 > 正文:Ports

Ports

新客网 XKER.COM 2008-01-18 来源:新客网编辑整理 佚名 收藏本文

pkg_add:用来安装 package。它会按照 package 里面的设定,把各个档案拷到正确的位置,然後在 /var/db/pkg 下面造出该 package 的目录,把 CONTENTS COMMENT DESC 等档案拷过去。以前面的 amp 来说,使用 pkg_add amp-0.7.6.tgz 会建立并把这三个档案拷到
/var/db/pkg/amp-0.7.6 目录下去。

pkg_delete:用来反安装 package。它会到 /var/db/pkg/[package] 目录下面找出这个 package 安装了哪些东东,把它们通通移除,最後会把/var/db/pkg/[package] 目录也移除。比如说要反安装前面安装过的amp,直接执行 pkg_delete amp-0.7.6 即可。

假如你凡事都喜欢自己来事必亲躬,那麽你可以自己从 ports 里面做compile,假如你看得懂 source,还可以自己改改 code,做做 tuning,量身订做弄出一个最适合自己的专用程式来。这种一手掌控的快感,是你用 Windows 系统时所无法享受到的。ports 主要分为两部份,一部份就是原始的 source code,这些 source 大部份都放在ftp://freebsd.csie.nctu.edu.tw/pub/distfiles 里面。另一部份则是这个 ports 假如要在 FreeBSD 下面编译、执行的话所需要的修改及摆放的位置等设定,这一部份主要是放在ftp://freebsd.csie.nctu.edu.tw/pub/ports-* 目录下面。这个目录和
package 一样,也是依照不同的应用特性来做分类。还是拿 amp 来说,在 audio/amp 目录下面,你可以看到:

drwxr-xr-x 2 UPLOAD UPLOAD 512 Oct 9 00:24 CVS
-rw-r--r-- 1 UPLOAD UPLOAD 528 Sep 3 08:35 Makefile
drwxr-xr-x 3 UPLOAD UPLOAD 512 Oct 9 00:24 files
drwxr-xr-x 3 UPLOAD UPLOAD 512 Oct 9 00:24 patches
drwxr-xr-x 3 UPLOAD UPLOAD 512 Oct 9 00:24 pkg

Makefile 指定了这个 ports 该如何编译、source code 要去哪里抓、需要先安装哪些其它相关的 ports、如何 instal.... 等等的讯息。files 目录下一般是放 source code 的 md5 checksum,以免抓到错误的 source code 包裹。patches 里面放的是这个 ports 假如要改用到FreeBSD 下面所需要做的修改。pkg 目录下面是这个 ports 的相关资料,和 package 里面那些 CONTENTS COMMENT DESC 有相同的功效。假如你要使用 ports,必需把该目录下的所有东东(嗯,其实 CVS 都没用到)照原来的目录结构整个抓下来,假如你是用 ncftp,就用 get -R 来抓。一般抓下来的 ports 应该是放在 /usr/ports/ 下的对应目录下,如 amp 就应该放 /usr/ports/audio/amp/ 下,但是并没有硬性规定就是了。

整个目录抓下来後,再来就是要执行 make 了。在 ports 下 make 有几种不同的参数,这些参数在 /usr/share/mk/bsd.port.mk 里面都有具体的解说。当你直接打 make 时,其实就是按照 fetch(抓回 source) -> extract(检查 source 的 md5 并解开 source) -> patch(对 source 做
patch) -> configure(设定) -> build(编译) 这样一路做下来,把整个ports 编译好,而要等到你指定了 make install 後才会真的把这个ports 安装到系统上去。最後安装完後可以再 make clean,把解开的source 等东东清除掉。

在 make fetch 时,系统会依照下列顺序来寻找需要的 source:

1. /usr/ports/distfiles 下
2. /etc/make.conf 档中指定的 MASTER_S99vE_BACKUP
3. Makefile 里指定的 MASTER_S99vES

/etc/make.conf 内定是到 FreeBSD 总部去抓,不过其实一般这些source 都可以在 ftp://freebsd.csie.nctu.edu.tw/pub/distfiles 目录下面抓到,所以你可以把MASTER_S99vE_BACKUP 改成:

MASTER_S99vE_BACKUP?= \ ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/${DIST_SUBDIR}/

节省到国外抓档的频宽。当 make extract 後,会把 source 解开到working 目录下去。假如你想自己改一改 source,可以在 make patch之後到 working 目录下去修改。然後 make configure 和 make build 时我们大概也没什麽事好做了,就看电脑萤幕上的字一行行的向上,
简单一点的 ports 可能你做十下伏地挺身它就能 make 好,大一点的可能就你出去跟人聊天串门子回来後它还在跑。

有时候呢,ports A 会和 ports B 发生关,在安装 ports A 时系统会去找 ports B,假如找到会先装好 ports B 再回头来装 ports A,但是假如找不到 ports B 时就会给你一个警告,你就需要再去抓 ports B 回来安装。但是这样缺啥补啥也是满麻烦的,即然用了 FreeBSD 就要善用 FreeBSD 提供的好用功能 -- CTM。首先,/usr/ports 下最好有50Mb 左右的硬碟空间,然後到
ftp://freebsd.csie.nctu.edu.tw/pub/CTM/ports-cur 下面抓回ports-cur.????xEmpty.gz(找一个数字最大的 ???? 抓)以及所有* > ???? 的 ports-cur.*.gz,比如说你抓了 ports-cur.2000xEmpty.gz,那就要把 ports-cur.2001.gz, ports-cur.2002.gz.... 通通抓回来。假如你抓回来的 gz 档都放在 /tmp/ctm 下,就使用以下指令:

cd /usr/ports
/bin/rm -rf *
ctm -v /tmp/ctm/*

这样就会把全部的 ports 通通收在你的系统上,以後安装时就不需要再担心缺东少西的问题了。而且之後假如 ports 又有更新,也只需要抓回新的 gz 档,用 ctm 来更新即可,方便又省事。

共2页: 上一页 [1] [2] 下一页
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐