更新 FreeBSD 6.3-STABLE 兩三事

某天 NotExist 在 irc 說他在 installworld 的時候發生了

14:02 < @NotExist> ————————————————————–
14:02 < @NotExist> >>> Installing everything
14:02 < @NotExist> ————————————————————–
14:02 < @NotExist> cd /usr/src; make -f Makefile.inc1 install
14:02 < @NotExist> ===> share/info (install)
14:02 < @NotExist> ===> include (install)
14:02 < @NotExist> creating osreldate.h from newvers.sh
14:02 < @NotExist> touch: not found
14:03 < @NotExist> *** Error code 127
14:03 < @NotExist> 就爆炸了orz…

這個時候有很多答案出現,像是 mergemaster 有沒有乖乖做,不過經由 google 大神的指引之後,我們發現這個問題根本就有列在 FreeBSD 官方的 FAQ 啦,見 5.33. Why does buildworld/installworld die with the message “touch: not found”?

不過就算跑了 adjkerntz -i 好像還是一樣,結果 NotExist 索性給我機器的帳號,讓我實際進來試試看。因為 handbook 教的好,所以我就按照 23.4 Rebuilding “world” 的標準流程做了一次。

#rm -rf /usr/obj
#cd /usr/src
#make buildworld

結果早上到了公司一看,咦!

===> kerberos5/tools/asn1_compile (all)
cd /usr/src/kerberos5/tools/asn1_compile/../make-roken && make
cc -O2 -pipe -I/usr/src/kerberos5/tools/asn1_compile/../../../crypto/heimdal/lib/roken -I/usr/src/kerberos5/tools/asn1_compile/../../../crypto/heimdal/lib/asn1 -I. -DHAVE_CONFIG_H -I/usr/src/kerberos5/tools/asn1_compile/../../include -DINET6 -I/usr/obj/usr/src/tmp/legacy/usr/include -c /usr/src/kerberos5/tools/asn1_compile/../../../crypto/heimdal/lib/asn1/gen.c
In file included from ./roken.h:61,
from /usr/src/kerberos5/tools/asn1_compile/../../../crypto/heimdal/lib/asn1/gen_locl.h:51,
from /usr/src/kerberos5/tools/asn1_compile/../../../crypto/heimdal/lib/asn1/gen.c:34:
/usr/include/resolv.h:320: error: syntax error before “ns_tsig_key”
*** Error code 1

結果這個問題的資料少得可憐,只有日本的留言板留下了相關的資訊。像是更新 src-tree 之類的建議就不用說了,砍掉 obj 重練這種方法我都做過了。不過從錯誤訊息來看,這個問題其實很明顯,/usr/include/resolv.h 對於 ns_tsig_key 這個東西感到不舒服,而 ns_tsig_key 定義在 /usr/include/arpa/nameser.h 裡,結果系統的 namser.h 卻沒有 ns_tsig_key 的相關定義,你可以參考 Revision 1.16.14.1 和 1.16 的 diff,所以我就很大膽的

cp /usr/src/include/arpa/nameser.h /usr/include/arpa/nameser.h

這樣的確奏效了,原本錯誤的地方也可以很順利的編過,不過之後沒多久又遇到了奇怪的問題

Change begemotBridgeBaseName > bridge_oid.h
line 31: ‘(‘ expected at begin of node
context: ” TruthValue ENUM (
*** Error code 1
Stop in /usr/src/usr.sbin/bsnmpd/modules/snmp_bridge.

根據這邊的說法來看,這是因為系統的 gensnmptree(1) 比較舊,所以會發生這個問題,我們只要預先將新版的 gensnmptree(1) 放進 base 就沒事了。

#cd /usr/src/usr.sbin/bsnmpd/gensnmptree/
#make && make install

總之,希望這些資料對於遇到相同狀況的人有所幫助。順道一提,在舊機器 make buildworld 還真久阿……

2 Replies to “更新 FreeBSD 6.3-STABLE 兩三事”

Leave a Reply

Your email address will not be published. Required fields are marked *