web-dev-qa-db-ja.com

ユーザーアカウントはシステムRubyGemsへのインストールを許可されていません

コマンドを実行しています

bundle install

プロジェクトフォルダ内。一部のプロジェクトフォルダーではエラーが発生し、他のプロジェクトフォルダーではエラーは発生しません。エラーは次のとおりです。

ユーザーアカウントはシステムRubyGemsへのインストールを許可されていません

これは、推奨されるアドバイスに従うことで解決できることを知っています。

bundle install --path vendor/bundle

私の質問は、なぜ行動に一貫性がないのですか?

17

私の場合、私はエラーメッセージが示唆することだけを解決しました:

ユーザーアカウントはシステムRubyGemsへのインストールを許可されていません。
このインストールをキャンセルして、実行できます:
 
 bundle install --path vendor/bundle 
 
でgemを./vendor/bundle/
にインストールします

したがって、代わりに:

bundle install

私が走った:

bundle install --path vendor/bundle

それが this guy の解決策でした。

このソリューションの欠点は、現在のフォルダー内にvendorフォルダーを作成することです。Gitを介してアプリケーションを配布する場合は、.gitignoreに追加できます。

通常、RVM、rbenv、またはchrubyを使用してRubyをインストールする場合、すべてのgemは~/.rbenv/Ruby-version/...の下のホームフォルダーにインストールされます。

システムを使用している場合Ruby(ただしデフォルトでインストールされているもの))gemは、Sudoなしではアクセスできない場所にインストールされます。 。

私の推測では、バージョンマネージャのデフォルトはシステムRubyですが、プロジェクトの中には、異なるバージョンのRubyにアクセスできます。

8
isaacsloan

良いrbenv修正

  • 須藤を避ける
  • ベンダー/バンドルへのインストールを回避

少なくとも私にとっての問題は、バンドラー自体がrbenv Ruby version。にインストールされていなかったことでした。使用可能...許可エラーを除く

私を惹きつけたものの1つは、実際のコマンドライン自体でgemをインストールでき、エラーメッセージが表示されないことでした。以下に示すように問題を永続的に修正することを決定するまで、回避策としてこれをしばらく行いました。

それを修正するために:

rbenv local 2.5.0 # Make sure I'm using a local version that exists
gem list | grep bundler # Note no output! Need to fix that!
gem install bundler
rbenv rehash
bundle (within my project that has a Gem file)
4
Michael Durrant

RVMの使用:

$HOMEディレクトリに、シングルユーザー(標準ユーザー/非ルートユーザー)にrvmをインストールする必要があります(インストールしない場合はインストールされません) t /home/youruser/.rvmディレクトリがあります。

指定されているとおり rvmサイトで 「シングルユーザーインストール場所:〜/ .rvm /」セクションの下で、シングルユーザー実行用にrvmをインストールします。

cd
\curl -sSL https://get.rvm.io | bash -s -- --ignore-dotfiles

これで、rvmをインストールする必要があります。さらにプロンプ​​トのように、rvm(ユーザー名を指定して)を更新します。

source /home/---YOURUSERNAME---/.rvm/scripts/rvm

Sudo-needパッケージをインストールするためのプロンプトを防ぐには、次を実行します。

rvm autolibs disable

バージョン2.5(またはrvm list knownにリストされている他のバージョン)で、ユーザーのみにRubyをインストールできます。

rvm install 2.5

説明:

おそらくSudoを使用して、おそらく buntu用のこのパッケージ を使用してrvmをインストールしようとしますが、Sudo権限がありません。

このプロンプトは、gemをシステム全体にグローバルにバンドルできないことを示しています。これはプライベートホームマシンには適していますが、他の誰かによって管理されることが多い企業ユーザー(マシン)には適していません。

Rvmが$HOMEにインストールされる場合、通常どおりgemがそこにバンドルされます。

他のユーザーが$HOMEディレクトリにrvmをインストールしているため、動作に一貫性がない可能性があります

3
ToTenMilan

私の場合、既存の$BUNDLE_PATHバンドルするユーザーに書き込み権限がない。

Your user account isn't allowed to install to the system RubyGems
bundle install --path vendor/bundle
1
pocheptsov

最近、同じ問題に直面しました。 rvmを使用します

Sudo chown -R $USER ~/.rvm助けてくれた

0
Oleg Sobchuk