Gea-Suan Lin's BLOG

Monday, January 09, 2006

管理一堆 FreeBSD 的方法

本來是放在 的,想了一下還是這邊也放一份好了,如果有什麼意見的話麻煩提供一下 :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 可以試看看這種方式。