2013年頃に登場した plenv
ですが, 2018年となった今でもPerlの環境構築におけるデファクトスタンダードの立ち位置を維持しています.
この記事では, plenv
を使ったモダンなPerlの環境構築の手法について紹介します.
またplenv
のような形で, 様々な言語のために開発された**env
を束ねて管理できるanyenv
を利用して, plenv
を導入する方法についても紹介します.
plenvのインストール
Git
$ git clone git://github.com/tokuhirom/plenv.git ~/.plenv $ git clone git://github.com/tokuhirom/Perl-Build.git ~/.plenv/plugins/perl-build/ $ echo 'export PATH="$HOME/.plenv/bin:$PATH"' >> ~/.your_profile $ echo 'eval "$(plenv init -)"' >> ~/.your_profile $ exec $SHELL -l
GitHubからplenv
と, 実際にPerlのインストールを実施するときに必要なperl-build
をcloneしてパスを通し, シェルを起動する際にplenv init -
を実行するように設定します.
なお, ~/.your_profile
の部分は, 利用しているシェルに応じて適切な設定ファイル(bashなら~/.bash_profile
, zshなら~/.zshrc
など)に書き込むように読み替えましょう.
Homebrew
macOSを使っている場合, Homebrewでのインストールも可能です.
$ brew update $ brew install plenv $ brew install perl-build
この後, Gitを利用したインストールと同じく,
eval "$(plenv init -)"
を, 適切な設定ファイルに書き込めばインストール完了です.
anyenvを利用したplenvのインストール
plenv
はPerlの開発環境をするにあたって必須と言えるツールですが, 同様のツールがRubyの場合はrbenv
, Pythonの場合はpyenv
, Node.jsの場合はndenv
... といった具合にそれぞれ開発されています.
それぞれ丁寧にインストールしてもいいのですが, **env
を統一して管理できるように開発されたanyenv
というツールが存在するので, Perl以外にもRubyやPython, Node.jsの環境も構築したいのであれば, anyenv
を利用してplenv
をインストールするのがおすすめです.
$ git clone https://github.com/riywo/anyenv ~/.anyenv $ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.your_profile $ echo 'eval "$(anyenv init -)"' >> ~/.your_profile $ exec $SHELL -l
続いて, anyenv
を利用して, plenv
をインストールします.
$ anyenv install plenv
これでplenv
が利用できるようになりました. 実際の使い方については, GitやHomebrewで(anyenv
を利用せず)plenv
をインストールしたときと同様です.
使い方
ヘルプの確認: help
$ 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
でヘルプを閲覧できます. また, plenv help <command>
で, 任意のコマンドのヘルプを閲覧することができます.
plenvのバージョン確認: --version
$ plenv --version plenv 2.2.0-14-gb2ea2fd
plenv --version
で, 現在利用しているplenv
のバージョンを確認できます.
Perlのインストール: install
利用可能なバージョンの確認
$ plenv install -l Available versions: 5.6.0 5.6.1-TRIAL1 5.6.1-TRIAL2 5.6.1-TRIAL3 (中略) 5.26.0 5.26.1-RC1 5.26.1 5.27.1 5.27.2 5.27.3 5.27.4 5.27.5 5.27.6 5.27.7 5.27.8 5.27.9
plenv install -l
で, 現在インストール可能なperlのバージョンを表示することができます.
インストールの実行
plenv install <version>
で, 指定したバージョンのperlをインストールすることができます.
$ plenv install 5.26.1
このとき, --as
オプションで別名を付けることが可能です.
$ plenv install 5.26.1 --as 5.26
このコマンドでは, Perlのバージョン5.26.1
を, 5.26
という名前でインストールします.
現在有効なPerlのバージョン
$ plenv version 5.26.1 (set by /home/username/.anyenv/envsplenv/version)
plenv version
で, plenv
によってインストールされ, 現在有効になっているPerlのバージョン(perl
コマンドを実行したときに呼び出されるPerlのバージョン)を表示します.
また, (set by ...)
の部分は, 現在有効になっているPerlのバージョンが, どこで設定されたかを示しています(後述).
plenv
が使用するPerlのバージョンの設定
plenvは, 以下の順番で使用するperlのバージョンを決定します.
- 環境変数
PLENV_VERSION
- 今のディレクトリか, 上位ディレクトリのローカル設定(
.perl-version
) - グローバル設定(
~/.plenv/version
,anyenv
を利用してplenv
をインストールした場合は~/.anyenv/envs/plenv/version
) - システムのPerl
環境変数: PLENV_VERSION
$ plenv version 5.26.1 (set by /home/username/.anyenv/envs/plenv/version) $ export PLENV_VERSION=5.26.0 $ plenv version 5.26.0 (set by PLENV_VERSION environment variable)
環境変数PLENV_VERSION
に使用したいバージョンをセットすると, 常にそのバージョンのperlが使用されるようになります.
また, 環境変数PLENV_VERSION
は, plenv shell <version>
コマンドでセットすることができます.
$ plenv version 5.26.1 (set by /home/username/.anyenv/envs/plenv/version) $ plenv shell 5.26.0 $ plenv version 5.26.0 (set by PLENV_VERSION environment variable)
plenv shell --unset
で, 環境変数PLENV_VERSION
を無効にすることもできます.
$ plenv shell --unset $ plenv version 5.26.1 (set by /home/username/.anyenv/envs/plenv/version)
ローカル設定
$ cd ~/hoge/fuga $ pwd /home/username/hoge/fuga $ plenv version 5.26.1 (set by /home/username/.anyenv/envs/plenv/version) $ plenv local 5.26.0 $ plenv version 5.26.0 (set by /home/username/hoge/fuga/.perl-version) $ plenv local 5.26.0 $ cd ../ $ pwd /home/username/hoge $ plenv version 5.26.1 (set by /home/username/.anyenv/envs/plenv/version)
plenv local <version>
で, ローカル設定を有効にします.
また, plenv local
で, 今いるディレクトリで有効となるローカル設定を確認することができます.
このコマンドが実行されると, カレントディレクトリに.perl-version
というファイルが作成されます.
ローカル設定が有効となるのは, .perl-version
があるディレクトリよりも下位のディレクトリなので, .perl-version
があるディレクトリから1つ上のディレクトリに移動すると, そのローカル設定は適用されなくなります.
$ plenv version 5.26.0 (set by /home/username/hoge/fuga/.perl-version) $ plenv local --unset $ plenv version 5.26.1 (set by /home/username/.anyenv/envs/plenv/version)
plenv local --unset
で, ローカル設定を解除できます(つまり.perl-version
を削除します).
グローバル設定
$ plenv global 5.26.1 $ plenv global 5.26.1
plenv global <version>
で, グローバル設定を変更できます.
また, plenv global
で, 現在設定されているグローバル設定を確認することができます.
環境変数PLENV_VERSION
やローカル設定が有効でない場合, このグローバル設定で設定されたバージョンのPerlが常に利用されます.
インストール済みのPerl一覧: versions
$ plenv versions system * 5.26.1 (set by /home/username/.anyenv/envs/plenv/version)
plenv versions
で, plenv
によってインストールされたPerlのバージョンと, 現在どのバージョンが有効になっているか(prefixに*
が付いているもの)を確認することができます.
設定ファイルの表示: version-file
$ plenv version-file /home/username/.anyenv/envs/plenv/version
plenv version-file
で, 現在のディレクトリで有効になるPerlが, どのファイルで指定されるかを表示することができます(.perl-versnion
ファイルがあればそのパスを, なければ(= グローバル設定が有効なら)/path/to/plenv/version
などが表示されます).
これはあくまで, ローカル設定/グローバル設定がどのファイルで指定されているかを示すものなので, 環境変数PLENV_VERSION
やplenv shell
などでPerlのバージョンを指定している場合であっても.perl-version
ないしversion
へのパスが表示されます.
Perlのアンインストール: uninstall
$ plenv uninstall 5.26.0
plenv uninstall <version>
で, plenv
によって導入済みのPerlを削除することができます.
cpanm
のインストール: install-cpanm
$ plenv install-cpanm
plenv install-cpanm
で, 現在有効になっているバージョンのPerlに, cpanm
(App::cpanminus)をインストールすることができます.
コマンドのフルパス確認: which
$ which cpanm /home/username/.anyenv/envs/plenv/shims/cpanm $ plenv which cpanm /home/username/.anyenv/envs/plenv/versions/5.26.1/bin/cpanm
plenv which <command>
を使うことで, 現在有効になっているバージョンのPerlにインストールされた任意のコマンドへのフルパスを表示できます.
コマンドがインストール済みのPerlのバージョン: whence
$ plenv whence cpanm 5.26.1
plenv whence <command>
で, 任意のコマンドが実行できる(インストール済み)のPerlのバージョンの一覧を表示できます.
上記のコマンドでは, cpanm
が実行できる, つまりcpanm
がインストール済みのPerlのバーションの一覧を表示しています.
バージョン間のモジュールの移動: migrate-modules
$ plenv migrate-modules 5.26.0 5.26.1
plenv migrate-modules <from> <to>
で, <from>
のバージョンのPerlにインストール済みのモジュールを, <to>
のバージョンのPerlにインストールすることができます.
インストール済みのモジュール一覧: list-modules
$ plenv list-modules Algorithm::Diff Algorithm::Evolutionary Algorithm::Permute Amon2 (中略) multidimensional namespace::autoclean namespace::clean strictures syntax
plenv list-modules
で, 現在有効なperlのバージョンに既にインストールされているモジュールの一覧を表示できます.