Help us understand the problem. What is going on with this article?

anyenvの導入方法

はじめに

実務に入って3日が経ちました。

初日はオリエンテーションや歓迎会やPC周りの設定など、2日目は事業の詳細説明、そして3日目はサービスの開発環境構築を実施しました。

「Rubyだけじゃなくて、PthonとかNode.jsとかも使うからanyenvが便利でオススメだよ」と言われ、anyenvとは何ぞや?どうやって入れるのだ?ということを調べながらインストールしたので、今回は自分用にanyenvについての備忘録を書いていこうと思います。

anyenvとは

「anyenvとは」でググると以下の記事がヒットし、概要をとても簡単に書いてくれていました。

Mac に anyenv でサクッとマルチ開発環境構築

anyenv とは、ざっくり言うと、rbenv とか、nbenv とか複数バージョンをインストールできる **env 系をまとめて管理できるツール。

とのことです。

環境

  • macOS Mojave
  • Homebrew 2.0.2

いざ導入

僕の場合はbashを使用しているので環境変数を.bash_profileに保存するようにしました。

$ brew install anyenv
$ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l

ここでふと既にrbenvが入ってても問題ないのか?という素朴な疑問が発生。「anyenv」でググりました。

すると、anyenvを使うを発見。

既に**envを利用している人は、いままでの設定フィルを削除するか移動します。こちらの記事が参考になります。

とのこと。

念の為確認。

ls -d ~/.*env

/Users/username/.anyenv
/Users/username/.rbenv

rbenvが入っていることを確認したので削除することにしました。

# .rbenvを削除
$ rm -rf ~/.rbenv
$ rm -rf /usr/local/bin/rbenv
$ rm -rf /usr/local/Cellar/rbenv

# 削除されたか確認
$ ls -d ~/.*env
-> /Users/fukuzawa_masashi/.anyenv  # .rbenvがなくなっていることを確認
$ rbenv -v
bash: /usr/local/bin/rbenv: No such file or directory # bin/rbenvがなくなっていることを確認
# Homebrewに問題ないか確認
$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: Broken symlinks were found. Remove them with `brew cleanup`:
  /usr/local/opt/rbenv
  /usr/local/var/homebrew/linked/rbenv

問題あるとのことなので指示通りbrew cleanupを実行。

$ brew cleanup
Pruned 2 symbolic links from /usr/local

$ brew doctor
Your system is ready to brew.

問題解決。

念のためHomebrewのバージョンを確認。

$ brew --version
Homebrew 2.0.2
Homebrew/homebrew-core (git revision 3005; last commit 2019-03-04)

Homebrewも問題なし。

更に調べてみると既に入っている**envを全てanyenv管理にするという記事に.bash_profileのrbenvに関する部分を削除する必要があるとのことだったので削除。

.bash_profile
# .bash_profileのこの部分を削除
export PATH="~/.rbenv/shims:/usr/local/bin:$PATH"
eval "$(rbenv init -)"

今の状態はhomebrewあり、.anyenvありという状態なので続きから開始することにしました。

$ echo 'eval "$(anyenv init -)"' >> ~/.your_profile
$ exec $SHELL -l

# エラー発生
\e[33mANYENV_DEFINITION_ROOT(/Users/fukuzawa_masashi/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:\e[0m
\e[33m> anyenv install --init\e[0m

指示通りanyenv install --initを実行。

$ anyenv install --init
Manifest directory doesn't exist: /Users/fukuzawa_masashi/.config/anyenv/anyenv-install
Do you want to checkout ? [y/N]: y
Cloning https://github.com/anyenv/anyenv-install.git master to /Users/fukuzawa_masashi/.config/anyenv/anyenv-install...
Cloning into '/Users/fukuzawa_masashi/.config/anyenv/anyenv-install'...
remote: Enumerating objects: 44, done.
remote: Counting objects: 100% (44/44), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 44 (delta 1), reused 43 (delta 1), pack-reused 0
Unpacking objects: 100% (44/44), done.

Completed!

再度シェルをリフレッシュ。

$ exec $SHELL -l

エラーが出なくなりました。

動作確認。いい感じ。

$ anyenv install -l
  Renv
  crenv
  denv
  erlenv
  exenv
  goenv
  hsenv
  jenv
  luaenv
  nodenv
  phpenv
  plenv
  pyenv
  rbenv
  sbtenv
  scalaenv
  swiftenv

rbenvをインストール

 $ anyenv install rbenv

anyenvを使うに従って、

各**env環境をUpdateするためのプラグインをインストール。

$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
$ anyenv update

いざrbenvをインストール。

$ rbenv install 2.6.1  # 入れたいバージョンを記述
$ rbenv global 2.6.1   # 2.6.1を基本的に使用するように指示
$ ruby -v              # この例の場合、バージョンを確認、2.6.1になっていればOK

これにてrbenvのインストールは完了!

その他Node.jsなども以下のようにインストールができました。

$ anyenv install nodenv
$ nodenv install -l
$ nodenv install 11.10.1
$ nodenv global 11.10.1

まとめ

  • anyenvを導入した時の流れや躓いた箇所をまとめました。
  • anyenvを入れると様々な言語のインストールやバージョン管理が簡単にできました。
  • プラグインなどについては今後適宜入れていきたいと思います。

参考URL

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away