ユーザ用ツール

サイト用ツール


xxenv

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
xxenv.txt · 最終更新: 2021/05/22 10:15 by araki