目前正測試 archlinux,其套件不像 Fedora 或 Ubuntu 那麼多,隨便用 yum 或 aptitude 就可安裝到大多需用的套件。欠缺所需的套件,雖然可以直接用 tarball 來安裝,但儘量以 package 的方式來安裝為前提。
作業系統:archlinux
情境:需安裝 perl 套件 http://search.cpan.org/dist/DBD-XBase/ 來讀 dbf 檔案
解決步驟:
1.在系統上執行 pacman -Ss perl 來找官方所有 perl 字樣的套件,無此套件。
2.搜尋 http://aur.archlinux.org/ ,也並沒有人提供此現成的package可安裝。
3.雖然可直接抓 DBD-XBase 的source,然後解壓執行 perl Makefile.PL; make; make install,卻未將此包在作業系統的套件中;在Fedora裡,可以有 cpan2rpm ,很輕易地把CPAN的任何source套件包成RPM,但archlinux上似乎沒有類似的工具,所以只好硬著頭皮來作package試試。
4.參考 http://www.bytetrap.com/blog/2008/09/16/building-packages-arch-linux/ 先讓自己的系統安裝一些可製作 package 環境的相關套件。
pacman -S abs base-devel fakeroot
5.根據上文,要製作package前,需要編輯個 PKGBUILD ,但看了上文真的是要有耐心,搞清楚怎麼去設參數…雖然平常我有耐心,但耐心還不是那麼足夠,所以沒仔細看要怎麼設,就偷吃步而跳了過去。
6.上到 http://aur.archlinux.org/ 找別人提供的其他 perl 套件,找了個 http://aur.archlinux.org/packages.php?ID=21810,抓其中的 http://aur.archlinux.org/packages/perl-fcgi-procmanager/perl-fcgi-procmanager/PKGBUILD 的範例檔來改。
7.開始以一般使用者身份來製作所需套件
mkdir perl-dbd-xbase; cd perl-dbd-xbase;vi PKGBUILD
參照所抓來的範例檔,修改成以下內容:
pkgname=perl-dbd-xbase
pkgver=0.241
pkgrel=1
pkgdesc="DBI driver for XBase compatible database files"
arch=('any')
url="http://search.cpan.org/"
license=('unknown')
depends=('perl>=5.10.0')
options=('!emptydirs')
source=(http://search.cpan.org/CPAN/authors/id/J/JA/JANPAZ/DBD-XBase-$pkgver.tar.gz)
build() {
cd $startdir/src/DBD-XBase-$pkgver
PERL_MM_USE_DEFAULT=0 perl Makefile.PL INSTALLDIRS=vendor || return 1
make || return 1
make DESTDIR="$pkgdir/" install || return 1
find "$pkgdir" -name '.packlist' -delete
find "$pkgdir" -name 'perllocal.pod' -delete
}
8.執行 makepkg -g >> PKGBUILD
該檔多了最後一行
md5sums=('ed36f8722f09406d35c8af801fa78c3b')
同時同目錄多了個 DBD-XBase-0.241.tar.gz
9.執行 makepkg -s 會產生了一個 perl-dbd-xbase-0.241-1-any.pkg.tar.gz
10. 只要 pacman -U perl-dbd-xbase-0.241-1-any.pkg.tar.gz 就可以系統安裝了此套件了。
參考資料
http://www.bytetrap.com/blog/2008/09/16/building-packages-arch-linux/
http://wiki.archlinux.org/index.php/AUR_User_Guidelines