[OpenBSD]

Ports & Packages コレクション


目次


動機

OpenBSD は、それ自身がかなり完全なシステムですが、それでも誰かが追加してくれる ことを期待したくなる多数のソフトウェアがあります。しかしながら、時おり発生する ライセンスの問題や輸出制限の問題と同様、何を含めるかということに関する線引きを どこで行うのかという問題があります。OpenBSD は、小さくて独立した UNIX ライクな オペレーティングシステムとしてサポートされていますので、ものによってはシステム に含めて出荷することができません。

ports & packages コレクションは、OpenBSD で行われている徹底的なセキュリティ監査を通していません。 私たちは packages コレクションの品質を高く保つために努力していますが、残念ながら、堅牢性とセキュリティを 同じレベルで保障できるだけの十分な人的リソースを有していません。

もともと FreeBSD のものを移植した ports コレクションが、このギャップを埋めてくれるでしょう。そのコンセプトは、 それぞれのサードパーティ製ソフトウェアが、以下のことを制御することができる Makefile を持つ、というものです。

この情報は /usr/ports ディレクトリ以下のディレクトリ構造中に 保持されています。

packages は ports のバイナリ版です。コンパイル済の ports が packages であり、 pkg_add(1) を使用してシステムにインストールすることが可能なものです。

packages は、単なる .tgz の集合体のように見えますが、 pkg_add(1) だけが理解する、どのように取り扱う必要があるのかなどの 特別な情報をいくつか持っているかも知れませんので、必ず pkg_add(1) を使用してインストールしなければなりません。 ヒント: packages と単なる .tgz の集合体は、 pkg_info(1) を使用して区別することができます。

Packages の入手

コンパイル済 packages の大規模なコレクションは、ほとんどの 共通アーキテクチャ上で利用可能となっています。 packages の追加は非常に簡単で、 pkg_add pkgname.tgz とします。 もし、いつも同じ配布元 (パッケージリポジトリ) から packages を入手しているのでしたら、 取得の依存性に従って、PKG_PATH をその URL に設定しておいてください。

たとえば、FTP サイトから i386 マシン上の 3.9 リリース用の (依存性を含む) Gimp パッケージをインストールする場合、次のようにします。

    # export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/3.9/packages/i386/
    # pkg_add gimp-2.2.10.tgz

OpenBSD のリリースに合わせた Ports および Packages の更新

2.7 リリースから、ports ツリーにも安定版ブランチが導入されるようになりました。

たとえば、3.9 リリース用の安定版ブランチを入手するには、次のようにしてください。

    $ cd /usr/ports
    $ cvs -q -d anoncvs@some.anon.server:/cvs up -r OPENBSD_3_9 -Pd

2.8 リリース以降では、選択されたバイナリパッケージも 利用可能になっています。 安定版ブランチに対する packages の更新と重要な更新については、 安定版 packages のページ を参照してください。 セキュリティについてのアナウンスが必要な場合には、ports-security メーリングリストに参加してください。

リリースからのパッケージとバグ修正版パッケージとが区別できなくなる 危険性を回避するため、packages が更新された場合には、package の名前は必ず変更されます。

インストール済 Packages の管理

packages(7) マニュアルページには、インストール済 packages の管理の方法や (ファイルが既に存在しているなどの) 衝突の解決、依存性の取り扱い に関する、役に立つ情報が記載されています。

OpenBSD 2.8 の場合、packages を更新するには以下のようにします。

この方法は、依存性の引き金を引くことになるかも知れませんし、更新のために packages の大きなサブセットを消去しなければならなくなるかも知れませんので、やや不便な方法ではあります。

Ports を使用する

使用中のアーキテクチャ用の packages が存在していない場合でも、ports から コンパイルを行うことは可能です。さらに、さまざまな理由から、何でもソースから コンパイルしないと気が済まないユーザもいます。

FTP ミラーサイトのいずれかの pub/OpenBSD/[version] (ここで、[version] はリリースバージョン番号のことです) ディレクトリから リリースバージョンを ftp で取得することができます。 リリースバージョンとは、CDROM で出荷されているバージョンのことで、他のどのような スナップショットよりも入念なテストを経ています。より詳しくは、 ports(7) man ページを参照してください。

Ports ツリーのライフサイクル

ports ツリーは、残りの OpenBSD のツリーと同様、絶えず変化しています。

現在の ports ツリーは、前回のリリースバージョン用には使用できないかも知れません 。これは、典型的には ports を作成するプロセスの、OpenBSD-current のソースツリーに基づくコードを要求するような変更に起因しています。

ports ツリーは単一の実体として動作します。ひとつのディレクトリだけを更新しても、 packages の依存性が、ports ツリーの膨大な部分を更新し、再コンパイルすることを 要求してくるかも知れませんので、動作は保障されません。 ですから、さまざまな問題に対処する準備ができていない場合には、ports-current を追いかけるべきではないということを、強くお勧めします。また、 ports-changes@openbsd.orgtech@openbsd.org のような メーリングリストは非常に参考になることでしょう。

業務用のマシン上では、安定版の ports を追いかけることをお勧めします。 私たちは、問題に対して、ある基準に達するよう、安定版の ports ツリーを維持するよう、 また同様に、バイナリもタイムリーに更新するよう、努めています。

ftp.openbsd.org では、完全なリポジトリを保持していますので、配布ファイルが 消えてなくなることは問題ではないということに注意してください。また、同様に、 チェックサムが変化することも問題ではなく、

	make checksum REFETCH=true 
とすることで、使用中の ports ツリー用の正しい配布ファイルを確実に取得することも可能なのです。 current および安定版の記述に関しては、 「OpenBSD の種類」を参照してください。

ports および ports-current の日々の変更 のリストも用意されています。

ports-current のツリーは以下のところから入手可能です。

Ports と X Window System

OpenBSD の X の設定ファイルには、ports ツリーから /usr/local の下の imake ベースのアプリケーションのインストールを可能とするための ちょっとした仕掛けが用意されています。

Ports ツリーの使用例

何とか ports ツリーを入手したので、アーカイブユーティリティの unzip をコンパイルしてインストールしたい、とします。 その場合には、以下のようにすれば良いでしょう。

    % cd /usr/ports/archivers/unzip
    % su
    # make
    # make install
    # exit
簡単だったでしょう ? 特別に、その裏側で何が起きているのかをすべて見てみましょう。

OpenBSD 3.0 では、ほとんどすべての ports が、インストール時に 自動的に packages を生成します。

ports をビルドするため、/usr/ports/distfiles ディレクトリには、プログラムのソースが 置かれます。また、/usr/ports/packages ディレクトリには、バイナリパッケージが置かれます。 インターネットとの接続性の悪いユーザは、一度にすべての配布ファイルを取得するための十分な方法として、 mirroring-ports(7) を参照してください。OpenBSD-current では、古い配布ファイルを追いかけるため、 /usr/ports/infrastructure/fetch/clean-old スクリプトを使用することもできます。 OpenBSD CD には、ports ツリーと選択された packages が入っているだけということに注意してください。 もし、配布ファイルも必要なのでしたら、 他の方法でそれらを取得する必要があります。

Ports ツリーの使用例 (応用編)

ports ツリーは、上級ユーザにとって、基本的なインストール以上に価値のあるツールに するための多くの機能を持っています。上級ユーザは、makefile を変更したいと思うかも 知れません (まずは make(1) マニュアルページをお読みください) し、make のコマンド行や /etc/mk.conf ファイル内にいろいろな変数を設定したいと思うかも知れません。これらの変数は、その詳細が bsd.port.mk(5) マニュアルページや、以下の移植のためのドキュメントの中に記述されています。

新しい Ports の作成

もし、OpenBSD の ports ツリーの拡張の支援に興味があるのでしたら、 まず、porting.html をお読みください。 このページは、OpenBSD 固有のポリシーやヒントと同様に、 FreeBSD Porter's Handbook も参照しています。

いつ Ports は主流のバージョンから遅れを取ってしまうのでしょう ?

ports コレクションはボランティアベースのプロジェクトです。ときどき、プロジェクトは すべてのものを更新し続けられるだけの開発者のリソースを有していないことがあります。 開発者は、実に多くの彼らがおもしろいと考えるものをピックアップし、彼らの環境でテストすることができます。 あなたの寄付によって、 ports がどのようなプラットフォームに対応されるかが変わってくるのです。

いくつかの個別の ports が、この理由によって、主流のバージョンから遅れを取ることがあるかも知れません。 たとえば、3 ヶ月前の 5 月に、あるプログラムの元の開発者が新しいバージョンをリリースしたにも関わらず、 ports コレクションは、1 月のそのプログラムのより以前のバージョンかも知れません。 しばしば、これは意識的な決定なのです。新しいバージョンは、OpenBSD ではメンテナが解決を試みている最中の 問題を抱えているのかも知れませんし、単純に、そのアプリケーションが古いバージョンのものよりも 悪くなってしまっただけなのかも知れません。また、OpenBSD は、他のプロジェクトの主力開発者とは 異なる目標を持っているのかも知れませんから、 時として、選択された機能や設計、実装の結果が、OpenBSD の開発者の観点からは 好ましくないものであるのかも知れません。また、新しいバージョンが極めて重要な更新であるとは 考えられないために、ports の更新が延期されることもあります。

しかし、もし、本当に新しいバージョンの ports が必要な場合には、その ports のメンテナに ports を更新するよう、連絡を取ってみるべきでしょう (メンテナが誰なのかをどのようにして見つかるのかは。 以下の項目をご覧ください)。もし、これについてのパッチを送ることができれば、それは さらに良いことでしょう。また、適正なパッチを生成するためには、 ports のビルドに関するドキュメントに目を通してください。

問題発生時の連絡先

もし、既存の ports に問題点があった場合には、ports のメンテナに電子メールを 送ってください。その ports のメンテナが誰であるのかを知るためには、 たとえば、以下のようにしてください。

       % cd /usr/ports/archivers/unzip
       % make show=MAINTAINER
別の方法としては、もし、メンテナがいない場合や、あるいはメンテナに辿り着けない場合には、 OpenBSD ports メーリングリスト ports@openbsd.org にメールを送ってください。 ports に関する質問の場合、misc@openbsd.org メーリングリストを使用しないでください。 訂正は常に歓迎されますが、どのような場合においても以下の情報を用意してください。 ports が正常にビルドできない場合には、ほとんど常に、そのビルド時の記録が必要です。 そのために、/usr/ports/infrastructure/build にある portslogger スクリプトを 使用することができます。 portslogger の実行例は以下のようになります。
       % cd /usr/ports/archivers/unzip
       % su
       # mkdir -p ~/portslogs
       # make clean install 2>&1 | /usr/ports/infrastructure/build/portslogger \
               ~/portslogs
これによって、~/portslogs ディレクトリ中に、ports のメンテナに送ることができる このビルドのログファイルが生成されます。また、たとえば、/etc/mk.conf 中などで 特別なビルドオプションを使用していないことを確認しておいてください。

これ以外の方法として、


OpenBSD www@openbsd.org
$OpenBSD: ports.html,v 1.87 2006/05/02 18:02:36 jufi Exp $