====== xxenv ====== ===== 概要 ===== xxenvはrbenv、pyenv、およびgoenvのように、インタプリタ言語バージョンをユーザレベルで管理するツールのことである。 言語ごとに、インスタンスがあるが、おおむね同じようなインターフェイスを持つ。 ===== xxenv ===== ==== rbenv ==== === 概要 === 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 === rbenv-update === 通常、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 ==== === 概要 === 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で構築した際には、以下のライブラリを手動で追加した。他にも追加すべきものがあるかもしれない。 * libbz2-dev * libreadline-dev * tk * tk-dev * libffi-dev * libssl-dev tkについては警告は出ないが、これがないと idle などのモジュールが使えない。 libffi-devがないと、_ctypeがないエラーに見舞われて難儀する。 必須と言ってもいいライブラリである。 ライブラリを追加したら、使いたいバージョンをインストールして、デフォルトのバージョンに設定する。 $ pyenv install 3.9.2 $ pyenv global 3.9.2 ==== goenv ==== === 概要 === 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