http://bbs.ee.ntu.edu.tw/cgi-bin/bbs2html_cgi?boards/BSD/D.843381019.A/M.878238
131.A+a1ba205b686f77746f5d207061636b616765732f706f72747320a8cfa5cebba1a9fa
◇ [howto] packages/ports 使用說明
-------------------------------------------------------------------------------
-作者: woju (Sound) 看板: 386BSD
標題: [howto] packages/ports 使用說明
時間: Fri Oct 31 03:02:10 1997
這篇寫給 hopenet2 (HopeNet-FreeBSD-CDROM2) 用的,若無 HopeNet-FreeBSD-CDROMs,
還是可透過網路來享用 FreeBSD packages,大部分只要將文件裏的 /cdrom/ 改成
ftp://freebsd.ntu.edu.tw/freebsd/ 即可。
packages 為 FreeBSD 「招牌特色」之一,喜歡「玩軟體」的人更不可錯過這個
「招牌特色」! ;-)
= FreeBSD packages 使用說明 =
(hopenet2)
若已知想安裝的 package 名稱為何,如 joe (一個很受歡迎的 unix editor):
cd /cdrom/packages/All; pkg_add joe-2.8.tgz
裝完後在 /var/db/pkg/joe-2.8/ 會留下相關的記錄。
想知道這個 packages 裝了什麼東西、裝在何處,可以 tar tvfz joe-2.8.tgz 看看。
若不知道有什麼 package 可用,只是想試試各種 editor,可看一下
/cdrom/packages/editors/ 裏的 packages,假設看到了 emacs-19.34b.tgz 覺得有
興趣,想知道這套 package 有什麼特色:
pkg_info emacs-19.34b.tgz
此外,less /cdrom/INDEX 裏有簡要的說明,善用 INDEX 可很快找到合用的
package。
X X X X X X X X X X
packages/All/ 是編好現成可用的 binary,若想自己從 source 編,可透過 ports
來做這件事,舉例來說,若想看看 pine-3.96.tgz 的 source:
請把 hopenet2 (也就是本張光碟) umount(umount /cdrom),換成 hopenet1 再
mount 上去(mount /cdrom)。
cd /cdrom/cvs-2.2/ports; less INDEX 查得(/^pine<Enter>)位於 /usr/ports/mail
下:
mkdir -p /usr/ports/mail; cp -pR mail/pine /usr/ports/mail
mkdir -p /usr/ports/distfiles
cd /usr/ports/mail/pine
less files/md5 查得需要 pine3.96.tar.gz 這個檔,也就是得設法將這個檔
放到 /usr/ports/distfiles 裏:
cp /cdrom/distfiles/pine3.96.tar.gz /usr/ports/distfiles
cd /usr/ports/mail/pine
make install
若要產生 package -> make package
至於 make 後面可加什麼 -> less /usr/share/mk/bsd.port.mk
如 "make extract", "make patch", "make configure" ....
/cdrom/distfiles/ 收集有 /cdrom/pkg/ (常用到的 packages) 相關的 source,
這些 source file 的「原始位罝(發源地)」可從 Makefile 看出,files/md5 列出
了需要用到的檔名,除了到「發源地(通常在國外)」抓這些檔外,也可先查查附近
的網站有沒有這些檔,建議的查詢順序為:
1. /cdrom/disftiles
2. ftp://freebsd.csie.nctu.edu.tw/pub/distfiles
3. ftp://freebsd.ntu.edu.tw/freebsd/distfiles
4. archie -c 要找的檔名,archie 有現成的 package 可裝,如:
pkg_add /cdrom/pkg/archie-1.4.1.tgz
man archie 可查得更多的訊息 (export ARCHIE_HOST=archie.ncu.edu.tw.)
找到需要的案後,放到 /usr/ports/distfiles 裏,待會 make 時就不會到「發源地」
辛苦的抓檔。
/etc/make.conf 裏也可設定 /usr/ports/distfiles 缺少的檔優先從何處抓取,如:
MASTER_SITE_BACKUP?= \
ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}
ports 還有其它有趣的用法,比如說想找中文相關的 ports
cd /cdrom/cvs-2.2/ports; make search key=chinese | less
其它用法請參閱 ports 裏的 Makefile,或查查 Handbook(00www-mirror/)相關的章節。
X X X X X X X X X X
若自己有特殊需求,決定修改 source,試過後覺得很滿意,想分享給其它朋友,舉例
來說,pine 對中文處理有點問題,woju 做了些修改,讓 pine 能中文相容:
cd /usr/ports/mail/pine/work/pine3.95/pine
cp send.c send.c.orig
<modify send.c>
cd .. (也就是回到 /usr/ports/mail/pine/work/pine3.95)
diff -u pine/send.c.orig pine/send.c > /usr/ports/mail/pine/patches/patch-woju2
... 其它的修改 ...
把相關檔案壓成 /cdrom/woju/patches/pine-3.95-8bit-patches.tgz
然後很高興的到網路上 (tw.bbs.comp.386bsd) 和大家分享 :-)
上頭用到 diff 的部分,woju 習慣用 "diff -u",vanilla 做了如下補充:
"core team 的標準做法是 diff -ruN old new"
/cdrom/woju/patches/*.txt 有相關的參考資料。
吳 慶 鴻,[email protected] | 台大電機,http://freebsd.ee.ntu.edu.tw