目前正测试 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-xbasepkgver=0.241pkgrel=1pkgdesc="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