FreeBSD Tinderbox ( 上 )
這篇主要是給 FreeBSD Ports maintainer/committer 看的,如果你看不懂,呃… 到 #bsdchat 上問看看吧 :p
Tinderbox (在 misc/tinderbox 裡) 主要是拿來測試 port 是否可以正常的編出來,順便產生 package。網頁在 http://tinderbox.marcuscom.com/ 這,其中的 README 寫得蠻清楚的,建議仔細看。
Tinderbox 的好處在於他會產生一個 chroot 的環境 (在 Tinderbox 官方說明文件裡的 “Jail” 指的是 chroot 的環境,下面提到 Jail 都是指這個,而非 FreeBSD 的 jail),然後在裡面進行編譯的工作,這可以測試在系統什麼都沒有裝的情況下是否能正確編譯。主要是要看有沒有漏設 *_DEPENDS。
另外,Tinderbox 可以在 6.x 的機器上建立出 5.x 甚至 4.x 的 Jail 並進行編譯,這使得以往要在多台機器上測試的情況可以在一台機器上測試完畢。
再來,Tinderbox 可以對每個 Jail/PortsTree/Build 自訂環境變數 (關於什麼是 PortsTree 與 Build,在後面會提到),於是你可以利用這些東西建立出設定不同的 Perl version (4.11 系統裡的 5.00503,或是 5.6.x,或是目前建議用的 5.8.x),這對於 p5-* 的 maintainer 相當方便。
接下來開始講 misc/tinderbox 的安裝,Tinderbox 需要一個 Database,裝 mysql 4.1 之後的版本,接著裝 databases/p5-DBI 與 databases/p5-DBD-mysql{41,50,51,…},然後才裝 Tinderbox。
裝好後東西都丟在 /usr/local/tinderbox
下,原則上不動這個目錄,直接找個夠大的空間 cp -R 過去,像我自己是丟在 /da1/tb
下。
丟進去以後改 /da1/tb/scripts/tinderbox.ph
,改前面幾行的設定就好,重點在於第一行的路徑要設對就可以了。改好後跑 cd /da1/tb/scripts && ./tc init
,然後看看 /da1/tb
下面是不是多了一堆目錄。
接著建立 Jail,挑你想要測試的環境建立:
#
# 4.11-RELEASE
./create Jail -j 4.11 -d “FreeBSD 4.11-RELEASE” -t RELENG_4_11 -u CVSUP -H cvsup.tw.freebsd.org
#
# 4-STABLE
./create Jail -j 4 -d “FreeBSD 4-STABLE” -t RELENG_4 -u CVSUP -H cvsup.tw.freebsd.org
#
# 5.5-RELEASE
./create Jail -j 5.5 -d “FreeBSD 5.5-RELEASE” -t RELENG_5_5 -u CVSUP -H cvsup.tw.freebsd.org
#
# 5-STABLE
./create Jail -j 5 -d “FreeBSD 5-STABLE” -t RELENG_5 -u CVSUP -H cvsup.tw.freebsd.org
#
# 6.0-RELEASE
./create Jail -j 6.0 -d “FreeBSD 6.0-RELEASE” -t RELENG_6_0 -u CVSUP -H cvsup.tw.freebsd.org
#
# 6.1-RELEASE
./create Jail -j 6.1 -d “FreeBSD 6.1-RELEASE” -t RELENG_6_1 -u CVSUP -H cvsup.tw.freebsd.org
#
# 6-STABLE
./create Jail -j 6 -d “FreeBSD 6-STABLE” -t RELENG_6 -u CVSUP -H cvsup.tw.freebsd.org
執行後他會跑 cvsup 將指定的版本抓回來,然後 make world 將 Jail 建立出來。