最近、Fedora 12にRailsをインストールしました。Linuxも初めてです。 Windows 7ではすべて正常に動作します。しかし、Linuxでは多くの問題に直面しています。助けてください!
基本的なスクリプト/サーバーを起動して実行するために、知識に必要なものをすべてインストールしました。スクリプト/サーバーを試すと、boot.rbがポップアップしてこのエラーが発生します。ここで説明したい詳細の一部:
Rails、Ruby、およびgemがインストールされているディレクトリ、
[vineeth@localhost my_app]$ which Ruby
/usr/local/bin/Ruby
[vineeth@localhost my_app]$ which Rails
/usr/bin/Rails
[vineeth@localhost my_app]$ which gem
/usr/bin/gem
スクリプト/サーバーを実行すると、これがエラーになります。
[vineeth@localhost my_app]$ script/server
./script/../config/boot.rb:9:in `require': no such file to load -- rubygems (LoadError)
from ./script/../config/boot.rb:9
from script/server:2:in `require'
from script/server:2
PATHファイルは次のようになります
[vineeth@localhost my_app]$ cat ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin/Ruby:$PATH"
PATHファイルと関係があると思います。ここで変更する必要があるものを教えてください。他に変更する必要がある場合は、お知らせください。
2つのRubyバージョンがあるという予感があります。次のコマンドの出力を貼り付けてください:
$ which -a Ruby
コメントに関して更新:
1つのバージョンを破棄し、1つだけ残します。 gemの異なる場所を調べる2つのバージョンで同じ問題が発生しました。数週間夢中になっていた。 SOに賞金をここに入れて、あなたに与えているのと同じ答えを得ました。
私がしたことは、Rubyの1つのインストールを破棄し、ポート経由で管理可能なものを残したことだけでした。これを行うことをお勧めします:
/usr
の代わりに/usr/local
)rubygems
を再インストールしますUbuntuでRubyの複数のコピーがインストールされているため、同様の問題が発生しました。 (1.8および1.9.1)残念ながら、両方が必要です。解決策は以下を使用することです:
$ Sudo update-alternatives --config Ruby
There are 2 choices for the alternative Ruby (providing /usr/bin/Ruby).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/Ruby1.8 50 auto mode
1 /usr/bin/Ruby1.8 50 manual mode
2 /usr/bin/Ruby1.9.1 10 manual mode
Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/Ruby1.9.1 to provide /usr/bin/Ruby (Ruby) in manual mode.
そのバンドルを実行した後、インストールが成功しました。
OK、私はRuby noobですが、ここでの回答とは少し異なる修正が行われたので、これが誰かの助けになることを願っています(tl; dr:RVMを使用してシステムを切り替えるRubyバージョンは、rubygemsが期待するものと同じバージョンです)。
まず、 Eimantas で言及されているように、すべてのルビーをリストすることは素晴らしい出発点でした:
> which -a Ruby
/opt/local/bin/Ruby
/Users/Brian/.rvm/rubies/Ruby-1.9.2-p290/bin/Ruby
/Users/Brian/.rvm/bin/Ruby
/usr/bin/Ruby
/opt/local/bin/Ruby
システムで使用されているデフォルトのRubyインスタンスは1.8.7のように見えました。
> Ruby -v
Ruby 1.8.7 (2010-06-23 patchlevel 299) [i686-darwin10]
一方、Rubygemsが使用しているバージョンは、RVMが管理する1.9.2バージョンでした。
> gem env | grep 'Ruby EXECUTABLE'
- Ruby EXECUTABLE: /Users/Brian/.rvm/rubies/Ruby-1.9.2-p290/bin/Ruby
それが間違いなく問題でした。私はRubyを積極的に使用していません(これは単に、実行しようとしているビルドシステムスクリプトの依存関係です)。 rubygemsはすでにRVMによって管理されている1.9.2を予期していたため、RVMを使用してシステムを切り替え、デフォルトとして1.9.2バージョンを使用するようにしました。
> rvm use 1.9.2
Using /Users/Brian/.rvm/gems/Ruby-1.9.2-p290
> Ruby -v
Ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.3.0]
その後、「そのようなファイルはありません」という問題はなくなり、スクリプトが機能し始めました。
私の場合、rubygems
がインストールされていなかったことを追加したいと思います。
Sudo apt-get install rubygems
を実行すると問題が解決しました!
プロジェクトを開始してみてください:
./script/server
Ruby 1.9.2を使用している場合はscript/server
の代わりに( Ruby 1.9.2にアップグレードした後にconfig/bootを必要とする奇妙な不能から )
他の誰かがこの問題をググっている場合:使いたいと思った「rubygems」フォルダーを見つけ、それを$ RUBYLIB環境変数に追加することで修正できました。
find / -name "rubygems" -print
見つかったら、親ディレクトリを環境に追加します。 bashでは、次のようになります。
export RUBYLIB=/path/to/parent
これで、gemを実行すると、正しいライブラリディレクトリが選択され、オフになり実行されます。
同様の問題があり、RUBYLIB envを設定することでそれを解決しました。
私の環境ではこれを使用しました:
export RUBYLIB=$Ruby_dir/lib/Ruby/1.9.1/:$Ruby_dir/lib/Ruby/1.9.1/i686-linux/:$RUBYLIB
同様の問題があり、単純なRubyスクリプトを実行するだけで、必要なgemが必要になりました...そのエラーメッセージが表示されました。呪文を以下から変更したとき:
Ruby test.rb
に
Ruby -rubygems test.rb
動作しているようです。
gem install bundler
私のために問題を修正しました。
複数のRubyがインストールされている場合は、そのうちの1つを削除するだけで十分な場合があります。追加ポートをインストールしたMacosXでは、Rubyインストールを削除します。
Sudo port -f uninstall Ruby
これは、Googleが「ubygems」を「rubygems」に自動修正した後、グーグル'require': cannot load such file -- ubygems (LoadError)
を実行したときの最初の回答です。これはRuby 2.4と2.5の間の意図的な変更であることが判明しました( Bug#14322 )。 Rubyバージョンを考慮せずにユーザーgemsディレクトリを検出するスクリプトは、ほとんどの場合失敗します。
ルビー2.4
Ruby -rubygems -e 'puts Gem.user_dir'
Ruby 2.5
Ruby -rrubygems -e 'puts Gem.user_dir'
私もこの問題を抱えていました。私の解決策は、ファイルGemfile.lockを削除し、gemsを再度インストールすることです:バンドルインストール
/bin/bash --login
を実行するだけで、奇妙なことに、私にとってはうまくいきました。説明できません。
Rbenv + passenger + nginxを使用しても同じ問題に遭遇しました。私の解決策は、次の2行のコードをnginx構成に追加するだけです。
passenger_default_user root;
passenger_default_group root;
詳細な回答はこちら: https://stackoverflow.com/a/15777738/445908