CentOSへのpcsc-perlインストール

TL上で知り合いが「CentOS6にBonCasServer入れたいけど、pcsc-perlがインストールできん…」と言ってたので調べてみた。
確かにパッケージ提供されてないみたいだし、RedHat系ならrpmで入れたいよね。
ってことで、自作してみました。プラスじゃないとファイルアップロードできないみたいなので、作成手順でごめんね。

  1. rpmbuildをインストールする(必要に応じて開発関連ツールも)

まずはrpmファイルを作成するために、rpmbuildコマンドが必要なのでインストールする
yum -y install rpm-build

  1. ソースファイルとってくる

pcsc-perlのソースファイルを提供元から持ってくる。
http://ludovic.rousseau.free.fr/softwares/pcsc-perl/pcsc-perl-1.4.12.tar.bz2
とってきたら、rpm作成のためのディレクトリにコピーする。
cp pcsc-perl-1.4.12.tar.bz2 /usr/src/redhat/SOURCES

  1. SPECファイルの入手

rpmを作成するための指示ファイルであるspecファイルを入手する。
FedoraのBugzilla(https://bugzilla.redhat.com/show_bug.cgi?id=711233)にpcsc-perl-1.4.12対応のSPECファイルがあったのでこれを利用。この内容を以下のとおりspecファイルとして保存
cat > /usr/src/redhat/SPECS/pcsc-perl.spec
#コンソールから貼り付けて、最終行でCtrl-Dでcatを終了

リンク先が消えたらせつないので転記

%define pcscver 1.3.0
%define pcsclib libpcsclite.so.1
%ifarch x86_64 ppc64 ia64 sparc64 s390x
%define mark64  ()(64bit)
%endif

Name:           pcsc-perl
Version:        1.4.12
Release:        1%{?dist}
Summary:        Perl interface to the PC/SC smart card library

Group:          Development/Libraries
License:        GPLv2+
URL:            http://ludovic.rousseau.free.fr/softwares/pcsc-perl/
Source0:        http://ludovic.rousseau.free.fr/softwares/pcsc-perl/%{name}-%{version}.tar.bz2
Source1:        http://ludovic.rousseau.free.fr/softwares/pcsc-perl/%{name}-%{version}.tar.bz2.asc
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:  perl(ExtUtils::MakeMaker)
BuildRequires:  pcsc-lite-devel >= %{pcscver}
Requires:       %{pcsclib}%{?mark64}
Requires:  perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
Provides:       perl-pcsc = %{version}-%{release}

%description
This package contains a Perl interface to the PC/SC smart card
library.


%prep
%setup -q
chmod 644 examples/* # avoid dependencies
f=Changelog ; iconv -f iso-8859-1 -t utf-8 $f > $f.utf8 ; mv $f.utf8 $f


%build
%{__perl} Makefile.PL INSTALLDIRS=vendor OPTIMIZE="$RPM_OPT_FLAGS" DEFINE=-Wall
make %{?_smp_mflags}


%install
rm -rf $RPM_BUILD_ROOT
make pure_install PERL_INSTALL_ROOT=$RPM_BUILD_ROOT
find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';'
find $RPM_BUILD_ROOT -type f -name '*.bs' -a -size 0 -exec rm -f {} ';'
find $RPM_BUILD_ROOT -depth -type d -exec rmdir {} 2>/dev/null ';'
chmod -R u+w $RPM_BUILD_ROOT/*


%check
# tests need configured readers etc
if ! grep -qF 'dlopen("%{pcsclib}"' PCSCperl.h ; then # sanity check
    echo "ERROR: pcsc lib name mismatch in PCSCperl.h/dependencies" ; exit 1
fi


%clean
rm -rf $RPM_BUILD_ROOT


%files
%defattr(-,root,root,-)
%doc Changelog LICENCE README examples/
%{perl_vendorarch}/auto/Chipcard/
%{perl_vendorarch}/Chipcard/
%{_mandir}/man3/Chipcard::PCSC*.3*


%changelog