前回の(1)はこちら から。
cpanm
cpanm は、宮川達彦さんを中心に開発している、CPANモジュール用のコマンドラインツールです。
モジュールのテストやインストールができるのはcpanコマンドと変わらないのですが、大きな違いとして、ほかのモジュールに依存しないので簡単に導入でき、初期設定も不要ですぐ利用できることが挙げられます。
cpanコマンドではそれなりの項目を初期設定する必要がありますが、初めて使う場合はそもそも何をどう設定すればよいかわからなかったりするので、cpanmが特に何も設定を行わずに利用できるのは大きなメリットです。特にPerlを初めて使う場合に、よく「CPANの使い方がわからない」という話を聞くことも多いので、導入と利用が簡単なのはとても大事です。
なお、以降の説明はcpanm 1.6109を前提にしています。
cpanmの導入
システムperlで使う場合
あらかじめOSに同梱されているperl(システムperl)と一緒に使う場合は、以下のコマンドを実行するとインストールできます。
$ curl -L http://cpanmin.us | perl - --sudo App::cpanminus
なお、システムperlでcpanmを使う場合は、以降のコマンド例でも--sudo
オプションが必要になります。
ローカルperlで使う場合
また、Perlbrew やplenv などを使って自身のホームディレクトリ以下にインストールしたperl(ローカルperl)にインストールする場合は、--sudo
オプションを外して次のコマンドを実行してください。
$ curl -L http://cpanmin.us | perl - App::cpanminus
単体で使う場合
Perlの実行パスにインストールできない制約があるといった場合には、次のように1ファイルで実行可能なcpanmのコピーを手元にダウンロードすることもできます。
$ curl -LO http://xrl.us/cpanm
$ chmod +x cpanm
cpanmのアップデート
なお、一度インストールしたcpanmは、--selfupgrade
オプション付きで実行すると自分自身をアップデートできるので、更新も簡単です。
cpanmのオプション
cpanmが導入できたら、cpanmコマンドを実行することで、モジュールのダウンロード、ビルド、テスト、インストールといったさまざまな操作ができます。
cpanmはさまざまなオプションを持っているので、-h
オプションやperldoc
に目を通しておくとよいでしょう。
$ cpanm -h
$ perldoc cpanm
モジュールのインストール
モジュールのインストールは対象の指定方法がさまざまで、モジュール名、URL、tarballのパス、ローカルディレクトリなどいろいろなところからインストールできるようになっています。cpanmのPODからいくつかの例を引用します。
$ cpanm Test::More
$ cpanm MIYAGAWA/Plack-0.99_05.tar.gz
$ cpanm http://example.org/LDS/CGI.pm-3.20.tar.gz
$ cpanm ~/dists/MyCompany-Enterprise-1.00.tar.gz
$ cpanm .
また、最近のcpanmで、インストール周りに大きな機能追加が2つありました。
Gitサポート
1つ目はGitサポートです。バージョン1.6000 でgit://
で始まるgitプロトコルURLが、そして1.6106でgit@github.com:……
のようなgit-ssh URLがサポートされたので、Gitリポジトリからモジュールがインストールできるようになりました。
また、末尾に@hoge
という形式でブランチ名またはタグ、あるいはコミットハッシュを指定することで、特定の状態のものをインストールできるようにもなっています。
$ cpanm git://github.com/plack/Plack.git
$ cpanm git://github.com/plack/Plack.git@1.0000 # タグ
$ cpanm git://github.com/plack/Plack.git@devel # ブランチ
$ cpanm git@github.com:plack/Plack.git
バージョン指定のサポート
2つ目はバージョン指定のサポートです。~
や@
を使ってバージョン番号や範囲指定が可能になりました。以下にcpanmのPODから例を引用します。
$ cpanm Plack~1.0000 # 1.0000 or later
$ cpanm Plack~">= 1.0000, < 2.0000" # latest of 1.xxxx
$ cpanm Plack@0.9990 # ~"== 0.9990"
~
に続けてバージョン番号を指定すると、必要なミニマムバージョンを指定することになります。また「A以上B未満」といった範囲指定も~">= A, というように書くことができます。@
に続けてバージョン番号を指定した場合は、そのバージョンのみの指定という意味になり、これは~"== VERSION"
という書き方のショートカットです。
インストールオプション
テストなし、強制インストール── --notest、--force
Perlモジュールのインストールでは、ビルド、テスト、インストールという順番で暗黙的に処理が実行されますが、場合によってはテストフェーズを省略したり、あるいはテストがFAILしても自己責任でインストールしたいこともあり得ます。このようなケースではリスクを承知のうえで、--notest
や--force
オプションを使ってインストールを進めることができます。
$ cpanm --notest Test::More
$ cpanm --force Test::More
インストール実行中の出力の制御── --verbose、--quiet
インストール実行中の出力を詳細化あるいは抑制するには、--verbose
や--quiet
が利用できます。
--verbose
で出力すると、次のようにメッセージが詳細になります。
$ cpanm --verbose Test::More
cpanm (App::cpanminus) 1.6109 on perl 5.016003 built for
darwin-2level
Work directory is /Users/ikasam_a/.cpanm/
work/1367587171.3275
You have make /usr/bin/make
(省略)
Fetching http://www.cpan.org/authors/id/M/MS/MSCHWERN/
Test-Simple-0.98.tar.gz ... OK
Unpacking Test-Simple-0.98.tar.gz
(省略)
一方--quiet
だとこんなに出力がおとなしくなります。
$ cpanm --quiet Test::More
Successfully installed Test-Simple-0.98
1 distribution installed
ミラーサイトからインストール── --mirror、--mirror-only
モジュールを特定のCPANミラーサイトからインストールしたい場合は--mirror
オプションでミラーサイトを指定できます。たとえばプロジェクト独自のDarkPAN[1] を持っている場合は、このオプションと--mirror-only
オプションを併用して、指定したミラーサイトのみを使うようにすると便利です。
$ cpanm --mirror ~/minicpan Test::More
$ cpanm --mirror ~/minicpan --mirror-only Test::More
再インストール ── --reinstall
すでに導入済みのモジュールを再インストールしたい場合は--reinstall
オプションを使います。強制的に入れなおしてくれるので便利です。
$ cpanm --reinstall Test::More
(省略)
Successfully reinstalled Test-Simple-0.98
1 distribution installed
開発版のインストール ── --dev
また、最近追加になったオプションに--dev
というのがあります。現在は試験的な追加となっていますが、このオプションを使うとDEVELOPER RELEASEされているモジュールをインストールできます。いち早く開発版を試したいときに重宝します。
$ cpanm --dev App::cpanminus
インストール以外の操作
テストのみ実行 ── --test-only
インストール以外の利用方法もいくつかあります。たとえば--test-only
オプションではテストを実行するだけでインストールは行いません。
$ cpanm --test-only Test::More
(省略)
Successfully tested Test-Simple-0.98
依存関係のツリー表示、tarballのダウンロード
── --scandeps、--save-dists
--scandeps
を使うとモジュールの依存関係をツリー表示でき、--save-dists
オプションを使うと指定したモジュールのtarballをダウンロードできます。
$ cpanm --scandeps Plack
Plack-1.0024
\_ Test-Requires-0.06
\_ Try-Tiny-0.12
(省略)
これ以外にもまだまだオプションはありますので、必要に応じてperldoc cpanm
やman cpanm
で参照してください。
<続きの(3)はこちら 。>