Chapter 2. どこからpkgsrcを得て、どうやって最新に保つか

Table of Contents

2.1. pkgsrc を初めて入手する
2.1.1. tar ファイル
2.1.2. anonymous CVS 経由
2.2. pkgsrc を最新の状態に保つ
2.2.1. tar ファイルを使用
2.2.2. CVS 経由

ファイルをダウンロードして展開する前に、 ファイルを展開する場所を決めておく必要があります。 pkgsrc を root ユーザーとして使う場合、pkgsrc は通常は /usr/pkgsrc にインストールされます。 ソースおよびバイナリーパッケージは、 ファイルシステム中のどこでも好きな場所にインストールしてかまいませんが、 シェルその他のプログラムにとって特別な意味を持つスペースなどの文字は、 パス名に含めてはいけません。 アルファベット、数字、下線とダッシュだけを使うのが安全な方法です。

2.1. pkgsrc を初めて入手する

pkgsrc のファイルをダウンロードする前に、 current 枝と stable (安定版) 枝のどちらを使うのかを決めます。 後者は、current 枝から四半期ごとに分岐するもので、 セキュリティー上の更新に限って修正されます。 stable 枝の名前は、年と四半期を組み合わせたもので、たとえば 2009Q1 となります。

次に、pkgsrc をどの方法で ダウンロードするかを決めます。方法としては、tarファイル、 CVS経由があります。ここでは両方とも説明します。

2.1.1. tar ファイル

pkgsrc のあらゆるファイルの一次配布元は ftp://ftp.NetBSD.org/pub/pkgsrc/ です。 目的別に多数のサブディレクトリーがありますが、 それについては Appendix C, pkgsrc FTP サーバーのディレクトリー配置 で詳しく説明しています。

current 枝の tar ファイルは、 current ディレクトリー内にあり、ファイル名は pkgsrc.tar.gz です。 このファイルは、毎日、自動生成されます。

安定版の 2009Q1 枝の tar ファイルは、 pkgsrc-2009Q1 ディレクトリー内にあり、ファイル名は同じく pkgsrc-2009Q1.tar.gz です。

安定版 pkgsrc の tarball をダウンロードするには、以下のコマンドを実行します。

$ ftp ftp://ftp.NetBSD.org/pub/pkgsrc/pkgsrc-20xxQy/pkgsrc-20xxQy.tar.gz

ここで、pkgsrc-20xxQy は、 ダウンロードする安定版の枝名にします。たとえば、 pkgsrc-2009Q1 になります。

ダウンロードしたら、以下のようにして展開します。

$ tar -xzf pkgsrc-20xxQy.tar.gz -C /usr

こうすると、/usr/pkgsrc/ ディレクトリーが作られ、 /usr/pkgsrc/ 以下に全パッケージのソースが置かれます。

pkgsrc-current をダウンロードするには、以下のコマンドを実行します。

$ ftp ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz

2.1.2. anonymous CVS 経由

pkgsrc の stable 枝名を指定して取得するためには、以下のコマンドを実行します。

$ cd /usr && cvs -q -z3 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -r pkgsrc-20xxQy -P pkgsrc

ここで、pkgsrc-20xxQy は、 チェックアウトする stable 枝名にします。たとえば pkgsrc-2009Q1 になります。

こうすると、/usr/ ディレクトリーに pkgsrc/ ディレクトリーが作られ、 /usr/pkgsrc/ 以下に全パッケージのソースが置かれます。

pkgsrc current を取得するには、以下のコマンドを実行します。

$ cd /usr && cvs -q -z3 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P pkgsrc

利用可能な CVS ミラーサイト一覧から、もっとも速いものを選んで使ってください。

rsh のエラーメッセージが出た場合は、たとえば以下のようにして、環境変数 CVS_RSH を設定する必要があります。

$ cd /usr && env CVS_RSH=ssh cvs -q -z3 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P pkgsrc

CVS_RSH=ssh の設定を今後も有効なままにする方法は、お使いのコマンドシェルのドキュメンテーションをご覧ください。 Bourne シェルの場合は、この設定を以下のとおりユーザーの .profile に、 またはより大域的に /etc/profile に書くことができます。

# set CVS remote shell command
CVS_RSH=ssh
export CVS_RSH

CVS は、標準状態では、多くの人の望む挙動をしてくれません。 しかし、 以下の内容の .cvsrc というファイルをホームディレクトリーに置いておけば、 標準での挙動を変えることができます。このファイルを置いておけば、 あなたの悩みや、余計なバグ報告もなくなるでしょうから、 そうすることを強くおすすめします。 このファイルに関する説明は、 CVS のドキュメンテーションにあります。

# recommended CVS configuration file from the pkgsrc guide
cvs -q -z3
checkout -P
update -dP
diff -upN
rdiff -u
release -d

2.2. pkgsrc を最新の状態に保つ

pkgsrc を最新の状態に保つ方法としては、CVS をおすすめします (最初に tar ファイルを使ってインストールした場合でも、更新には CVS を使えます)。 CVS を使えば、tar ファイルをあらためてダウンロードした場合にくらべ、 帯域やハードディスクの負荷を減らすことができます。

2.2.1. tar ファイルを使用

Warning

tar ファイルを使って更新する場合は、まず、 これまで使っていた pkgsrc ディレクトリーを完全に削除する必要があります。 さもないと、それまでの間に pkgsrc から削除されたファイルがローカルディスクに残ったままになり、 不整合が生じてしまいます。 これまで使っていたファイルを消す場合、pkgsrc のファイルに独自に施した変更が、 更新後にすべて失われてしまいます。 このため、CVS を使った更新を強くおすすめします。

なお、distfile とバイナリーパッケージは、標準ではいずれも pkgsrc ツリー内に置かれますので、pkgsrc ツリーを更新する前に退避させておくことを忘れないでください。 DISTDIRPACKAGES を設定して、標準のディレクトリーとは別の場所を pkgsrc が使うような構成にすることもできます。 詳細はChapter 5, pkgsrc を設定するをご覧ください。

tar ファイルを使って pkgsrc を更新するためには、 初回の入手時と同様に、tar ファイルをダウンロードします。 次に、pkgsrc ディレクトリーに独自の変更を何も加えていないことを確認します。 pkgsrc ディレクトリーを削除してから、新しい tar ファイルを展開します。これで完了です。

2.2.2. CVS 経由

CVS を使って pkgsrc を更新するためには、pkgsrc ディレクトリーへ移動して cvs を実行します:

$ cd /usr/pkgsrc && cvs update -dP

rsh がエラーメッセージを出す場合は、前述の新規取得時と同様に、環境変数 CVS_RSH を設定する必要があります。たとえば以下のようにします。

$ cd /usr/pkgsrc && env CVS_RSH=ssh cvs up -dP

2.2.2.1. pkgsrc の別の枝に移る

pkgsrc の更新時、CVS プログラムはそれまで使っていた枝をそのまま追いつづけます。 しかし、何らかの理由で stable 枝から current 枝に移りたい場合は、 update キーワードの後に -A オプションを追加して current に移ることができます。 current 枝から stable 枝に戻るには、 -rpkgsrc-2009Q3 オプションを追加します。

2.2.2.2. 私がおこなった変更は、更新時にどうなるか?

pkgsrc の更新時、CVS プログラムは CVS リポジトリーに登録されたファイルだけに手を加えます。 このため、あなたが独自に作成したパッケージは、変更されずに残ります。 あなたが CVS の管理下にあるファイルを独自に修正している場合、 CVS による更新時には、あなた独自の変更と他の人による (CVS リポジトリーに反映されている) 変更を統合しようとします。 詳細は、CVS のマニュアルの update の章をご覧ください。