本來是放在 Gea-Suan Lin's BLOG for Work 的,想了一下還是這邊也放一份好了,如果有什麼意見的話麻煩提供一下 :p
以前在計中弄二三十台 FreeBSD 的時候就是用 screen + portupgrade 一次把幾十台機器升級,升級完整個重開機就好了,不用管什麼東西升級完要重跑。安裝新軟體如果需要指定 WITH_BLAH=yes
或是其他的東西,記得到每台上面的 /usr/local/etc/pkgtools.conf
改一下。(以前的 ports 還沒有 OPTIONS
這個功能)
這個模式在我一個人管的時候很好,但是當要傳承的時候就糟糕了:要瞭解這種方法的人大概都需要玩過一陣子 FreeBSD,知道只靠系統基本的套件管理是不夠的,才會有感覺。D2 上面是到了 ronnywang 才接下去。現在在交大資工當系計中助教也遇到同樣的問題。
一種想法是利用 package 更新 (這個在將 ccbsd*.csie.nctu.edu.tw 重灌成 FreeBSD 6 已經實行一段時間了),但目前最大的問題在於使用 package 會:
- 無法善用每台機器的 CPUTYPE。
- 某些 ports 無法產生 package,像是 screen (技術問題)、jdk (授權問題)。
另外,有時候會發生套件安裝好,但是無法產生 package 的慘劇。這個方法其實問題還蠻多的。
我昨天又想到了另外一個作法,我不知道可不可行,不過看起來會比原來的方法好,但是重新安裝機器時的速度一定會比 package 的方法慢:
- 每天在 ccduty 上產生 package list (像是
sysutils/screen
這種字串,一行一個),排序後塞入 svn repository。另外將/usr/local/etc/pkgtools.conf
也塞進去。 - 要安裝新機器的時候,先將
/usr/local/etc/pkgtools.conf
抓回來,再用cat ports-list.txt | xargs portinstall
把軟體安裝進去。
也許 ccbsd8 可以試看看這種方式。