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 リポジトリをローカルに作成する方法について説明します。 さらに Subversion を利用するための情報についても紹介します。

A.4.2. ルート SSL 証明書

security/ca_root_nss をインストールすることで、 Subversion は、 HTTPS リポジトリサーバを検証できます。 ルート SSL 証明書は、 port からインストールできます。

# cd /usr/ports/security/ca_root_nss
# make install clean

または package からインストールしてください。

# pkg install ca_root_nss

A.4.3. Svnlite

FreeBSD には、Subversion より軽い svnlite がインストールされています。 Subversion の port または package は、 Python もしくは Perl API が必要な時や、 最新の Subversion を使用したい時のみ必要となります。

通常の Subversion と、 svnlite との違いは、 使用する時のコマンド名が異なるだけです。

A.4.4. インストール

svnlite を利用できない場合や、 フルバージョンの Subversion を使いたいのであれば、 事前に Subversion をインストールしておく必要があります。

Subversion は Ports Collection からインストールできます。

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

package を使って Subversion をインストールすることもできます。

# pkg install subversion

A.4.5. 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 https://svn.FreeBSD.org/repository/branch lwcdir

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

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

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

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

以下の例では、Ports Collection を HTTPS プロトコルを使って、 FreeBSD リポジトリからチェックアウトします。 そしてそれらは、 /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.6. Subversion ミラーサイト

FreeBSD Subversion リポジトリは、

svn.FreeBSD.org

です。これは、公にアクセス可能なミラーネットワークで、 GeoDNS を用いて適切なバックエンドサーバを選択しています。 ブラウザを用いて FreeBSD の Subversion リポジトリを参照するには、https://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 を使ってください。

廃止予定のサーバ名がいまだ利用されている環境では、 SHA1 および SHA256 フィンガープリントは以下のどれかになるでしょう。

ハッシュフィンガープリント
Legacy-SHA11C:BD:85:95:11:9F:EB:75:A5:4B:C8:A3:FE:08:E4:02:73:06:1E:61
Legacy-SHA1F6:44:AA:B9:03:89:0E:3E:8C:4D:4D:14:F0:27:E6:C7:C1:8B:17:C5
Legacy-SHA25647:35:A9:09:A3:AB:FA:20:33:36:43:C5:1A:D6:E6:FB:EB:C0:C0:83:37:D4:46:9C:A0:AB:89:7F:C2:9C:4C:A3
Legacy-SHA25648:3C:84:DB:7C:27:1B:FA:D5:0B:A0:D7:E0:4C:79:AA:A3:8E:A3:FA:84:E6:32:34:7D:EB:30:E6:11:01:CF:BE

これらの古い証明書のフィンガープリントが使われているのを見かけたら、 廃止予定のサーバ名が使われている可能性があります。

A.4.7. より詳しい情報

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

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

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

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