読者です 読者をやめる 読者になる 読者になる

初代Masteries

きっとモヒカンにもなれないお前たちに告げる!!!

続・plenvを使ってみた

以前, 「plenvを使ってみた」という記事で紹介した, @さんが開発したPerlのインストール管理ツールplenvが, シェルスクリプトで再実装されたそうです.

これまでのplenvはPerlで実装されていた為, perlを実行する前にperlを実行する必要がありましたが, シェルスクリプトで実装することでその必要がなくなり, 多少の高速化が見込まれる... ようです.

これに伴い, いろいろと機能の追加/変更が行われているようなので, v1.9.0以降の, シェルスクリプトで実装されたplenvの使い方をまとめてみました.

以下, Perlで実装された従来のplenv(v1.6.0まで)を「Perl版」, それ以降のシェルスクリプトで実装されたplenvを「シェルスクリプト版」と称します.

なお, 今回利用したplenvのバージョンは, 2013年6月4日時点で最新のv2.0.1です.

インストール

Git(GitHub)かHomebrewを利用してインストールできます.

Git (GitHub)

$ git clone git://github.com/tokuhirom/plenv.git ~/.plenv
$ echo 'export PATH="$HOME/.plenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(plenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l

GitHubからcloneして, 従来のPerl版と同じくPATHを通し, シェルの起動時に'plenv init'コマンドを実行するよう設定します.
なお, 2行目・3行目の'.bash_profile'については, Ubuntuを利用している場合は'.profile'に, zshを利用している場合は'.zshrc'に読み替えて実行します.
最後に, シェルを再起動してインストール完了です.

なお, シェルスクリプト版ではPerl版と異なり, Perlのインストールを実行するperl-buildを別途用意する必要があります.

$ git clone git://github.com/tokuhirom/Perl-Build.git ~/.plenv/plugins/perl-build/

このコマンドでplenvからperl-buildが使えるようになり, 'plenv install'でPerlをインストールすることができるようになります.

Homebrew

$ brew update
$ brew install plenv
$ brew install perl-build

この後, Gitを利用したインストールと同じく,

eval "$(plenv init -)"

を, 適切なファイルに書き込めばインストール完了です.

シェルスクリプト (2013年6月5日追記)

Perl Beginnersでおなじみの@さんが, シェルスクリプト版plenvを簡単にインストールできるシェルスクリプトを書かれたそうです. 詳しくはこちら.

アップグレード

既にPerl版のplenvを導入している場合,

$ cd ~/.plenv
$ git pull

でシェルスクリプト版にアップグレードすることができます(perl-buildは別途導入する必要があります).

Perl版の使用

既にPerl版を利用していて, Perl版の最終版(v1.6.0)にアップグレードしたい場合は,

$ cd ~/.plenv
$ git fetch
$ git checkout v1.6.0

でOKです(plenvのREADME.mdでは, 'v0.3.0'となっていますが, 'v1.6.0'が正しいはずです).

使い方

ヘルプの確認

$ plenv help
Usage: plenv <command> [<args>]

Some useful plenv commands are:
   commands            List all available plenv commands
   local               Set or show the local application-specific Perl version
   global              Set or show the global Perl version
   shell               Set or show the shell-specific Perl version
   install             Install a Perl version using the perl-build plugin
   uninstall           Uninstall a specific Perl version
   rehash              Rehash plenv shims (run this after installing executables)
   version             Show the current Perl version and its origin
   versions            List all Perl versions available to plenv
   which               Display the full path to an executable
   whence              List all Perl versions that contain the given executable
   list-modules        List cpan modules in current perl
   migrate-modules     Migrate cpan modules from other version
   install-cpanm       Install cpanm

See `plenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/tokuhirom/plenv#readme

$ plenv help install
Usage: plenv install [-v|--verbose] <version>
       plenv install [-v|--verbose] /path/to/definition
       plenv install -l|--list

  -l/--list        List all available versions
  -v/--verbose     Verbose mode: print compilation status to stdout

For detailed information on installing Perl versions with
perl-build, including a list of environment variables for adjusting
compilation, see: https://github.com/tokuhirom/perl-build#usage

'plenv help'でヘルプを閲覧できます. また, 'plenv help <コマンド>'で, 任意のコマンドのヘルプを閲覧することができます.

plenvのバージョン確認

$ plenv --version
plenv 2.0.1

'plenv --version'で, インストールされているplenvのバージョンを確認できます.

perlのインストール

インストール可能なPerlの一覧 (要 perl-build)
$ plenv install -l
Available versions:
 5.6.0
 5.6.1-TRIAL1
 5.6.1-TRIAL2
 5.6.1-TRIAL3
     (中略)
 5.17.10
 5.17.11
 5.18.0-RC1
 5.18.0-RC2
 5.18.0-RC3
 5.18.0-RC4
 5.18.0
 5.19.0

'plenv install -l'で, 現在インストール可能なperlのバージョンを表示することができます.
README.mdでは従来のPerl版と同じく'plenv available'で確認できると書かれていますが, シェルスクリプト版ではavailableコマンドは用意されていないようです.

インストールの実行 (要 perl-build)

'plenv install 'で, 指定したバージョンのperlをインストールすることができます.

$ plenv install 5.18.0

従来のPerl版のように, '--as'オプションで別名を付けることはできないようです.

導入済みのperl一覧

$ plenv versions
  system
* 5.16.3 (set by /home/username/.plenv/version)
  5.18.0

従来のPerl版では'plenv list'で導入済みのperlの一覧を確認することができましたが, シェルスクリプト版では'plenv versions'で確認できます.
現在有効になっているバージョン('*'が付いているもの)と, そのバージョンがどこで設定されているかも確認することができます.

使用するperlのバージョンの設定

plenvは, 以下の順番で使用するperlのバージョンを決定します.

  1. 環境変数'PLENV_VERSION'
  2. 今のディレクトリか, 上位ディレクトリのローカル設定('.perl-version')
  3. グローバル設定('~/.plenv/version')
  4. システムのperl
環境変数'PLENV_VERSION'
$ plenv version
5.16.3 (set by /home/username/.plenv/version)

$ export PLENV_VERSION=5.18.0

$ plenv version
5.18.0 (set by PLENV_VERSION environment variable)

環境変数'PLENV_VERSION'に使用したいバージョンをセットすると, 常にそのバージョンのperlが使用されるようになります.

また, 環境変数'PLENV_VERSION'は, 'plenv shell <バージョン>'コマンドでセットすることができます.

$ plenv version
5.16.3 (set by /home/username/.plenv/version)

$ plenv shell 5.18.0

$ plenv version
5.18.0 (set by PLENV_VERSION environment variable)

更に, 'plenv shell --unset'コマンドで, 環境変数'PLENV_VERSION'を無効にすることもできます.

$ plenv version
5.18.0 (set by PLENV_VERSION environment variable)

$ plenv shell --unset

$ plenv version
5.16.3 (set by /home/username/.plenv/version)
ローカル設定
$ cd ~/hoge/fuga
$ pwd
/home/username/hoge/fuga

$ plenv version
5.16.3 (set by /home/username/.plenv/version)

$ plenv local 5.18.0

$ plenv version
5.18.0 (set by /home/username/hoge/fuga/.perl-version)
$ plenv local
5.18.0

$ cd ../
$ pwd
/home/username/hoge

$ plenv version
5.16.3 (set by /home/username/.plenv/version)

'plenv local <バージョン>'で, ローカル設定を有効にします.
また, 'plenv local'で, 今いるディレクトリで有効となるローカル設定を確認することができます.

このコマンドが実行されると, カレントディレクトリに'.perl-version'というファイルが作成されます.
ローカル設定が有効となるのは, '.perl-version'があるディレクトリよりも下位のディレクトリなので, '.perl-version'があるディレクトリから1つ上のディレクトリに移動すると, そのローカル設定は適用されなくなります.

$ plenv version
5.18.0 (set by /home/username/hoge/fuga/.perl-version)

$ plenv local --unset

$ plenv version
5.16.3 (set by /home/username/.plenv/version)

'plenv local --unset'で, ローカル設定を解除できます('.perl-version'を削除します).

グローバル設定
$ plenv global 5.18.0
$ plenv global
5.18.0

'plenv global <バージョン>'で, グローバル設定を変更できます.
また, 'plenv global'で, 現在設定されているグローバル設定を確認することができます.
環境変数'PLENV_VERSION'やローカル設定が有効でない場合, このグローバル設定で設定されたバージョンのperlが利用されます.

現在有効なperlのバージョン

$ plenv version
5.16.3 (set by /home/username/.plenv/version)

'plenv version'で, 現在有効になっているperlのバージョンを表示します.

$ plenv version-file
/home/username/.plenv/version

また, 'plenv version-file'で, 現在有効になっているperlのバージョンが, どのファイルで設定されているかを確認することができます.

perlのアンインストール (要 perl-build)

$ plenv uninstall 5.16.3

'plenv uninstall <バージョン>'で, 導入済みのperlを削除することができます.
この場合, 既に導入済みの5.16.3を削除します.

cpanmのインストール

$ plenv install-cpanm

'plenv install-cpanm'で, 現在有効になっているバージョンのperlにcpanmをインストールすることができます.

コマンドのフルパス確認

$ which cpanm
/home/username/.plenv/shims/cpanm

$ plenv which cpanm
/home/username/.plenv/versions/5.16.3/bin/cpanm

'plenv which <コマンド>'を使うことで, 現在有効になっているバージョンのperlにインストールされた任意のコマンドへのフルパスを表示できます.

コマンドがインストール済みのperlのバージョン

$ plenv whence cpanm
5.16.3

'plenv whence <コマンド>'で, 任意のコマンドが実行できる(インストール済み)のperlのバージョンの一覧を表示できます.
上記のコマンドでは, cpanmが実行できる, つまりcpanmがインストール済みのperlのバーションの一覧を表示しています.

バージョン間のモジュールの移動

$ plenv migrate-modules 5.16.3 5.18.0

'plenv migrate-modules <移動元> <移動先>'で, <移動元>のバージョンのperlにインストール済みのモジュールを, <移動先>のバージョンのperlにインストールすることができます.

インストール済みのモジュール一覧

$ plenv list-modules
Acme::SuddenlyDeath
Algorithm::Diff
Algorithm::Evolutionary
Algorithm::Permute
Amon2
     (中略)
multidimensional
namespace::autoclean
namespace::clean
strictures
syntax

'plenv list-modules'で, 現在有効なperlのバージョンに既にインストールされているモジュールの一覧を表示できます.