資料來源
http://ccca.nctu.edu.tw/~gslin/Documents/FreeBSD/use-cvsup.txt
* 改版記錄
2002/11/12
stable 改成 4.7
2002/08/25
* 修改 license,從 GPL 改成 GNU FDL,因為 GPL 不是給文件用的 license。
* 修改部分字彙及句子。
* Author
[email protected] ([email protected], DarkKiller)
* License
The license of this document is:
GNU Free Documentation License
Version 1.1, March 2000
http://www.gnu.org/licenses/fdl.txt
* 感謝
感謝 bugs/Leeym/TerryLiaw 三位學長的意見使這份文件更完備。
感謝 [email protected] 找到一些我所看不到的盲點,以及文件的不完備。
* 硬碟空間
依照 jdli 書的說法,2.2.x 系列的 source 才 150MB,不過時代不一樣了...
目前 -current source 的部分大約在 350MB 到 400MB,-stable source 的部
分大約在 300MB 到 350MB。
ports 大約在 100MB,不過小檔案很多,通常會吃掉 200MB 以上的空間。
所以我們建議你騰出 1GB 以上的空間出來放,你總不會裝了 source,結果不
make world 吧? 所以,再準備 obj 吧 :)
如果你的 /usr 空間不夠大,請把 /usr/src 跟 /usr/ports 用 ln link 到夠
大的地方。
* 安裝 cvsup-without-gui-16.1f
首先我們會要求你安裝 cvsup-without-gui-16.1f 這個 package,你可以選用
ports 安裝,或是用 package 裝:
如果你現在用的系統是 4.x,用:
pkg_add ftp://ftp.tw.freebsd.org/pub/FreeBSD/packages/packages-4-stable/
(無空白接上行) All/cvsup-without-gui-16.1f.tgz
如果你現在用的系統是 5.x,用:
pkg_add ftp://ftp.tw.freebsd.org/pub/FreeBSD/packages/packages-5-current/
(無空白接上行) All/cvsup-without-gui-16.1f.tgz
* 修改相關的設定
在你的 /etc/make.conf 裡面加上這幾行:
SUP_UPDATE= yes
SUP= /usr/local/bin/cvsup
SUPFLAGS= -g -L 2
#
# SUPHOST 代表要到哪台 CVSup,請改成離你比較近的 Server。
SUPHOST= cvsup7.tw.FreeBSD.org
#
# 如果你是用 -stable,請用 stable-supfile (目前的 -stable 是 4.7)
# 如果你是用 -current,請用 standard-supfile (目前的 -current 是 5.0)
SUPFILE= /usr/share/examples/cvsup/stable-supfile
#SUPFILE= /usr/share/examples/cvsup/standard-supfile
PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile
* 檢查 sbase
如果你當初安裝的時候沒有裝 sys -> base 這個部分的話,你可以用 /stand 下
面的 sysinstall (建議就用這種方法)。
* 先安裝好 old source ports (雖然非必要,但強烈建議)
因為 cvsup 時會吃掉 Server 許多的 resource,為了避開大量 checkout 的動
作造成 Server 負荷過重,我們建議把舊的 source 以及 ports 先裝好。
而且這樣對於用數據機的 user 而言,會比較省時間。
你可以用 /stand/sysinstall 把 source 跟 ports 裝好。
* make update
如果上面的步驟都做好,以後要更新 source tree/ports tree 的話,請到
/usr/src 下面 make update 吧:
cd /usr/src
make update
然後它就會開始跑。跑完以後就會有最新的 source & ports。
* make world
*請注意* 接下來的東西,請詳細閱讀 /usr/src/UPDATING,以這個檔案裡面說的
為準!!!
在 make world 前,請先看看 /usr/src/UPDATING,以及 Mailing list 上面的
-current (如果你是玩 current) 或 -stable (如果你是玩 stable),另外有時
候也會出現在 -questions。
一般沒有什麼大變動的話,打 make world 就可以了:
make -j2 world > /tmp/world 2>&1 & (如果你用的是 sh/bash)
make -j2 world >& /tmp/world & (如果你用的是 csh/tash)
-j 後面接的數字建議用 CPU 的個數加一就可以了,也就是如果只有一顆 CPU
時,我們建議用 -j2,兩顆 CPU 時,建議用 -j3。
如果你想要看 make world 的情況,打 tail -F /tmp/world 就可以了。
* edit your kernel config file
我們常常會先把 GENERIC 這個檔案 cp 一份到 /usr/local/etc 下面,並且
ln 一份到 /usr/src/sys/i386/conf 下面,然後再修改它:
cp /usr/src/sys/i386/conf/GENERIC /usr/local/etc/GSLIN
ln -s /usr/local/etc/GSLIN /usr/src/sys/i386/conf/GSLIN
那個 GSLIN 是我的機器名字 (我習慣用機器名字),你可以選你要的名字。
接下來你可以用你喜歡用的 editor 修改 GSLIN 這個檔案。(像是 joe、vi、ee
等等,但是不要用 ve,它會把 tab 展開成 space)
* make kernel
在 *一般的情況* 下,make world 完後就 make kernel 吧:
*請注意* 請詳細看 /usr/src/UPDATING 的說明!!!
cd /usr/src
make KERNCONF=GSLIN buildkernel
make KERNCONF=GSLIN installkernel
上面這三行也可以化簡為下面這兩行:
cd /usr/src
make KERNCONF=GSLIN kernel
當然,如果你如果更懶惰的話,你可以把 KERNCONF 放到 /etc/make.conf:
KERNCONF= GSLIN
這樣你以後就可以只用下面的指令 make kernel:
cd /usr/src
make kernel
當然,舊的方法 (許多市面上面的書應該都還是舊的方法) 也是可以用,但是
我們不保證用不會有事情:
cd /usr/src/sys/i386/conf
config GSLIN
cd ../../compile/GSLIN
make depend all install
* mergemaster
做完 make world & make kernel 後,有時候 /etc 下面的東西也會變更,這
時候就要跑 mergemaster 把 /usr/src/etc 的檔案跟 /etc 的檔案做同步的
動作。
mergemaster
然後請照他的說明做 :)
通常就是一直選 'i',當然,下面的這幾個檔案你不應該選 'i':
csh.* (csh/tcsh login 的時候會參考到的檔案)
group (存放 group 相關的資料)
inetd.conf (你的 telnet、ftp... 各種相關的服務設定)
master.passwd (存放你帳號相關的資料)
如果有你自己有改過一些設定檔,那麼應該要手動更新。舉個例子,如果你有
改過 /etc/services (通常是架 BBS 的時候會改到),那麼你就需要手動更新
這個檔案。
* Others
如果你有任何的建議,請 mail 給我:[email protected],謝謝。