2014年3月7日金曜日

FreeBSD で Subversion を使う

現在使用している FreeBSD のバージョンは 8.4 です。すでにバージョン 10.0 も登場している状況のため、そろそろバージョンを 9.2 (執筆時点の FreeBSD 9 の最新リリース)へ引き上げたいと思っていました。

そこで重い腰を上げて /usr/src のソースツリーの更新をすることとしました。今までどおり CVSup で更新しました。

メジャーアップグレードなのでカーネルのビルドオプションも新規に見なおさなければなりません。そこで /usr/src/sys/i386/conf へ移動して、ビルドオプションを設定する GENERIC の内容を見ようとしました。しかし、そこに GENERIC のファイルが見当たりません。どうしたことでしょうか(汗)。

何度も CVSup(csup コマンド使用)を繰り返しましたが変化がありません。そこで試しに現在の 8.4 を指定して CVSup を行なってみると、たしかに GENERIC のビルドオプション ファイルが存在しています。

それならばと言うことで、いっその事、バージョンを 10.0 へ引き上げてみることとしました。しかし結果は 9.2 の時と同様で、GENERIC のファイルが存在しません。

どうも CVSup による更新が終了してしまっているようです。以前から FreeBSD のリポジトリ(ソースコード類)が CVSup から Subversion に変更したというアナウンスがありましたが、とうとう現実として CVSup による更新が出来なくなったようです。

なお ports のツリーについては、portsnap コマンドを使用しているので問題はありませんでした。

そこでずっと使い続けてきた CVSup を離れて Subversion へ移行することとしました。私はほとんど単独で使用することがありませんでしたので、ここに備忘録として記述をすることとしました。

なお portsnapで subversion を使用しているのか、すでに subversion(執筆時点で subversion-1.8.8)はインストール済みでした。また HTTP プロトコルで必要な neon もインストール済みでした。

そこで /usr/src のカーネルのソースツリーを新規にダウンロードしてみることとしました。なお subversion の動作の特性から subversion によって新規にソースツリーを作り直さなければならないそうです。そこで現状のソースツリーをすべて削除すて新規に作ることとしました。
# rm -Rf /usr/src
# mkdir /usr/src
新しい /usr/src へ FreeBSD 9.2 のカーネルソースコードをダウンロードします。
# svn checkout https://svn0.us-west.FreeBSD.org/base/releng/9.2 /usr/src
しかし動作してくれません。「URL スキームを認識できません」としてエラーが出てきます。

ネット上で情報を検索してみると、subversion が neon を見つけられないときに、このエラーが発生するようです。

そこで subversion のビルドオプションを確認してみました。やはり http や https プロトコルでの通信を行う設定となっていませんでした。この部分のオプション「SERF」を有効にして再ビルドしました。
# cd /usr/ports/devel/subversion
# make config





再ビルドの結果、無事 /usr/src へカーネルのソースコードをダウンロードすることができました。なおダウンロードの開始前に FreeBSD のサーバのフィンガープリントの確認が行われました。「p」で常に認証するで次回以降の更新で再確認がなくなります。

# svn checkout https://svn0.us-west.FreeBSD.org/base/releng/9.2 /usr/src
'https://svn0.us-west.freebsd.org:443' のサーバ証明書の認証中にエラーが発生しました:
 - 証明書は信頼のおける機関が発行したものではありません。証明書を手動で認証
   するためにフィンガープリントを用いてください!
証明書情報:
 - ホスト名: svnmir.ysv.FreeBSD.org
 - 有効範囲: Jul 29 22:01:21 2013 GMT から Dec 13 22:01:21 2040 GMT まで
 - 発行者: clusteradm, FreeBSD.org, CA, US(clusteradm@FreeBSD.org)
 - フィンガープリント: 1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61
拒否しますか (R)、一時的に承認しますか (t)、常に承認しますか (p)?

なお subversion のコマンドを使用するときには、ソースコードが第三者による攻撃を受けないように https プロトコルが推奨されています。しかし上記のように subversion のビルドオプションの見直しでもエラーが発生する場合には、通信プロトコルを svn へ変更して試みてください。
# svn checkout svn://svn0.us-west.FreeBSD.org/base/releng/9.2 /usr/src

現在ダウンロードしてあるカーネルのソースコードは最新版となっています。今後アップデートが行われた時には、次の二つの方法のいずれかで行うそうです。
その1(標準)
# svn update /usr/src

その2(/usr/src のように Makefile に svn 更新の記述がある場合)
# cd /usr/src 
# make update SVN_UPDATE=yes
(その2の方法は、ソースツリーの中にある Makefile の中に subversion によるソースツリーの更新方法が記述されているために make コマンドで更新ができるそうです。)

こうして新しくダウンロードした FreeBSD 9.2 のカーネルのソースコードの中のビルドオプションのファイル /usr/src/sys/i386/conf/GENERIC を確認すると確かに存在しました。

これでようやくカーネルビルドが出来そうです。

今日はすでにこの subversion でのダウンロードだけで疲れてしまいましたので、明日にでもカーネルのビルドを開始したいと思っています。

参考URL
FreeBSD マニュアル -- A.5. Subversion を使う

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。