RPM 形式は、Red Hat, SuSE, Mandrake といった、多くの一般的な Linux ディストリビューションで使われています。普段使っているのがこれらの 環境のいずれか (またはその他の RPM ベースの Linux ディストリビューション) なら、同じディストリビューションを使っている 他のユーザ用に RPM パッケージを作成するのはとるに足らないことでしょう。 一方、モジュール配布物の複雑さや、 Linux ディストリビューション間の 違いにもよりますが、他の RPM ベースのディストリビューションでも動作 するような RPM を作成できるかもしれません。
通常、モジュール配布物の RPM を作成するには、bdist_rpm
コマンドを使います:
python setup.py bdist_rpm
あるいは、bdist
コマンドを --format
オプション付きで使います:
python setup.py bdist --formats=rpm
前者の場合、 RPM 特有のオプションを指定できます; 後者の場合、
一度の実行で複数の形式を指定できます。両方同時にやりたければ、
それぞれの形式について各コマンドごとにオプション付きで
bdist_*
コマンドを並べます:
python setup.py bdist_rpm --packager="John Doe <jdoe@example.org>" \ bdist_wininst --target_version="2.0"
Distutils が setup スクリプトで制御されているのとほとんど同じく、
RPM パッケージの作成は、 .spec で制御されています。
RPM の作成を簡便に解決するため、bdist_rpm
コマンドでは
通常、 setup スクリプトに与えた情報とコマンドライン、そして Distutils
設定ファイルに基づいて .spec ファイルを作成します。
.spec ファイルの様々なオプションやセクション情報は、
以下のようにして setup スクリプトから取り出されます:
RPM .spec ファイルのオプションまたはセクション | Distutils setup スクリプト内のオプション |
---|---|
Name | name |
Summary (preamble 内) | description |
Version | version |
Vendor | author と author_email, または
& maintainer と maintainer_email |
Copyright | licence |
Url | url |
%description (セクション) | long_description |
また、.spec ファイル内の多くのオプションは、 setup スクリプト
中に対応するオプションがありません。これらのほとんどは、以下に示す
bdist_rpm
コマンドのオプションで扱えます:
RPM .spec ファイルのオプションまたはセクション | bdist_rpm オプション |
デフォルト値 |
---|---|---|
Release | release | ``1'' |
Group | group | ``Development/Libraries'' |
Vendor | vendor | (上記参照) |
Packager | packager | (none) |
Provides | provides | (none) |
Requires | requires | (none) |
Conflicts | conflicts | (none) |
Obsoletes | obsoletes | (none) |
Distribution | distribution_name | (none) |
BuildRequires | build_requires | (none) |
Icon | icon | (none) |
言うまでもなく、こうしたオプションをコマンドラインで指定するのは 面倒だし、エラーの元になりますから、普通は setup.cfg に 書いておくのがベストです -- 13 節を参照してください。 沢山の Python モジュール配布物を配布したりパッケージ化したりしている のなら、配布物全部に当てはまるオプションを個人用の Distutils 設定 ファイル (~/.pydistutils.cfg) に入れられます。
バイナリ形式の RPM パッケージを作成する際には三つの段階があり、 Distutils はこれら全ての段階を自動的に処理します:
通常、RPM は最後の二つのステップをまとめて行います; Distutils を使うと、普通は三つのステップ全てをまとめて行います。
望むなら、これらの三つのステップを分割できます。bdist_rpm
コマンドに --spec-only を指定すれば、単に
.spec を作成して終了します; この場合、.spec
ファイルは ``配布物ディレクトリ (distribution directory)''--
通常は dist/ に作成されますが、 --dist-dir
オプションで変更することもできます。(通常、 .spec ファイルは
``ビルドツリー (build tree)''、すなわち build_rpm
が作成する一時ディレクトリの中から引き揚げられます。)
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。