「他のディストリビューションのパッケージの作成」の版間の差分
(Created page with "Category:Package_development en:Creating packages for other distributions {{Related articles start}} {{Related2|Creating Packages|...") |
細 (1版 をインポートしました) |
(相違点なし)
|
2015年1月9日 (金) 23:11時点における版
関連記事
Arch は最高です。しかしながら、時には他のディストリビューションのパッケージを作成したいと思うときもあるでしょう。
目次
一般
- 仮想化はわかりやすい方法ですが、追加したシステムの管理が必要になります。
- ディストリビューションごとのパッケージングツールを使う。例: dh_makeAUR, dpkgAUR (Debian), rpm-orgAUR (Fedora)。あまり複雑ではない作業には dpkg-deb や checkinstallAUR などのショートカットが適しているかもしれません。
- Chroot して Arch の中に (別に) ベースシステムを作成する。例: debootstrapAUR (Debian), febootstrapAUR (Fedora)。最小限の、クリーンな環境を作れるという利点があります。
- パッケージングツールによる自動的な方法で chroot を使う。例: pbuilder-ubuntuAUR (Debian), mock-gitAUR (Fedora)。
- (互換性を失う可能性がある) 依存関係を処理する別の方法として 静的リンク。ほとんどのディストリビューションはこの方法を認めてないので注意してください。
- 使用するディストリビューションに関係なく一般的な原則は適用されます。例えば、パッケージを root でビルドしてはいけません。
Debian
Debian パッケージングチュートリアルに基本的なことが説明されています。チュートリアルでは以下のツールの利用について記述しています (ほとんどが AUR から利用可能です):
cowdancer — pbuilder の copy-on-write ラッパー
debootstrap — dpkg や apt が利用できない環境でも、スクラッチから Debian ベースシステムを作成するためのツール。
devscripts — Debian パッケージメンテナの生活を楽にするスクリプト
dh-autoreconf — autoreconf を実行してビルド後に片付けを行う Debhelper アドオン
dh-make — ソースアーカイブを Debian パッケージソースに変換するツール
dpkg — Debian パッケージマネージャ
dput — Debian パッケージのアップロードツール
git-buildpackage — Git によるパッケージビルドシステムを統合する Debian のツール
pbuilder-ubuntu — Debian パッケージを作成するための Chroot 環境
quilt — パッチによる変更を記録して一連のパッチを管理する
Tips and Tricks
依存関係の処理を無視する
dpkg は pacman によってインストールされた依存関係を認識しません。そのため dpkg-buildpackage
は以下のようなエラーで失敗することになります:
dpkg-checkbuilddeps: Unmet build dependencies: build-essential:native debhelper (>= 8.0.0) dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
これを無視するには、-d フラグを使って下さい:
$ dpkg-buildpackage -d -us -uc
また、以下の行を debian/rules
に追加して dh_shlibdeps
を上書きする必要もあります:
override_dh_shlibdeps: dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
chroot をセットアップ
pbuilder-ubuntu のイントロダクションとして Pbuilder How-To を見て下さい。copy-on-write による著しいパフォーマンスの向上がある cowdancer を合わせて使うことが推奨されています。
- AUR の debian-archive-keyringAUR, ubuntu-keyringAUR, gnupg1AUR が必要です。
- eatmydata は AUR の libeatmydataAUR や lib32-libeatmydataAUR で入手できます。
LD_PRELOAD
エラーが起こらないように、chroot の中と外両方でインストールする必要があります。Arch と Debian ではパスが異なっているため、以下のシンボリックリンクを作成してください:
# ln -s /usr/lib/libeatmydata.so.1.1.1 /usr/lib/libeatmydata/libeatmydata.so # ln -s /usr/lib/libeatmydata.so.1.1.1 /usr/lib/libeatmydata/libeatmydata.so.1
- サンプル pbuilderrc
- pbuilder で処理するソースパッケージを作成するには:
$ dpkg-buildpackage -d -us -uc -S
参照
Fedora
rpm-org — RPM.org のフォーク、主要な RPM ディストロで使用されています
- http://www.rpm.org/ || rpm-orgAUR
mock — ソース RPM を取得して chroot で RPM をビルド
参照
openSUSE
- openSUSE Portal:Packaging
- Open Build Service - 自動的な、一貫した、再現性のある方法でソースからパッケージを作成・配布するための総合システム。
- openSUSE packaging guidelines