「他のディストリビューションのパッケージの作成」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(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-debcheckinstallAUR などのショートカットが適しているかもしれません。
  • Chroot して Arch の中に (別に) ベースシステムを作成する。例: debootstrapAUR (Debian), febootstrapAUR (Fedora)。最小限の、クリーンな環境を作れるという利点があります。
  • パッケージングツールによる自動的な方法で chroot を使う。例: pbuilder-ubuntuAUR (Debian), mock-gitAUR (Fedora)。
  • (互換性を失う可能性がある) 依存関係を処理する別の方法として 静的リンク。ほとんどのディストリビューションはこの方法を認めてないので注意してください。
  • 使用するディストリビューションに関係なく一般的な原則は適用されます。例えば、パッケージを root でビルドしてはいけません

Debian

Debian パッケージングチュートリアルに基本的なことが説明されています。チュートリアルでは以下のツールの利用について記述しています (ほとんどが AUR から利用可能です):

cowdancer — pbuilder の copy-on-write ラッパー

https://packages.debian.org/sid/cowdancer || cowdancerAUR

debootstrap — dpkg や apt が利用できない環境でも、スクラッチから Debian ベースシステムを作成するためのツール。

https://packages.debian.org/sid/debootstrap || debootstrapAUR

devscripts — Debian パッケージメンテナの生活を楽にするスクリプト

https://packages.debian.org/sid/devscripts || devscriptsAUR

dh-autoreconf — autoreconf を実行してビルド後に片付けを行う Debhelper アドオン

https://packages.debian.org/sid/dh-autoreconf || dh-autoreconfAUR

dh-make — ソースアーカイブを Debian パッケージソースに変換するツール

https://packages.debian.org/sid/dh-make || dh-makeAUR

dpkg — Debian パッケージマネージャ

https://packages.debian.org/sid/dpkg || dpkgAUR

dput — Debian パッケージのアップロードツール

https://packages.debian.org/sid/dput || dputAUR

git-buildpackage — Git によるパッケージビルドシステムを統合する Debian のツール

https://honk.sigxcpu.org/piki/projects/git-buildpackage/ || git-buildpackageAUR

pbuilder-ubuntu — Debian パッケージを作成するための Chroot 環境

https://launchpad.net/ubuntu/+source/pbuilder || pbuilder-ubuntuAUR

quilt — パッチによる変更を記録して一連のパッチを管理する

http://savannah.nongnu.org/projects/quilt || quilt
ノート: 存在しないツール: lintian, reprepo, equivs, cdbs, svn-buildpackage, javahelper

Tips and Tricks

依存関係の処理を無視する

dpkgpacman によってインストールされた依存関係を認識しません。そのため 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
ノート: Any run-time dependencies (and matching version numbers) should be added manually to debian/control, where ${shlibs:Depends} now has no meaning.
警告: Even if you manage to successfully build a package this way, it is strongly recommended to build in a clean environment (such as chroot) to prevent any incompatibilities.

chroot をセットアップ

pbuilder-ubuntu のイントロダクションとして Pbuilder How-To を見て下さい。copy-on-write による著しいパフォーマンスの向上がある cowdancer を合わせて使うことが推奨されています。

  • AURdebian-archive-keyringAUR, ubuntu-keyringAUR, gnupg1AUR が必要です。
  • eatmydataAURlibeatmydataAURlib32-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
$ dpkg-buildpackage -d -us -uc -S

参照

Fedora

How to create an RPM package

rpm-org — RPM.org のフォーク、主要な RPM ディストロで使用されています

http://www.rpm.org/ || rpm-orgAUR

mock — ソース RPM を取得して chroot で RPM をビルド

http://fedoraproject.org/wiki/Projects/Mock || mock-gitAUR

参照

openSUSE

参照