Perlモジュールである Network::IPv4Addr を rpm パッケージ化した時の備忘録です。

■説明
Network::IPv4Addr にはspecファイルが付属しているのですが、それを流用してパッケージ化したところドキュメント(manなど)しかパッケージ化されなかったためspecファイルを修正してみました。

■OS
CentOS6.3 64bit

■Network::IPv4Addr
バージョン : 0.05
DL : http://search.cpan.org/~frajulac/Network-IPv4Addr-0.05/IPv4Addr.pm
 


(1)Network-IPv4Addr-0.0.5をダウンロード

[root@example ~]# mkdir -p rpmbuild/{SPECS,SOURCES}
[root@example SOURCES]# wget http://search.cpan.org/CPAN/authors/id/F/FR/FRAJULAC/Network-IPv4Addr-0.05.tar.gz

 

(2)specファイルの作成

[root@example SOURCES]# cd ../SPECS/
[root@example SPECS]# vi Network-IPv4Addr.spec
Summary: Perl modules to manipulates Ipv4 addresses.
Name: Network-IPv4Addr
Version: 0.05
Release: 1i
Source: http://iNDev.iNsu.COM/IPv4Addr/%{name}-%{version}.tar.gz
#Copyright: GPL or Artistic License
License: GPL or Artistic License
Group: Development/Libraries/Perl
Prefix: /usr
URL: http://iNDev.iNsu.COM/IPv4Addr/
BuildRoot: /var/tmp/%{name}-%{version}
BuildArchitectures: noarch
Requires: perl 

%description
Network::IPv4Addr provides methods for parsing IPv4
addresses both in traditional address/netmask format and
in the new CIDR format.  There are also methods for
calculating the network and broadcast address and also to
see check if a given address is in a specific network.

%prep
%setup -q
# Update all path to the perl interpreter
find -type f -exec sh -c 'if head -c 100 $0 | grep -q "^#!.*perl"; then \
                perl -p -i -e "s|^#!.*perl|#!/usr/bin/perl|g" $0; fi' {} \;

%build
perl Makefile.PL PREFIX=$RPM_BUILD_ROOT/usr
make OPTIMIZE="$RPM_OPT_FLAGS"
make test

%install
rm -fr $RPM_BUILD_ROOT
eval `perl '-V:installarchlib'`
mkdir -p $RPM_BUILD_ROOT/$installarchlib
make    PREFIX=$RPM_BUILD_ROOT/usr \
        pure_install
        #INSTALLMAN1DIR=$RPM_BUILD_ROOT/usr/man/man1 \
        #INSTALLMAN3DIR=$RPM_BUILD_ROOT/`dirname $installarchlib`/man/man3 \

# Fix packing list
for packlist in `find $RPM_BUILD_ROOT -name '.packlist'`; do
        mv $packlist $packlist.old
        sed -e "s|$RPM_BUILD_ROOT||g" < $packlist.old > $packlist
        rm -f $packlist.old
done

# Make a file list
find $RPM_BUILD_ROOT -type f -o -type l | \
        grep -v perllocal.pod | \
        sed -e "s|$RPM_BUILD_ROOT||g" > %{name}-file-list
perl -n -i -e 'print "%doc " if m!man/man|\.pod!; print; ' %{name}-file-list

%clean
rm -fr $RPM_BUILD_ROOT

#%files -f %{name}-file-list
%files
%defattr(-,root,root)
%doc README ChangeLog
%attr(0444, root, root) %{_mandir}/man1/ipv4calc.1.gz
%attr(0444, root, root) %{_mandir}/man3/Network::IPv4Addr.3pm.gz
%attr(0555, root, root) %{_bindir}/ipv4calc
%attr(0755, root, root) %{_libdir}/perl5/auto/Network/IPv4Addr/.packlist
%attr(0444, root, root) %{_datadir}/perl5/Network/IPv4Addr.pm
%attr(0444, root, root) %{_datadir}/perl5/auto/Network/IPv4Addr/autosplit.ix

%changelog
* Wed Sep 15 1999  Francis J. Lacoste <francis.lacoste@iNsu.COM> 
  [0.05-1i]
- Updated to version 0.05.

* Sun Aug 15 1999  Francis J. Lacoste <francis.lacoste@iNsu.COM> 
  [0.04-1i]
- Updated to version 0.04.

* Mon Jul 05 1999  Francis J. Lacoste <francis.lacoste@iNsu.COM> 
  [0.03-1i]
- Updated to version 0.03.

* Sat May 15 1999  Francis J. Lacoste <francis@iNsu.COM> 
  [0.02-2i]
- Updated to version 0.02.

* Sat May 15 1999  Francis J. Lacoste <francis@iNsu.COM> 
  [0.01-1i]
- First RPM release.

ハイライト部分が修正した部分です。
 

(3)RPMパッケージ化

[root@example SPECS]# rpmbuild -bb Network-IPv4Addr.spec

 

(4)Network-IPv4Addrのインストール

[root@example SPECS]# cd ../RPMS/noarch/
[root@example noarch]# rpm -ivh Network-IPv4Addr-0.05-1i.noarch.rpm
準備中...                ########################################### [100%]
   1:Network-IPv4Addr       ########################################### [100%]

 

(5)インストールの確認

[root@example ~]# perl -MNetwork::IPv4Addr
^C

エラーが発生ないことを確認します。
※2行目は[Ctl+C]で抜けています。


1月 14, 2013 at 10:06 pm by 黒ぶちメガネ
Category: Linux, Perlスクリプト