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 install devel/subversion

A.4.3. Subversion の実行

ローカルディレクトリにソースコードをダウンロードするには、 svn コマンドを使ってください。 このディレクトリにあるファイルを、 ローカル作業コピー と呼びます。

警告:

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

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

Subversion では、リポジトリの指定に protocol://hostname/path 形式の URL を用います。 以下に記載されているように、 ミラーサイトは異なる複数のプロトコルに対応しています。 アクセスする FreeBSD リポジトリは、パス (path) の最初で指定します。 リポジトリは 3 つあります。 base は FreeBSD ベースシステムのソースコード、 ports は Ports Collection、 そして doc はドキュメントのリポジトリです。 たとえば、 https://svn.FreeBSD.org/ports/head/ という URL は、https プロトコルによる 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://svn.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 は、 公にアクセス可能なミラーネットワークで、 GeoDNS を用いて適切なバックエンドサーバを選択しています。 ブラウザを用いて FreeBSD の Subversion リポジトリを参照するには、http://svnweb.FreeBSD.org/ を利用してください。

注記:

FreeBSD の Subversion ミラーは、以前はこの節に記載されている自己署名 SSL 証明書を用いていました。 2005 年 7 月 14 日から、すべてのミラーは、security/ca_root_nss port がインストールされている場合には、 Subversion が認識する公式の SSL 証明書を使うようになりました。 昔の自己署名の証明書はまだ利用可能ですが、推奨されません。

security/ca_root_nss port がインストールされていない場合に、 SHA1 および SHA256 フィンガープリントは以下のようになります。

ハッシュフィンガープリント
SHA1E9:37:73:80:B5:32:1B:93:92:94:98:17:59:F0:FA:A2:5F:1E:DE:B9
SHA256D5:27:1C:B6:55:E6:A8:7D:48:D5:0C:F0:DA:9D:51:60:D7:42:6A:F2:05:F1:8A:47:BE:78:A1:3A:72:06:92:60

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

ファイアウォールまたは他の問題のため、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> まで電子メールを (英語で) 送ってください。