BETA

シェルはfishで、Homebrewを使わずにanynevを使ってrbenvを管理しようとしたら、何かと詰まった

投稿日:2019-02-11
最終更新:2019-02-12

なぜ詰まったか

macの場合のrubyのインストールはrbenvを使用すると良いとプログラミングスクールのテキストで教わりました。Homebrewを使ってrbenvをインストールして、rbenvで複数のバージョンのrubyを管理する。

そのまま進めればよかったのですが、「rbenvとは何なのか」に始まり、分からない言葉を一つずつ調べているうちに大きく脱線。
環境変数が何かも分からないままfishシェルに惹かれ、anyenvというものがあると知って入れようとしたら、色々と詰まった。(完全に自分のせい。)

テキストではシェルはbashの前提となっている。
そもそもbashの環境変数の書き方すら知らないのに、ドキュメントからfishの書き方に書き換えるというのはハードルが高すぎたというわけです。

テキスト範囲外なので、同期の知恵を借りたり自力で調べることになり、少しググり力が付いた気がします。
個人的には脱線してみて良かったと思っていますが、最初は一通りテキスト通りに進めて、全体像を掴むようにした方がいいのかも知れません。

 


そもそもrbenvとは

複数のバージョンのrubyを切り替えて使うためのプラグイン。

 

なぜanyenvを入れたのか

rbenv, nodenvなど**envをまとめて管理できる。
今後、ruby以外の言語を使用する前提で、anyenvを入れることにした。

 

Homebrewとは

Wikipedia

macOSオペレーティングシステム上でソフトウェアの導入を単純化するパッケージ管理システムのひとつ。

新しいソフトウェアのインストール、更新、削除を容易にするためのプログラム。
今はHomebrewでanyenvを入れることができるようです。
私がanyenvを使用したいと奮闘したときは、Homebrewから入れる選択肢は用意されていなかったと思う。

 

anyenvを使えるようにするまで

1. anyenvのインストール

bashでanyenvを使用するなら

実際に詰まってから記事にするまでに時間が経ってしまったので、最新の情報を検索しようとしたところ、bashを使用する前提であればこちらの記事にanyenvのインストールが分かりやすくまとめられていました。

2. pathを通す

anyenvやrbenvを使うにはpathを通す必要があるが、その記述はシェルがbashなのかfishなのかによって異なる。
また、pathを通すということはrbenvが何処にインストールされているかを示すということでもある。

Homebrewでrbenvのみを入れた場合(だいたいみんなこれ)

rbenvが保存される場所

$/usr/local/Cellar/rbenv/バージョン番号

ruby-buildが保存される場所

$/usr/local/Cellar/ruby-build/バージョン番号

Homebrew の仕組みにしたがって、適切なバージョンの実行可能ファイルに /usr/local/bin からのシンボリックリンクが作成される。

Githubからanyenvをcloneした場合(今回取り掛かったのはこれ)

git cloneした際に指定したディレクトリに保存される。

たとえば、以下のコマンドを打ち込んだ場合、~/.anyenv に保存したことになる。

git clone https://github.com/anyenv/anyenv.git ~/.anyenv

つまり /Users/***.anyenv という隠しディレクトリが作成され、そこに保存したということ。
***の部分は各アカウントによって異なる。

rbenvが保存される場所

$HOME/.anyenv/envs/rbenv/versions/

ruby-buildが保存される場所

$HOME/.anyenv/envs/rbenv/pulgins/ruby-build

anyenv未使用ならrbenvは

$HOME/.rbenv

anyenv未使用ならruby-buildは

$HOME/.rbenv/pulgins/ruby-build

fishシェルにpathを通すには

設定用ファイルを作成する。

~/.config/fish/config.fish

# anyenvのpathを通すための記述  
set --export PATH "$HOME/.anyenv/bin" $PATH  

# rbenvのpathを通すための記述  
set -x RBENV_ROOT "/Users/***/.anyenv/envs/rbenv"  
set -x PATH $PATH "/Users/***/.anyenv/envs/rbenv/bin"  
set -gx PATH '/Users/***/.anyenv/envs/rbenv/shims' $PATH  
set -gx RBENV_SHELL fish  
source '/Users/***/.anyenv/envs/rbenv/libexec/../completions/rbenv.fish'  
command rbenv rehash 2>/dev/null  
function rbenv  
  set command $argv[1]  
  set -e argv[1]  

  switch "$command"  
  case rehash shell  
    source (rbenv "sh-$command" $argv|psub)  
  case '*'  
    command rbenv "$command" $argv  
  end  
end

3. プラグイン用のフォルダを作成

mkdir -p $(anyenv root)/plugins

4. anyenv-updateのインストール

anyenv-updateは〜envをupdateするためのプラグイン。

git clone https://github.com/znz/anyenv-update.git ~/.anyenv/plugins/anyenv-update

5. anyenv-gitのインストール

anyenv-gitはanyenvでgitのコマンドを実行できるようにするためのプラグイン。

git clone https://github.com/znz/anyenv-git.git ~/.anyenv/plugins/anyenv-git

6. rbenvのインストール

anyenv install rbenv

7. rubyのインストール

anyenv上のruby-buildを最新にする。

別のバージョンのrubyを追加で入れる場合はruby-buildの最新化をしてから行う。

cd ~/.anyenv/envs/rbenv/plugins/ruby-build && git pull origin master

インストール可能なrubyのバージョンを確認

rbenv install -l

バージョンを指定してインストール

rbenv install ○.○.○

メインで使用するバージョンを指定

rbenv global ○.○.○

今いるローカル限定でrubyのバージョンを指定する場合

rbenv local ○.○.○

現在のバージョンを確認

以下のどれでも確かめることができる。

rbenv versions  
ruby -v  
ruby --version

 

無事にanyenvでrbenvを管理して複数のバージョンのrubyを入れられるようになりました。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

学んだことの整理と忘備録としてアウトプット始めました。ログは自分用のちょっとしたメモ書き。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!