2009年6月14日日曜日

ABSでnavi2ch


昨日、jnethackをパッケージ化してから、色々試して遊んでみた。
結果、あまり難しいことを考えずに、個人用のArchLinuxパッケージを作るのは面白い。

デスクトップパソコンの方では2ちゃんねる見るのにJDを使っていたが、S101にはnavi2chをパッケージ化せずにインストールして使っていた。何故にnavi2ch如きがAURに無いのかが不思議と思っていたが、、、きっと、みんな簡単にパッケージ化出来るから、わざわざ誰もメンテナーになりたくなかったに違いない。

そこで、navi2chのPKGBUILDのメモ

pkgname=navi2ch
pkgver=1.8.3_BETA
pkgrel=1
pkgdesc="navigator for 2ch which works on many Emacs"
arch=(i686)
install=navi2ch.install
url="http://navi2ch.sourceforge.net/"
license=('unknown')
source=(http://navi2ch.sourceforge.net/beta/navi2ch-1.8.3-BETA.tar.gz)

build() {
cd $startdir/src/$pkgname-${pkgver//_/-}
./configure --prefix=/usr
make || return 1

make DESTDIR=${pkgdir} install

rm -rf ${pkgdir}/usr/share/info/dir
}

幾つかのTips

(1)バージョン番号に「-(ハイフン)」が使えない。
バージョン番号にハイフンがあると使えないので、pkgverには「-(ハイフン)」の代わりに「_(アンダーバー)」を使うらしい。ところがこのままだと、ソースディレクトリに入る時に変数名で入れないので、上記で使っている様に${pkgver//_/-}と書くと良いらしい。


(2)prefixはusrらしい
個人用のは区別して/usr/localもありなのかもしれないとwikiには書いてあるのかもしれないがニュアンスがよくわからなかった(^^;
とりあえず、usrにしておけば普通にパスの通ったとこにおいてくれる。

(3)パッケージングするときの出力パス
Makefileに目を通して、DESTDIRがあれば、上の用に
make DESTDIR=${pkgdir} install

で、良いらしい。pkgdirはmakepkgが管理してるのかな?とりあえず、作業ディレクトリ以下のpkgディレクトリを指してくれるみたい。


(4)infoのdirファイルを削除しておく
普通既にinfoのTop(?)になるdirファイルはシステムに存在するので、パッケージの中にdirファイルがある場合は、消しておかないとファイルがコンフリクトしてインストール時にエラーになる(なってくれないと、勝手に上書きしちゃう)
そこで、一旦、pkgディレクトリ以下にインストールされたdirを上の様に削除するのが良いらしい。
確認の仕方は、一旦出来上がったパッケージファイルを

tar tzvf hoge.pkg.tar.gz

とか??適当に確認。

(5)んじゃ、dirファイルへの登録は?

infodir=/usr/share/info
filelist=(navi2ch.info)

post_install() {
for file in ${filelist[@]}; do
install-info $infodir/$file $infodir/dir 2> /dev/null
done
}

post_upgrade() {
post_install $1
}

pre_remove() {
for file in ${filelist[@]}; do
install-info --delete $infodir/$file $infodir/dir 2> /dev/null
done
}

このスクリプトがinfo登録用の雛形らしい。
filelistの配列にインストールされるinfoファイル名をスペースで区切って列挙するだけ。
そして、このファイルを作業ディレクトリに置いておく。
PKGBUILDファイルにはinstall=行に、このスクリプトファイル名を書いておく。
今回の場合だとスクリプトファイル名はnavi2ch.installにした。


やってみると、./configureで簡単にmakeできるやつは、すぐパッケージに出来る感じ。
昨日やってたjnethackとかだと、もとのnethack自体、Makefileをsed使ってガシガシかきかえてあった。。。暗号みたいでああいうのは嫌だ、、自分で絶対できん!!><

それと、個人用のパッケージングなら、インストール後になんか必要な作業がいる場合もわざわざ頭をひねってそこまで自動化したり、コメントしなくてもいいから気楽。
.emacsに(autoload 'navi2ch "navi2ch" "Navigator for 2ch for Emacs" t)を書きましょうとか、、

というわけで、ABSがちょこっと使えるようになって幸せ♪

0 件のコメント:

コメントを投稿