サンプル:cpan2rpmを使ってperlモジュールをインストールする。(Linux)
cpan2rpmを用います。
cpan2rpm --install Net::Telnet
Perlモジュールパッケージ管理システム(cpan2rpm) を導入するとPerlパッケージをrpmでインストールが簡単にできます。下記の例では、Net::Telnetモジュールをインストールする例です。筆者の環境は、Linux Fedora Core4の環境で実行しています。インストールされていない場合は、予めcpan2rpmを実行することができます。
プログラムの例
[root@home1 ~]# cpan2rpm --install Net::Telnet
-- cpan2rpm - Ver: 2.028 --
Signatures not set up
Upgrade check
Fetch: HTTP
-- module: Net::Telnet --
Found: Net-Telnet-3.03.tar.gz
At: http://search.cpan.org//CPAN/authors/id/J/JR/JROGERS
Retrieving URL
Metadata retrieval
Tarball extraction: [/usr/src/redhat/SOURCES/Net-Telnet-3.03.tar.gz]
Generating spec file
SPEC: /usr/src/redhat/SPECS/Net-Telnet.spec
Generating package
実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.80080
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /usr/src/redhat/BUILD
+ rm -rf Net-Telnet-3.03
+ /bin/gzip -dc /usr/src/redhat/SOURCES/Net-Telnet-3.03.tar.gz
+ tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd Net-Telnet-3.03
++ /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 .
+ chmod -R u+w /usr/src/redhat/BUILD/Net-Telnet-3.03
+ exit 0
実行中(%build): /bin/sh -e /var/tmp/rpm-tmp.80080
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd Net-Telnet-3.03
+ LANG=C
+ export LANG
+ unset DISPLAY
+ grep -rsl '^#!.*perl' .
+ grep -v '.bak$'
+ xargs --no-run-if-empty /usr/bin/perl -MExtUtils::MakeMaker -e 'MY->fixin(@ARGV)'
+ CFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables'
++ /usr/bin/perl -MExtUtils::MakeMaker -e ' print qq|PREFIX=/var/tmp/perl-Net-Telnet-3.03-root/usr| if $ExtUtils::MakeMaker::VERSION =~ /5\.9[1-6]|6\.0[0-5]/ '
+ /usr/bin/perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Net::Telnet
+ /usr/bin/make
cp lib/Net/Telnet.pm blib/lib/Net/Telnet.pm
Manifying blib/man3/Net::Telnet.3pm
+ /usr/bin/make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/select....ok
All tests successful.
Files=1, Tests=3, 0 wallclock secs ( 0.01 cusr + 0.00 csys = 0.01 CPU)
+ exit 0
実行中(%install): /bin/sh -e /var/tmp/rpm-tmp.30043
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd Net-Telnet-3.03
+ LANG=C
+ export LANG
+ unset DISPLAY
+ '[' /var/tmp/perl-Net-Telnet-3.03-root '!=' / ']'
+ rm -rf /var/tmp/perl-Net-Telnet-3.03-root
++ /usr/bin/perl -MExtUtils::MakeMaker -e ' print $ExtUtils::MakeMaker::VERSION <= 6.05 ? qq|PREFIX=/var/tmp/perl-Net-Telnet-3.03-root/usr| : qq|DESTDIR=/var/tmp/perl-Net-Telnet-3.03-root| '
+ /usr/bin/make prefix=/var/tmp/perl-Net-Telnet-3.03-root/usr exec_prefix=/var/tmp/perl-Net-Telnet-3.03-root/usr bindir=/var/tmp/perl-Net-Telnet-3.03-root/usr/bin sbindir=/var/tmp/perl-Net-Telnet-3.03-root/usr/sbin sysconfdir=/var/tmp/perl-Net-Telnet-3.03-root/etc datadir=/var/tmp/perl-Net-Telnet-3.03-root/usr/share includedir=/var/tmp/perl-Net-Telnet-3.03-root/usr/include libdir=/var/tmp/perl-Net-Telnet-3.03-root/usr/lib libexecdir=/var/tmp/perl-Net-Telnet-3.03-root/usr/libexec localstatedir=/var/tmp/perl-Net-Telnet-3.03-root/var sharedstatedir=/var/tmp/perl-Net-Telnet-3.03-root/usr/com mandir=/var/tmp/perl-Net-Telnet-3.03-root/usr/share/man infodir=/var/tmp/perl-Net-Telnet-3.03-root/usr/share/info install DESTDIR=/var/tmp/perl-Net-Telnet-3.03-root
Installing /var/tmp/perl-Net-Telnet-3.03-root/usr/lib/perl5/site_perl/5.8.8/Net/Telnet.pm
Installing /var/tmp/perl-Net-Telnet-3.03-root/usr/share/man/man3/Net::Telnet.3pm
Writing /var/tmp/perl-Net-Telnet-3.03-root/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/Net/Telnet/.packlist
Appending installation info to /var/tmp/perl-Net-Telnet-3.03-root/usr/lib/perl5/5.8.8/i386-linux-thread-multi/perllocal.pod
+ cmd=/usr/share/spec-helper/compress_files
+ '[' -x /usr/share/spec-helper/compress_files ']'
+ cmd=/usr/lib/rpm/brp-compress
+ '[' -x /usr/lib/rpm/brp-compress ']'
+ /usr/lib/rpm/brp-compress
+ '[' -e /etc/SuSE-release -o -e /etc/UnitedLinux-release ']'
+ find /var/tmp/perl-Net-Telnet-3.03-root -name perllocal.pod -o -name .packlist -o -name '*.bs'
+ xargs -i rm -f '{}'
+ find /var/tmp/perl-Net-Telnet-3.03-root/usr -type d -depth -exec rmdir '{}' ';'
+ /usr/bin/perl -MFile::Find -le '
find({ wanted => \&wanted, no_chdir => 1}, "/var/tmp/perl-Net-Telnet-3.03-root");
print "%doc README";
for my $x (sort @dirs, @files) {
push @ret, $x unless indirs($x);
}
print join "\n", sort @ret;
sub wanted {
return if /auto$/;
local $_ = $File::Find::name;
my $f = $_; s|^\Q/var/tmp/perl-Net-Telnet-3.03-root\E||;
return unless length;
return $files[@files] = $_ if -f $f;
$d = $_;
/\Q$d\E/ && return for reverse sort @INC;
$d =~ /\Q$_\E/ && return
for qw|/etc /usr/man /usr/bin /usr/share|;
$dirs[@dirs] = $_;
}
sub indirs {
my $x = shift;
$x =~ /^\Q$_\E\// && $x ne $_ && return 1 for @dirs;
}
'
+ '[' -z Net-Telnet-3.03-filelist ']'
+ /usr/lib/rpm/find-debuginfo.sh /usr/src/redhat/BUILD/Net-Telnet-3.03
0 blocks
find: /var/tmp/perl-Net-Telnet-3.03-root/usr/lib/debug: No such file or directory
+ /usr/lib/rpm/redhat/brp-compress
+ /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
ファイルの処理中: perl-Net-Telnet-3.03-1
実行中(%doc): /bin/sh -e /var/tmp/rpm-tmp.25231
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd Net-Telnet-3.03
+ DOCDIR=/var/tmp/perl-Net-Telnet-3.03-root/usr/share/doc/perl-Net-Telnet-3.03
+ export DOCDIR
+ rm -rf /var/tmp/perl-Net-Telnet-3.03-root/usr/share/doc/perl-Net-Telnet-3.03
+ /bin/mkdir -p /var/tmp/perl-Net-Telnet-3.03-root/usr/share/doc/perl-Net-Telnet-3.03
+ cp -pr README /var/tmp/perl-Net-Telnet-3.03-root/usr/share/doc/perl-Net-Telnet-3.03
+ exit 0
Provides: perl(Net::Telnet) = 3.03
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(VersionedDependencies) <= 3.0.3-1
Requires: perl >= 0:5.002 perl(Exporter) perl(Socket) perl(Symbol) perl(strict) perl(vars)
伸張ファイルの検査中: /usr/lib/rpm/check-files /var/tmp/perl-Net-Telnet-3.03-root
書き込み完了: /usr/src/redhat/SRPMS/perl-Net-Telnet-3.03-1.src.rpm
書き込み完了: /usr/src/redhat/RPMS/noarch/perl-Net-Telnet-3.03-1.noarch.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.61698
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd Net-Telnet-3.03
+ '[' /var/tmp/perl-Net-Telnet-3.03-root '!=' / ']'
+ rm -rf /var/tmp/perl-Net-Telnet-3.03-root
+ exit 0
実行中(--clean): /bin/sh -e /var/tmp/rpm-tmp.61698
+ umask 022
+ cd /usr/src/redhat/BUILD
+ rm -rf Net-Telnet-3.03
+ exit 0
RPM: /usr/src/redhat/RPMS/noarch/perl-Net-Telnet-3.03-1.noarch.rpm
SRPM: /usr/src/redhat/SRPMS/perl-Net-Telnet-3.03-1.src.rpm
Installing package
準備中... ########################################### [100%]
1:perl-Net-Telnet ########################################### [100%]
-- Done --
[root@home1 ~]#

