事前準備

  • perl ベースバージョン違い等で CPAN からインストールできないモジュールは dnf でインストールする。
    # dnf install -y perl perl-devel perl-open perl-Specio perl-Path-Tiny expat-devel

CPAN

シェルを起動して対話的にインストール

# perl -MCPAN -e shell

bash 等からインストール

# perl -MCPAN -e "CPAN::Shell->install('Bundle::CPAN')"

更新可能なパッケージ一覧の表示

# perl -MCPAN -e "CPAN::Shell->r"

一括更新

# perl -MCPAN -e "CPAN::Shell->install(CPAN::Shell->r)"
  • 途中で Yes/No の確認を求められる。

バージョンを指定してインストール

# perl -MCPAN -e "CPAN::Shell->install('LEMBARK/FindBin-libs-1.55.tar.gz')"
  • CPAN:FindBin-libs は Perl v5.10.0 以上が必要で v5.8.8 にはインストールできない。

シェルでヒストリが効かない (Bundle::CPANをインストール)

> install Bundle::CPAN

強制的に再インストール

  • インストール済みであっても強制に再インストールするには「force」を付ける。
    > force install Scalar::Util
  • 「IO::Socket::SSL」が下記エラーにてインストールできなかったら、依存する「Scalar::Util」を強制再インストールする。
    Net::SSL from Crypt-SSLeay can't verify hostnames; either install IO::Socket::SSL or turn off verification by setting the PERL_LWP_SSL_VERIFY_HOSTNAME environment variable to 0 at /usr/lib/perl5/site_perl/5.8.8/LWP/Protocol/http.pm line 51.
    You need the XS Version of Scalar::Util for dualvar() support at Makefile.PL line 56.

複数のパッケージをまとめてインストール

  • インストールしたいパッケージ名を書いた適当な *.pm ファイルを作成し、それをインストールする。
    # cd ~
    # perl -MCPAN -e "CPAN::Shell->install('Bundle::MyPackages')"
  • /root/Bundle/MyPackages.pm
    package Bundle::MyPackages;
    
    use strict;
    use utf8;
    use vars qw( $VERSION );
    $VERSION = "0.01";
    1;
    
    =head1 CONTENTS
    
    Env
    Fatal
    Test::Warnings
    Test::Output
    Test::Deep
    Time::Piece
    CGI
    URI::Escape::XS
    File::Basename
    FindBin::libs
    Getopt::Long
    HTTP::Date
    JSON::XS
    Lingua::JA::Numbers
    Lingua::JA::Regular::Unicode
    Log::Dispatch
    MIME::Base64
    Socket
    Net::IP
    Net::Wake
    Crypt::SSLeay
    LWP::Protocol::https
    Perl::Tidy
    String::Util
    Text::CSV_XS
    Text::xSV::Slurp
    XML::Simple
    XML::XPath
    enum::hash
    Attribute::Constant
    Number::Format
    PadWalker
    Term::Encoding
    Path::Class
    
    =cut
  • 複数のCPANモジュールを一括インストール - Kawa.net 旧ゆうすけブログ (Yahoo!版)

インストール済みのモジュールのバージョン確認

  • Linux
    # perl -M(モジュール名) -e 'print "$(モジュール名)::VERSION\n";'
    # perl -MJSON::Syck -e 'print "$JSON::Syck::VERSION\n";'
  • Win
    > perl -M(モジュール名) -e "print $(モジュール名)::VERSION;"
    > perl -MJSON::Syck -e "print $JSON::Syck::VERSION;"

cpanminus

インストール

  • Ubuntu
    $ sudo apt install cpanminus cpanoutdated
  • CentOS
    # dnf install perl-App-cpanminus
    # cpanm App::cpanoutdated
  • CPAN
    # perl -MCPAN -e "CPAN::Shell->install('App::cpanminus')"
    # cpanm App::cpanoutdated

cpanm 自身のアップグレード

# cpanm --self-upgrade

一括更新

  • root
    # cpan-outdated | cpanm
  • 一般ユーザ
    $ sudo bash -c "cpan-outdated | cpanm"

強制インストール

  • -f/--force オプションを付けるとエラーを無視して強制インストールする。
    > cpanm -f Win32::Unicode
  • xaicron/p5-win32-unicode / テスト実行時にコンソールのエンコーディング指定が必要。 Update 04_print.t

ppm

コンパイル環境のインストール

> ppm install MinGW

一括更新

> ppm upgrade --install

複数のパッケージをまとめてインストール

  • cpanm や ppm は、パッケージを複数指定するとまとめてインストールしてくれる。

個人的によく使うパッケージ

YAML::Syck JSON::XS LWP::UserAgent LWP::Protocol::https
Env Fatal Test::Warnings Test::Output Test::Deep Time::Piece
CGI Template URI::Escape::XS File::Basename FindBin::libs
HTTP::Date Lingua::JA::Numbers Lingua::JA::Regular::Unicode
Log::Dispatch MIME::Base64 Socket Net::IP Net::Wake Getopt::Long
String::Util Text::CSV_XS Text::xSV::Slurp XML::Simple XML::XPath
enum::hash Const::Fast Attribute::Constant Number::Format
Perl::Tidy Term::Encoding Path::Class Scalar::Util PadWalker

リンク