Arch Linuxでの野良packageの作成方法
詳しい方法は全部ArchWikiに日本語で載っているが、要点だけまとめておけば私が楽だから書く。 checkinstallの代わりにpacmanを使うといったことを想定しており、他人に配布するためのものを作るのであればArchWikiを読むこと。
PKGBUILD
まずPKGBUILDを作成する。
これはバイナリパッケージを作るための、Makefileのようなものである。
bashとして実行されるshellscriptで、いくつかの変数と関数を定義する必要がある。 最小構成は以下。
pkgname=NAME
pkgver=VERSION
pkgrel=1
arch=('any')
package() {
...
}
書き始めには/usr/share/pacman/PKGBUILD.protoを元にするとよい。
変数
$pkgname, $pkgverは生成されるpackageのそれになる。$pkgrl, $archは無視してよい。
他の変数として$source(配列)がある。compileに必要なfileを列挙する。urlでもよい。圧縮fileは自動で展開してくれる。
大抵の場合以下のようになるだろう。
例:
source=("$pkgname-$pkgver.tar.gz")
$sourceを加えた場合$updpkgsumsがないとERROR: Integrity checks are missing.など言われることがある。この場合、
$ updpkgsums
と叩けば、PKGBUILDに破壊的に追記してくれる。
関数
package()内部にはinstallのための処理を書く。
/の代わりに$pkgdir以下にファイルを配置する。
$pkgdir/usr/bin/fooというファイルを作成するよう書けば、packageの作成の際に回収され、/usr/bin/foo
以下はその例である。
package() {
cd "$pkgname-$pkgver"
./configure --prefix="$pkgdir/usr"
make
make install
}
$pkgdir内のファイルに$pkgdirの表す文字列が残っていると、おそらく問題が発生する。
makepkgの段階でWARNING: Package contains reference to $pkgdirなどと報告があるので、そのときは対応すべきである。
*.pkg.tar.xz
最後に、makepkgでPKGBUILDに従いバイナリパッケージを作成する。
できたそれをpacmanに渡すとsystem環境への展開がなされる。
$ makepkg
$ sudo pacman -U $pkgname-$pkgver-$pkgrel-$arch.pkg.tar.xz