升級到 7-CURRENT

最近因為看 ZFS 在 mailing list 的狀況似乎差不多穩定了, 所以就試著開始玩玩 7-Current。在把原先的 6.1 升級到 7-Current 的過程中有遇到一些問題並解決之後,在這裡順便把這些問題一一列出來作為一個記錄:

CVSUP

修改 /etc/make.conf, 將
SUPFILE= /usr/share/examples/cvsup/standard-supfile
或是複製 standard-supfile 到 /usr/local/etc 然後依照自己的需求修改,重點在於 *default 的部份,把 releng tag 改成 . (太久沒用, 還把 tag 打成 HEAD 一直試都失敗)
*default release=cvs tag=.
然後就可以開始 make update

pppoe, kernel module

升級完成後要使用網路卻發現 pppoe 沒有連線成功, 而且又沒有什麼錯誤訊息,後來執行 ppp, 手動輸入 ppp.conf 裡的指令, 然後執行 ‘dial’, 才看到錯誤訊息, 原來是缺了一些 kernel module,剛好我因為剛升級, 所以編 kernel 是用 NO_MODULES=yes ,由於 pppoe 用 netgraph 來處理, 所以以下選項這些可以直接編進去 kernel {netgraph, ng_socket, ng_ether, ng_pppoe}

options NETGRAPH
options NETGRAPH_ETHER
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET

portupgrade/portdb

當更新 portupgrade 套件時, 有時會發生 package db 格式改變的問題,這時候就直接把 db (/usr/ports/INDEX-*.db, /var/db/pkg/pkgdb.db)砍掉, 重新建一次就好了(用 pkgdb -fu)

  • pkgdb 是用來管理 /var/db/pkg/pkgdb.db 的工具, -f: force, -u: update
  • portsdb 是用來管理 /usr/ports/INDEX* 的工具, -u: update INDEX-*.db, -U fetch INDEX

更新 X.org (從 6.9 到 7.2)

主要是依照 /usr/ports/UPDATING 裡 20070519 的步驟操作,由於有許多套件都改名字了,而且少部份版號規則也有更改, 所以理論上用 portupgrade -a 應該會自動把舊的一起移除,可是我由於操作順序的問題, 變成同時安裝了 6.9和7.2 的套件,所以後來還是要回來自己處理一次。
以幾個相關的套件為例(也可以參考 /usr/ports/MOVED)

  • x11/xorg-clients -> x11/xorg-apps
  • x11/xorg-manpages -> 無
  • x11/xorg-server-6.9.0 -> x11/xorg-server-1.2.0

Ports 在 20061014 把安裝位置由 X11BASE(/usr/X11R6) 移到 LOCALBASE (/usr/local),使得有許多設定也必須要跟著修正,或是升級一半的情形下也要特別注意,像我就遇到中文字型出不來的情況,也是字型路徑有誤造成的。造成的。

firefox

在升級 firefox 從 1.5 -> 2.0 的時候,有個 denpendency 是這樣的 。

glitz <- cairo <- pango <- gtk20 <- firefox

可是在 ports 裡面 cairo 跟 glitz 的 dependency 似乎沒弄好,而 pango 可能因為版本差太多,所以沒辦法直接用 portupgrade 升上去,所以只好把這幾個個別升級或重新安裝就可以了。
還有 nspr (4.6.3 -> 4.6.7): 應該是用到新版才有的 definition,導致 link failure, 解決方法也是特別執行 portupgrade nspr。
另外每次重新執行 portupgrade firefox 以後,預設都會先 clean 一次,可能是 firefox tarball 比較大,所以造成一開始會花一段時間去做解開的動作(tar, bunzip, chown),這時可以用 -w (Do not "make clean" before each build.),可以節省一些時間。

講了老半天其實都還沒講到 7-Current 的功能, 都還在套件上打轉

Comments are closed.