xxenvはrbenv、pyenv、およびgoenvのように、インタプリタ言語バージョンをユーザレベルで管理するツールのことである。 言語ごとに、インスタンスがあるが、おおむね同じようなインターフェイスを持つ。
Rubyの実行環境を管理するツールである。
パッケージなどもあるが、ruby-buildが古いとせっかく rbenvでバージョン管理していても、新しいバージョンをインストールできないので、gitから直接取得する。
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv $ mkdir ~/.rbenv/plugins $ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build $ git clone https://github.com/rbenv/rbenv-default-gems.git ~/.rbenv/plugins/rbenv-default-gems $ echo bundler > ~/.rbenv/default-gems $ echo byebug >> ~/.rbenv/default-gems
また、以下の設定を ~/.bashrc に対しても行う。
if [ -d ${HOME}/.rbenv ]; then export RBENV_ROOT=${HOME}/.rbenv export PATH=${RBENV_ROOT}/bin:${RBENV_ROOT}/shims:${PATH} export RBENV_SHELL=bash eval "$(rbenv init -)" fi
ログインしなおすか、
$ . ~/.bashrc
するかしたのちに、rubyをインストールして、そのバージョンをデフォルトにする。
$ rbenv install 3.0.0 $ rbenv global 3.0.0
通常、git cloneで取り込んだ rbenvやプラグインは、git pullで更新をするのだが、これを良しなにやってくれる、rbenv-updateというものがある。
以下の手順で取り込んだら、ログインしなおすなどして、rbenv initを再実行すれば、rbenv updateというサブコマンドが利用できるようになる。
$ git clone https://github.com/rkh/rbenv-update.git ~/.rbenv/plugins/rbenv-update
pyenvは pythonのバージョンを管理する。
rbenv同様に、gitから導入し、パッケージを常にフレッシュに保つ。
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv $ cd ~/.pyenv && src/configure && make -C src
~/.bashrcに対しても変更を行う。
if [ -d ${HOME}/.pyenv ]; then export PYENV_ROOT=${HOME}/.pyenv export PATH=${PYENV_ROOT}/bin:${PYENV_ROOT}/shims:${PATH} export PYENV_SHELL=bash eval "$(pyenv init -)" fi
pythonに限らず、rubyでもgoでも、インタープリタの構築にはライブラリへの依存があり、ライブラリが存在しない場合は、構築に失敗あるいは特定の機能が利用できない状態で構築される。
pyenvは比較的親切に、昨日の欠落をレポートしてくれるが、それでも漏れるものもある。 以下は、3.9.2を構築した際に、bzip2のライブラリが欠落している旨を通知してきた例である。
$ pyenv install 3.9.2 Downloading Python-3.9.2.tar.xz... -> https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tar.xz Installing Python-3.9.2... WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib? Installed Python-3.9.2 to /home/araki/.pyenv/versions/3.9.2 $
Ubuntu 20.4 LTSで構築した際には、以下のライブラリを手動で追加した。他にも追加すべきものがあるかもしれない。
tkについては警告は出ないが、これがないと idle などのモジュールが使えない。
libffi-devがないと、_ctypeがないエラーに見舞われて難儀する。 必須と言ってもいいライブラリである。
ライブラリを追加したら、使いたいバージョンをインストールして、デフォルトのバージョンに設定する。
$ pyenv install 3.9.2 $ pyenv global 3.9.2
goenvはGNU goのバージョンを管理する。
言うまでもなく、gitから直接インストールする。
$ git clone https://github.com/syndbg/goenv.git ~/.goenv
~/.bashrcへも変更を行う。
if [ -d ${HOME}/.goenv ]; then export GOENV_ROOT=${HOME}/.goenv export PATH=${GOENV_ROOT}/bin:${GOENV_ROOT}/shims:${PATH} export GOENV_SHELL=bash eval "$(goenv init -)" fi
あとは、ビルドしてバージョンを設定する。
$ goenv install 1.16.0 $ goenv global 1.16.0