asdf触ってみた

RWCで範囲が広いrbenv的なやつ教えてもらったので隔離環境で試してみる。Python向けにpyenvとか手で入れるなら言語が増える度にそうなるので嫌だった。rbenvを捨てるかrubyプラグインを使わないかにしないといけないと教えて貰っていたが、1個に絞れるならrbenvである必要はない(というか中でrbenvもpyenvも呼ばれてるのかしら?)のでこれにする。

ぐぐりにくいので名前はひどいけど、anyenvだと `$ anyenv install rbenv` して `rbenv install` するみたいな流れになるので今知ってる範囲だとこちらの方が好ましい。Rubyは--HEADでruby-buildインストールしてるのでそれで困りそうだから本格的に移行はせずにまだ仮想環境だけだけど。

gitが入ってる状態で、READMEの通りにしてインストール。

$ sudo apt-get install -y automake autoconf libreadline-dev libncurses-dev libssl-dev libyaml-dev libxslt-dev libffi-dev libtool unixodbc-dev
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.4.0
$ echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bashrc
$ echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc

シェルを再読み込みしてあとはRubyPythonを入れてみる。

$ asdf plugin-add ruby       # Ruby用のプラグインをインストール
$ asdf install ruby 2.4.2    # Ruby 2.4.2をインストール
$ asdf plugin-add python     # Python用のプラグインをインストール
$ asdf install python 2.7.14 # Python 2.7.14をインストール
$ asdf install python 3.6.3  # Python 3.6.3をインストール

使ってみる。

$ ruby -v
No version set for ruby
$ asdf global ruby 2.4.2
$ ruby -v
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]

$ python -V
No version set for python
$ asdf global python 3.6.3
$ python -V
Python 3.6.3

以下を見るに、gem installした時も環境が汚れそうにない(/home/vagrant/.asdf/installs/ruby/2.4.2/lib/ruby/gems/2.4.0にインストールされそう)。pipで同じ情報を見る方法がまだわからない。asdf plugin-updateすればプラグインの更新まではできそう。

$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 2.6.13
  - RUBY VERSION: 2.4.2 (2017-09-14 patchlevel 198) [x86_64-linux]
  - INSTALLATION DIRECTORY: /home/vagrant/.asdf/installs/ruby/2.4.2/lib/ruby/gems/2.4.0
  - USER INSTALLATION DIRECTORY: /home/vagrant/.gem/ruby/2.4.0
  - RUBY EXECUTABLE: /home/vagrant/.asdf/installs/ruby/2.4.2/bin/ruby
  - EXECUTABLE DIRECTORY: /home/vagrant/.asdf/installs/ruby/2.4.2/bin
  - SPEC CACHE DIRECTORY: /home/vagrant/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /home/vagrant/.asdf/installs/ruby/2.4.2/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
    - /home/vagrant/.asdf/installs/ruby/2.4.2/lib/ruby/gems/2.4.0
    - /home/vagrant/.gem/ruby/2.4.0
    ...

以下がプラグインの保存先みたいだけど、このレポジトリを覗くにrbenvは使ってなさそう。

$ cd ~/.asdf/plugins/ruby/
$ git remote -v
origin	https://github.com/asdf-vm/asdf-ruby (fetch)
origin	https://github.com/asdf-vm/asdf-ruby (push)

$ git branch
* master

うーん、以下ら辺を見るに「このバージョンのRubyはこのURLな」とだけするからrc1とかも簡単に入りそうだけどそれは微妙だ。anyenvの方がいいかもしれない(使った事ないけどあっちはいまのところラッパーでない事だけがつらい)。branchを見たのはbranchによってオプションを指定する事ができるかもと思ってだけどそれ以前の話だった。

PRもIssueも見当たらないけど皆それでいいのかしら?(rbenvのruby-buildみたいにする事になると思うのだけど

とりあえず隔離環境でだけ使う事にしてもう少し詳しくなろう。でもanyenvにする気がする。