web-dev-qa-db-ja.com

Ruby gemがHome Brewで動作しない

Sudo gem install ...経由でインストールしたgemは実行できません(command not foundを取得します)。 Brewのインストールディレクトリである/usr/local/Cellar/にインストールするようです(また、/Library/Ruby/のgemも機能しません)。 gemを実行可能にするために他に必要なことはありますか?私は、Mac OS X 10.6でZrewを使用しており、Brewの場合はRuby v1.8を使用しています。

編集:今は機能しているようです。私は数時間出かけただけで、もう一度やってみました。

37
john2x

自作は素晴らしいです。ただし、brewnpmとは異なり、gem/usr/local/binでエイリアスを自動的に作成しません。

解決

私は非常にシンプルなアプローチに取り組みました(2019年3月現在):

export PATH=/usr/local/opt/Ruby/bin:$PATH
export PATH=/usr/local/lib/Ruby/gems/2.5.0/bin:$PATH

これを.bashrc(または.bash_profile.zshrcなど)に追加します。

それでおしまい!これで、すべてのRubyビンとインストールされたgemがシェルから利用可能になります!

Homebrewの古いバージョン(2017年以前)では、Ruby20と呼ばれるRuby 2の個別のパッケージがありました。代わりに次のスニペットを使用します:

export PATH=/usr/local/opt/Ruby20/bin:$PATH

この行は、その時に必要な唯一の行でした。ただし、Ruby 2.1では、gemは別のディレクトリに移動されました。/usr/local/opt/Ruby/binの下ではなく、代わりに/usr/local/lib/Ruby/gems/2.0.0/binになります( "2.0.0"が最後です) major Ruby Gemの目的のバージョン)。

使い方

Homebrewは、パッケージをインストールした場所を追跡し、そこを指すシンボリックリンクを維持します。

$ brew --prefix Ruby
/usr/local/opt/Ruby

$ l /usr/local/opt/Ruby
/usr/local/opt/Ruby@ -> ../Cellar/Ruby/2.5.3_1

事実上、/usr/local/opt/RubyPATHに追加することは、次と同じです。

export PATH=/usr/local/Cellar/Ruby/2.5.3_1/bin:$PATH

ただし、この長いバージョンは、現在インストールされているRubyのバージョンをハードコードし、次回Rubyをアップグレードするときに動作を停止します。

Gemに関しては、次のコマンドは、Gemが新しいパッケージを追加する正確なディレクトリを示します。

$ gem environment gemdir
/usr/local/lib/Ruby/gems/2.5.0

道具

これらのツールは、HomebrewとGemを自動的にブリッジするためのものでした。

私はこれらを使用していませんが、それらはあなたのために働くかもしれません。

122
Timo Tijhof

brew unlink Ruby; brew link Ruby/usr/local/bin/にシンボリックリンクを追加する場合があります。

$ which sass
$ brew unlink Ruby; brew link Ruby
Unlinking /usr/local/Cellar/Ruby/2.0.0-p0... 20 links removed
Linking /usr/local/Cellar/Ruby/2.0.0-p0... 31 symlinks created
$ which sass
/usr/local/bin/sass

brew --prefix Rubyはまだかなり遅いですが、/usr/local/opt/Ruby/binをパスに追加することもできます。

$ time brew --prefix Ruby
/usr/local/opt/Ruby
0.216
$ time brew --prefix Ruby
/usr/local/opt/Ruby
0.076
$ stat -f%Y /usr/local/opt/Ruby
../Cellar/Ruby/2.0.0-p0
21
Lri

私は自家製のものが好きです。これを行うにはおそらくもっと良い方法がありますが、実行する場合:

gem environment

これにより、関連するすべてのパスの素敵なリストが出力されます。 EXECUTABLE DIRECTORYというラベルが付いたものを探します。それがパスに追加したいものです。私の場合、それは/usr/local/Cellar/Ruby/1.9.3-p362/bin/Rubyですが、Rubyの新しいバージョンで変わると想像します。

私は/bin/bashをシェルとして使用していますが、それをパスに追加するプロセスはほとんど名前になっているはずです。

TextWranglerを(コマンドラインツール経由で)使用して、.profileファイルを編集します。それを行うには、それだけです:

edit ~/.profile

完了したら、ターミナルを閉じて新しいターミナルを開くか、次を実行します。

source ~/.profile
5
Jachin

HomebrewでインストールしたRubyでも問題ありません。

最初に:

Sudo nano /etc/paths

これにより、nanoエディターが表示されます。

次に、パスに次を追加します。

/usr/local/Cellar/Ruby/1.9.3-p194/bin

Rubyのバージョンはおそらく異なるでしょう。

それでおしまい。これで、gemが検出されます。

ああ、ところで、ファイルをnanoに保存するには、Ctrl + X> y> ENTERを押す必要があります。

5
sambehera

=> $(cd $(which gem)/..; pwd)を使用する代わりに

代わりにこれを使用できます=> $(brew --prefix Ruby)/bin

4
LaurentChardin

これは少し進化すると思います。

追加するだけ

export PATH=/usr/local/opt/Ruby/bin:$PATH

.bashrc(または.bash_profile、.zshrc/.bashrc、.. –使用するもの)。

Ruby自体に問題がある場合

brew unlink Ruby
brew link Ruby
2
gagarine