インストール: cpan | Perlの標準的なパッケージマネージャー

Perlの標準的なパッケージマネージャーであるcpanをソースコードからインストールする。

Ubuntu 18.04などではPerlと一緒にデフォルトでインストールされている。しかし,AWSのAmazon Linux 2などRedHat系のOSだとPerlはあってもcpanはインストールされていないことに気がついた。

GNU StowなどのPerl製のプログラムをまとめてインストールするために,cpanをインストールする。

ただし,cpanはインストールしたパッケージをアンインストールできないなど,パッケージマネージャーとして欠陥があることに注意する。

パッケージをアンインストールしたい場合,cpanmコマンドをcpanでインストールしてcpanmでアンインストールする。

インストール情報
項目 説明
配布元 cpan – easily interact with CPAN from the command line – metacpan.org
リポジトリー andk/cpanpm: CPAN.pm
手順 ExtUtils::MakeMaker – Create a module Makefile – metacpan.org
依存情報 cpanpm/Makefile.PL at master · andk/cpanpm
依存先 (必須) Make (GNU Make), Perl
依存先 (任意)
依存元
インストールコマンド
sh -eux <<-"EOT"
PKG=cpan VER=2.28 TAG=$VER PKG_VER=$PKG${VER:+-$VER}
LOCAL=~/.local J=$(grep -cs '^processor' /proc/cpuinfo || echo 2)
mkdir -p "$LOCAL/src"
cd "$LOCAL/src"

if command -v git >/dev/null; then
  [ -e $PKG ] || git clone --depth 1 git://github.com/andk/cpanpm $PKG
  cd $PKG
git fetch --depth 1 ${TAG:+origin tag $TAG} git checkout -f ${TAG:-master}
git clean -dfX else [ -e $PKG_VER ] || wget -O $PKG_VER.tgz https://github.com/andk/cpanpm/archive/$VER.tar.gz tar -xf $PKG_VER.* cd $PKG_VER fi
make -kj $J distclean clean || :
[ -e configure ] || [ -e configure.ac ] && autoreconf -is perl Makefile.PL INSTALL_BASE="$LOCAL/stow/$PKG_VER" \
INSTALLMAN1DIR="\$(INSTALL_BASE)/share/man/man1" \
INSTALLMAN3DIR="\$(INSTALL_BASE)/share/man/man3" make -j $J make -j $J test make -j $J install cd "$LOCAL/stow" echo $PKG${VER:+-}[0-9]* | xargs -n 1 stow -D stow $PKG_VER EOT
インストール例
日付 バージョン OS 依存関係
2020-07-17 2.28 Ubuntu 18.04 GNU Make 4.2.1, Perl 5.26.1

cpanはビルドにExtUtils::MakeMaker (ExtUtils::MakeMaker – Create a module Makefile – metacpan.org) を使っているため,これに沿ったビルドを行う。

INSTALL_BASEがAutotoolsのconfigure --prefix相当となっているので,これにインストール先を指定する。

この他に,manページのインストール先を指定するINSTALLMAN1DIRINSTALLMAN3DIRがある。デフォルトだと,$INSTALL_BASE/man/man1のように,間にshareが入っておらず,他のインストーラーと構成が違うのが気に入らない。そのため,間にshareを挟むように修正した。

インストールが完了したら,「cpanコマンドによるPerlモジュールのローカルインストール」を参考にcpanの初期設定も行っておく。

なお,cpanはPerlをソースコードからビルドすると同梱されているので,cpanをソースコードからビルドするくらいならば,Perlをソースコードからビルドしたほうがいいと思う。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です