2012年2月8日水曜日

debパッケージからRPMパッケージに変換

パッケージの最新版がRPMはないのにdebがある事が多々ある。特にCENTOSのパッケージについては、かなり古いものが多く、最新版をインストールしたい時は、パッケージからでなくソースからになってしまう場合ある。ソースからインストールされたソフトはパッケージ管理されないので、最新版等の更新チェックや他ソフトの依存管理も面倒になってします。
そこで、方法としてはSRPMやdebパッケージからバイナリRPMを作成してインストールする方法かソースからRPMを作成する方法とに限定されてします。

ここでは、debパッケージからRPMパッケージを作成(変換)する方法について書き留めておきます。

変換するにはalienコマンドを利用するが、alienコマンドはyumからのインストールできないので、ソースコードを入手しビルドします。

[root@hoge Source]# wget http://ftp.debian.org/debian/pool/main/a/alien/alien_8.81.tar.gz
--2012-02-08 15:02:58--  http://ftp.debian.org/debian/pool/main/a/alien/alien_8.81.tar.gz
ftp.debian.org をDNSに問いあわせています... 130.89.148.12, 2001:610:1908:b000::148:12
ftp.debian.org|130.89.148.12|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 63918 (62K) [application/x-gzip]
`alien_8.81.tar.gz' に保存中

100%[======================================>] 63,918      53.5K/s 時間 1.2s    

2012-02-08 15:02:59 (53.5 KB/s) - `alien_8.81.tar.gz' へ保存完了 [63918/63918]

[root@ora02 Source]# rpmbuild -ta alien_8.81.tar.gz実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.29269
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /usr/src/redhat/BUILD
+ rm -rf alien
+ /bin/gzip -dc /home/shorisawa/Desktop/DownLoad/Source/alien_8.81.tar.gz
+ tar -xvvf -
drwxr-xr-x 0/0               0 2010-05-18 09:57:16 alien/
-rwxr-xr-x 0/0             923 2009-11-21 07:32:47 alien/Makefile.PL
drwxr-xr-x 0/0               0 2010-05-18 09:57:56 alien/debian/
-rw-r--r-- 0/0             746 2010-05-18 09:57:52 alien/debian/control
-rw-r--r-- 0/0              19 2009-05-29 23:58:47 alien/debian/docs
-rwxr-xr-x 0/0             519 2009-10-20 05:34:17 alien/debian/rules
-rw-r--r-- 0/0           93524 2010-05-18 09:57:00 alien/debian/changelog
-rw-r--r-- 0/0            1302 2009-05-29 23:58:47 alien/debian/copyright
-rw-r--r-- 0/0               2 2009-05-29 23:58:47 alien/debian/compat
-rw-r--r-- 0/0             917 2009-05-29 23:58:47 alien/alien.spec.in
-rw-r--r-- 0/0            2719 2009-05-29 23:58:47 alien/README
-rw-r--r-- 0/0             897 2010-05-18 09:57:16 alien/alien.spec
drwxr-xr-x 0/0               0 2010-04-29 00:29:14 alien/Alien/
-rw-r--r-- 0/0           10556 2010-04-29 00:29:14 alien/Alien/Package.pm
drwxr-xr-x 0/0               0 2010-05-18 09:57:04 alien/Alien/Package/
-rw-r--r-- 0/0            7487 2009-10-20 05:34:17 alien/Alien/Package/Slp.pm
-rw-r--r-- 0/0            4735 2009-10-20 05:34:17 alien/Alien/Package/Tgz.pm
-rw-r--r-- 0/0           16306 2010-05-18 09:54:12 alien/Alien/Package/Rpm.pm
-rw-r--r-- 0/0           17298 2010-04-29 00:27:17 alien/Alien/Package/Deb.pm
-rw-r--r-- 0/0            2244 2009-05-29 23:58:47 alien/Alien/Package/Lsb.pm
-rw-r--r-- 0/0            7221 2009-10-20 05:34:17 alien/Alien/Package/Pkg.pm
-rw-r--r-- 0/0             739 2005-07-14 02:37:34 alien/gendiff.txt
-rwxr-xr-x 0/0           16379 2009-12-15 03:42:56 alien/alien.pl
-rw-r--r-- 0/0           17976 2005-07-14 02:37:34 alien/GPL
-rw-r--r-- 0/0             448 2005-07-14 02:37:34 alien/TODO
-rw-r--r-- 0/0             283 2005-07-14 02:37:34 alien/INSTALL
-rw-r--r-- 0/0             576 2010-05-18 09:57:16 alien/alien.lsm
-rw-r--r-- 0/0             586 2005-07-14 02:37:34 alien/alien.lsm.in
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd alien
++ /usr/bin/id -u
+ '[' 0 = 0 ']'
+ /bin/chown -Rhf root .
++ /usr/bin/id -u
+ '[' 0 = 0 ']'
+ /bin/chgrp -Rhf root .
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ rm -rf /tmp/alien-8.81.build
+ exit 0
実行中(%install): /bin/sh -e /var/tmp/rpm-tmp.53925
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd alien
+ LANG=C
+ export LANG
+ unset DISPLAY
+ perl Makefile.PL PREFIX=/tmp/alien-8.81.build/usr
Writing Makefile for Alien
+ make
cp Alien/Package/Deb.pm blib/lib/Alien/Package/Deb.pm
cp Alien/Package/Tgz.pm blib/lib/Alien/Package/Tgz.pm
cp Alien/Package.pm blib/lib/Alien/Package.pm
cp Alien/Package/Rpm.pm blib/lib/Alien/Package/Rpm.pm
cp Alien/Package/Pkg.pm blib/lib/Alien/Package/Pkg.pm
cp Alien/Package/Lsb.pm blib/lib/Alien/Package/Lsb.pm
cp Alien/Package/Slp.pm blib/lib/Alien/Package/Slp.pm
perl -pe '$_="" if /use lib/; $_="our \$Version=\"8.81\";\n" if /VERSION_AUTOREPLACE/' alien.pl > alien
cp alien blib/script/alien
/usr/bin/perl "-MExtUtils::MY" -e "MY->fixin(shift)" blib/script/alien
Manifying blib/man1/alien.1
Manifying blib/man3/Alien::Package::Tgz.3pm
Manifying blib/man3/Alien::Package::Deb.3pm
Manifying blib/man3/Alien::Package::Rpm.3pm
Manifying blib/man3/Alien::Package.3pm
Manifying blib/man3/Alien::Package::Pkg.3pm
Manifying blib/man3/Alien::Package::Lsb.3pm
Manifying blib/man3/Alien::Package::Slp.3pm
perl -i -pe "s/\@version\@/8.81/g" alien.lsm
perl -i -pe "s/\@version\@/8.81/g" alien.spec
+ make pure_install VARPREFIX=/tmp/alien-8.81.build
Installing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/Alien/Package.pm
Installing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/Alien/Package/Deb.pm
Installing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/Alien/Package/Slp.pm
Installing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/Alien/Package/Rpm.pm
Installing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/Alien/Package/Lsb.pm
Installing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/Alien/Package/Pkg.pm
Installing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/Alien/Package/Tgz.pm
Installing /tmp/alien-8.81.build/usr/share/man/man1/alien.1
Installing /tmp/alien-8.81.build/usr/share/man/man3/Alien::Package::Deb.3pm
Installing /tmp/alien-8.81.build/usr/share/man/man3/Alien::Package::Rpm.3pm
Installing /tmp/alien-8.81.build/usr/share/man/man3/Alien::Package::Pkg.3pm
Installing /tmp/alien-8.81.build/usr/share/man/man3/Alien::Package::Tgz.3pm
Installing /tmp/alien-8.81.build/usr/share/man/man3/Alien::Package::Slp.3pm
Installing /tmp/alien-8.81.build/usr/share/man/man3/Alien::Package.3pm
Installing /tmp/alien-8.81.build/usr/share/man/man3/Alien::Package::Lsb.3pm
Installing /tmp/alien-8.81.build/usr/bin/alien
Writing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/Alien/.packlist
install -d /tmp/alien-8.81.build/usr/share/alien/patches \
                   /tmp/alien-8.81.build/var/lib/alien
+ find /tmp/alien-8.81.build -not -type d -printf '/%P\n'
+ sed '/\/man\//s/$/\*/'
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/brp-python-bytecompile
+ /usr/lib/rpm/redhat/brp-java-repack-jars
ファイルの処理中: alien-8.81-1
実行中(%doc): /bin/sh -e /var/tmp/rpm-tmp.74313
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd alien
+ DOCDIR=/tmp/alien-8.81.build/usr/share/doc/alien-8.81
+ export DOCDIR
+ rm -rf /tmp/alien-8.81.build/usr/share/doc/alien-8.81
+ /bin/mkdir -p /tmp/alien-8.81.build/usr/share/doc/alien-8.81
+ cp -pr debian/changelog GPL README alien.lsm /tmp/alien-8.81.build/usr/share/doc/alien-8.81
+ exit 0
Provides: perl(Alien::Package) perl(Alien::Package::Deb) perl(Alien::Package::Lsb) perl(Alien::Package::Pkg) perl(Alien::Package::Rpm) perl(Alien::Package::Slp) perl(Alien::Package::Tgz)
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: /usr/bin/perl perl perl(Alien::Package::Deb) perl(Alien::Package::Lsb) perl(Alien::Package::Pkg) perl(Alien::Package::Rpm) perl(Alien::Package::Slp) perl(Alien::Package::Tgz) perl(Cwd) perl(Getopt::Long) perl(base) perl(constant) perl(strict) perl(vars)
伸張ファイルの検査中: /usr/lib/rpm/check-files /tmp/alien-8.81.build
書き込み完了: /usr/src/redhat/SRPMS/alien-8.81-1.src.rpm
書き込み完了: /usr/src/redhat/RPMS/noarch/alien-8.81-1.noarch.rpm
[root@hoge Source]# ls /usr/src/redhat/RPMS/noarch
alien-8.81-1.noarch.rpm
[root@hoge Source]# 
[root@hoge Source]# rpm -ivh /usr/src/redhat/RPMS/noarch/alien-8.81-1.noarch.rpm
準備中...                ########################################### [100%]
   1:alien                  ########################################### [100%]
[root@hoge Source]# 
# alien --to-rpm --scripts *.deb
xxx.rpm generated
...

0 件のコメント:

コメントを投稿