Monthly Archive for May, 2006

jail(8) 裡面 make world

前陣子因為某些因素,不想升級 host 的 world,所以就直接在 jail 裡面 buildworld/installworld,大致上沒有甚麼問題,要注意的地方是在 host 端,要把底下這個 sysctl 打開

security.jail.chflags_allowed

否則在 installworld 的時候,會沒有辦法把一些有 schg flags 的檔案蓋過去。弄好後,就記得關起來。

screen, box drawing, and Unicode

自從換了 UTF-8 環境後,有一個很討厭的問題是 ANSI 的表格線,在 screen 裡面是直接對應到 U+25XX 的 box drawing 字元,而我又改過 screen 跟 locale,把這些字當作雙字寬(ASCII ART 之類的),因此像是 dialog(1) 造出來的對話框(sysinstall 或者 Ports 的 make config),就會亂七八糟。

剛才想了一陣子,好像沒有甚麼兩全其美的辦法,於是只好叫 screen 把表格線用最原始的 +, -, | 來畫,patch 在 http://www.rafan.org/patch/big5/screen/files/patch-poorman-drawing

FreeBSD local ports

前陣子在整理工作站裝的 Ports 跟 patches 的時候,決定自己造造一個 local 的類別,來放這個 patch 過的 ports,好處是很多東西就不用再手動 patch,而且也可以換像是 portsnap(8) 這種好東西。

在做這些東西之前,最好要對 Ports system 有些認識,一些細節的部份我就不多說,可以參考 FreeBSD Porter’s Handbook。首先,要造一個目錄來放 local ports:

mkdir /usr/ports/local

然後,造一個 local/Makefile:

COMMENT = Local ports
SUBDIR += your_port
.include <bsd.port.subdir.mk>

跟 local/Makefile.inc:

PKGNAMEPREFIX?= local-
PKGCATEGORY= local

然後在 ports/Makefile.local 寫:

SUBDIR += local

在 /etc/make.conf 加上:

VALID_CATEGORIES+= local

再來就是你要自己製造你想要的 ports 了,這邊就不多說了。還有一個問題要處理的是 INDEX。如果有用 portupgrade(1) 的話,每次更新過 ports tree 之後,用 portsdb -Uu 來更新一次 INDEX 跟 INDEX.db,這樣子才不會出意外。我知道這個很慢(在 P4-2.8G 的機器大概是 13 分鐘),不高興的話,可以試試看 sysutils/p5-FreeBSD-PortIndex 或者想辦法用 portsanp(8) 的 make_index 弄,這部份可以參考前陣子 -ports@ mailing 上面有過一些討論。