FreeBSD 10.0での/usr/srcアップデート (と10.01へのアップデート)

FreeBSD 9.xまで/usr/srcの入手のために長らくお世話になっていたcvsupが引退し、subversionベースのsvn(svnlite)に変更になりましたが、慣れるまでついやり方を忘れてしまうので自分メモ。
手順はいつも通り、困った時のハンドブックから。

(1) /usr/srcの掃除と初期展開
一番最初は/usr/srcをきれいにするために/usr/srcの下を全て削除。
rm -rf /usr/src とやりたいところだが、zfsで切ってあるので地道に

# cd /usr/src
# rm -rf .* *


(2) 近くのミラーサイトを探す。
ハンドブックのA.6. Subversion ミラーサイトから近くのアメリカ東海岸のサイトを選ぶ。

(3) /usr/srcの展開
ミラーサイトを指定してソースを展開する。今回は10.0のReleaseなので、releng/10.0。

# svnlite checkout https://svn0.us-west.FreeBSD.org/base/releng/10.0 /usr/src

初回はFingerprintの確認があるので良ければ”t” (今回のみ)か”p” (次回以降もOK)のどちらかで受け入れる。

# svnlite checkout https://svn0.us-west.FreeBSD.org/base/releng/10.0 /usr/src
Error validating server certificate for 'https://svn0.us-west.freebsd.org:443':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
 - The certificate hostname does not match.
Certificate information:
 - Hostname: svnmir.ysv.FreeBSD.org
 - Valid: from Jul 29 22:01:21 2013 GMT until Dec 13 22:01:21 2040 GMT
 - Issuer: clusteradm, FreeBSD.org, (null), CA, US (clusteradm@FreeBSD.org)
 - Fingerprint: 1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61
(R)eject, accept (t)emporarily or accept (p)ermanently? p
A    kerberos5
A    kerberos5/doc
A    kerberos5/lib
A    kerberos5/lib/libheimbase
A    kerberos5/lib/libheimntlm
A    kerberos5/lib/libhx509
A    kerberos5/lib/libroken
...

(3) ソースツリーの更新
2回目以降は以下でOK。

# svnlite update /usr/src

(4) FreeBSD10.01へのリポジトリ変更
こんな感じで。

# svnlite switch ^/releng/10.1 /usr/src

しばらくするとソースツリーの更新が始まって、終わったらこんな感じになりました。

# svnlite info /usr/src
Path: .
Working Copy Root Path: /usr/src
URL: https://svn0.us-west.freebsd.org/base/releng/10.1
Relative URL: ^/releng/10.1
Repository Root: https://svn0.us-west.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 274647
Node Kind: directory
Schedule: normal
Last Changed Author: gjb
Last Changed Rev: 274401
Last Changed Date: 2014-11-12 04:52:24 +0900 (水, 12 11月 2014)

通常ならここからmake buildkernelとやっていけばいいのですが、実行すると以下の様にエラーが発生。どうやら10.0環境では10.1のソースbuildに使用するtoolが対応していない模様…。

# make buildkernel

--------------------------------------------------------------
>>> Kernel build for GENERIC started on Wed Nov 26 10:31:19 JST 2014
--------------------------------------------------------------
===> GENERIC
mkdir -p /usr/obj/usr/src/sys

--------------------------------------------------------------
>>> stage 1: configuring the kernel
--------------------------------------------------------------
cd /usr/src/sys/amd64/conf;  PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr/obj/usr/src/tmp/legacy/bin:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/obj/usr/src/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin  config  -d /usr/obj/usr/src/sys/GENERIC  -I '/usr/src/sys/amd64/conf' '/usr/src/sys/amd64/conf/GENERIC'
config: illegal option -- I
usage: config [-CgmpV] [-d destdir] sysname
       config -x kernel
*** Error code 64

Stop.
make[1]: stopped in /usr/src
*** Error code 1

Stop.
make: stopped in /usr/src

仕方ないので、一旦freebsd-update -r 10.1-RELEASE upgradeの方法で10.1に上げた後、再度svnlite checkout~で10.1のソースを展開し、buildkernelからやり直しました。

コメントを残す

メールアドレスが公開されることはありません。