A.4. Subversion を使う

A.4.1. はじめに

2012 年 7 月から、FreeBSD はすべてのソースコード、ドキュメント、Ports Collection を管理するメインのバージョン管理システムに Subversion を使っています。

注記:

一般的には Subversion は開発者向けのツールです。 大部分のユーザは、FreeBSD のベースシステムのアップデートに freebsd-update (「FreeBSD Update」)、 Ports Collection のアップデートには portsnap (「Ports Collection の利用」) を使うべきでしょう。

この章では、FreeBSD システムへの Subversion のインストール方法および、 FreeBSD リポジトリをローカルに準備する方法について説明します。 また、利用可能な FreeBSD Subversion ミラーの一覧および、 Subversion を利用するための情報についても紹介します。

A.4.2. インストール

リポジトリの中身をチェックアウトできるよう、事前に Subversion をインストールしておく必要があります。 もし、すでに ports ツリーが用意してあれば、 以下のようにして Subversion をインストールできます。

# cd /usr/ports/devel/subversion
# make install clean

もし ports ツリーを利用できなければ、package から Subversion をインストールできます。

# pkg_add -r subversion

もし、packages の管理に pkgng を使っているのであれば、かわりに以下のようにして Subversion をインストールできます。

# pkg install devel/subversion

A.4.3. Subversion の実行

svn コマンドを使って、 必要なリポジトリのソースコードを以下のようにしてダウンロードします。 このディレクトリにあるファイルを ローカル作業コピー と呼びます。

警告:

checkout を使う前に、 ローカルディレクトリを移動するか削除してください。

svn 以外の方法で用意されたディレクトリでチェックアウトすると、 すでに存在するファイルと、 リポジトリから持ってきたファイルとの間で衝突が起きてしまいます。

Subversion では、リポジトリの指定に protocol://hostname/path 形式の URL を用います。 以下に記載されているように、 ミラーサイトは異なる複数のプロトコルに対応しています。 アクセスする FreeBSD リポジトリは、パス (path) の最初で指定します。 リポジトリは 3 つあります。 base は FreeBSD ベースシステムのソースコード、 ports は Ports Collection、 そして doc はドキュメントのリポジトリです。 たとえば、 svn://svn0.us-east.FreeBSD.org/ports/head/ という URL は、svn プロトコルによる svn0.us-east.FreeBSD.org ミラー上の ports リポジトリのメインブランチを示しています。

以下のように入力して、リポジトリからチェックアウトしてください。

# svn checkout svn-mirror/repository/branch lwcdir

ここで、repository, branch および root は以下のとおりです。

  • svn-mirror は、 Subversion ミラーサイト のひとつの URL です。

  • repository には、 プロジェクトのリポジトリ、すなわち base, ports, または doc のどれかひとつを指定します。

  • branch は、使うリポジトリによります。 ports および doc では、ほとんどの変更が head ブランチで行われます。 base リポジトリでは、head ブランチで -CURRENT の最新バージョンを管理しています。 -STABLE ブランチの最新バージョンは、 8.xstable/8, 9.xstable/9, そして 10.xstable/10 で管理しています。

  • lwcdir は、 指定したブランチの中身が置かれるターゲットのディレクトリです。 通常 ports/usr/portsbase/usr/src、 そして doc では /usr/doc と指定します。

以下の例では、Ports Collection を western US リポジトリから HTTPS プロトコルを使って、チェックアウトします。 そしてそれらは、 /usr/ports のローカル作業コピーに置かれます。 もし /usr/ports がすでに存在して、 それが svn によって生成されたものでなければ、 チェックアウトする前に、名前を変更するか削除してください。

# svn checkout https://svn0.us-west.FreeBSD.org/ports/head /usr/ports

初めてチェックアウトする際には、 リモートリポジトリのすべてのブランチをダウンロードするので時間がかかります。 どうぞ我慢してください。

初めてのチェックアウト後は、 以下を実行することでローカル作業コピーをアップデートできます。

# svn update lwcdir

この例で作成された /usr/ports をアップデートするには、 以下のようにしてください。

# svn update /usr/ports

アップデートはチェックアウトにくらべ、 変更点のあるファイルのみが転送されるので高速です。

チェックアウト後、ローカル作業コピーをアップデートするもうひとつの方法は、 /usr/ports, /usr/src または /usr/doc ディレクトリの Makefile で提供されています。 SVN_UPDATE を設定して update ターゲットを使ってください。 たとえば、/usr/src をアップデートするには、以下のようにしてください。

# cd /usr/src
# make update SVN_UPDATE=yes

A.4.4. Subversion ミラーサイト

すべてのミラーはすべてのリポジトリを持っています。

FreeBSD Subversion サーバのマスタである svn.FreeBSD.org は、 公には読み出し専用でアクセスできますが、 将来的には変更される予定ですので、 オフィシャルミラーを使うことが推奨されます。 ブラウザを用いて FreeBSD の Subversion リポジトリを参照するには、http://svnweb.FreeBSD.org/ を利用してください。

注記:

FreeBSD の Subversion ミラーのネットワークは、 まだ初期の段階にあるので、今後変更されることがあります。 以下のミラー一覧を不変なものとは考えないでください。 特に、サーバの SSL 証明書は、 いずれかの時点で変更になるでしょう。

名前プロトコル位置SSL フィンガープリント
svn0.us-west.FreeBSD.orgsvn, http, httpsUSA, カリフォルニアSHA1 1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61
svn0.us-east.FreeBSD.orgsvn, http, https, rsyncUSA, ニュージャージSHA1 1C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61
svn0.eu.FreeBSD.orgsvn, http, https, rsyncEurope, UKSHA1 39:B0:53:35:CE:60:C7:BB:00:54:96:96:71:10:94:BB:CE:1C:07:A7
svn0.ru.FreeBSD.orgsvn, http, https, rsyncロシア、モスクワSHA1 F6:44:AA:B9:03:89:0E:3E:8C:4D:4D:14:F0:27:E6:C7:C1:8B:17:C5

HTTPS は推奨されているプロトコルです。 他のコンピュータが FreeBSD ミラーを装う (一般的には マン・イン・ザ・ミドル 攻撃として知られています) ことや、もしくは、 エンドユーザに対し好ましくない内容を送りつけようということに対し保護を行います。

HTTPS ミラーへの最初の接続の際には、 サーバの フィンガープリント の確認を求められます。

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?

フィンガープリントを上の表の一覧のものと照合してください。 フィンガープリントが一致したら、 サーバのセキュリティ証明書を一時的 (permanently) もしくは恒久的 (temporarily) に受け入れてください。 一時的な認証であれば、 サーバとの一回のセッションで有効期限が切れるため、 次回の接続時にはもう一度検証が行われます。 恒常的な認証を選んだ場合には、認証のための証明書が ~/.subversion/auth/ に保存され、 有効期限が切れるまでは、 フィンガープリントの確認は求められません。

ファイアウォールまたは他の問題のため、https を使えなければ、転送速度がより少し早い svn を使ってください。 両方を使えない場合には、 http を使ってください。

A.4.5. より詳しい情報

Subversion の利用に関する他の情報は、 Version Control with SubversionSubversion Documentation といった Subversion Book をご覧ください。

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、 ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。

本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。