詳しい方法は全部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

最後に、makepkgPKGBUILDに従いバイナリパッケージを作成する。 できたそれをpacmanに渡すとsystem環境への展開がなされる。

$ makepkg
$ sudo pacman -U $pkgname-$pkgver-$pkgrel-$arch.pkg.tar.xz

参考