web-dev-qa-db-ja.com

システム全体の更新後にGemインストールが実行されないArchLinux

ターゲットフォルダ内で_sass --watch scss:css_を実行しようとすると、_command not found_というメッセージが返されます。

私はsassをインストールしたことを知っています。 _gem list_は、インストールされていることを示していません。

_Sudo gem install sass_を実行すると、次のメッセージが表示されます。

_WARNING: You don't have /root/.gem/Ruby/2.3.0/bin in your PATH
         gem executables will not run.
_

_.bashrc_ファイルに移動します。 PATH="$(Ruby -e 'print Gem.user_dir')/bin:$PATH"があります

念のため_/etc/bash.bashrc_にも入れました。何も変わりません。

/ etc/profileに移動し、次を挿入します。

_#Setting the GEM_PATH and GEM_HOME variables may not be necessary, check 'gem env' output to verify whether both variables already exist 
 GEM_HOME=$(ls -t -U | Ruby -e 'puts Gem.user_dir')
 GEM_PATH=$GEM_HOME
 export PATH=$PATH:$GEM_HOME/bin
_

プロファイルを_. /etc/profile_でリロードします

_Sudo gem install sass_でsassを再インストールしてみます

それでも同じエラーメッセージ。 _gem list_はまだsassを表示しません

今何?

2
Andrew

Arch Linuxのデフォルトでは、gemを実行すると、gemはシステム全体(~/.gem/Ruby/に)ではなく、ユーザーごとに(/usr/lib/Ruby/gems/に)インストールされます。

これは、Archでgemを管理するための最良の方法と考えられています。そうしないと、Pacmanによってインストールされたgemに干渉する可能性があるためです。

gemコマンドをrootとして実行し、--no-user-installフラグを追加することで、Gemsをシステム全体にインストールできます。このフラグは、--user-install(システム全体)または--no-user-install(ユーザーごと、システム全体をオーバーライド)で/etc/gemrc~/.gemrcに置き換えることでデフォルトとして設定できます。

ターミナルに入力します

Sudo gem install sass --no-user-install

Ruby gemsについてはArchwikiを参照してください。ユーザーごとまたはシステム全体でgemをインストールするを読んでください

3
Romano

Sudoを使用してgemをインストールしようとしていますが、システムはユーザーのパスを認識していますが、Sudoユーザーのパスは認識していません。

これを解決するには、~/.bashrcまたは.~/zshrcファイルに次の行を追加します。

PATH="$(Ruby -e 'print Gem.user_dir')/bin:$PATH"

sourceコマンドを使用して、プロファイルファイルを更新するか、ターミナルを再度開きます。

source ~/.zshrc

このようにして、次の例のように、Sudoなしでgemをインストールできます。

gem install rspec 
4
valdeci