
私の Ruby フォルダ構造を理解するのを手伝ってもらえますか? なぜ gem があちこちに散らばっているのか、またなぜコマンドとして認識されないのか理解できません。
まず、私のインストールがどのようになっているかを説明します。
ruby は、
ruby1.8
と ruby1.9.1 の両方をサポートします。
1 つ目は、ターミナルで「ruby」コマンドが機能しなかったため、ruby1.9.1 へのソフト リンクです。「gem」でも同じことをしました。ダウンロードして解凍し、setup.rb を実行して rubygems をインストールしました。(「ruby」フォルダーを作成しました)
rubygems-1.7.2 のセットアップ
バイナリ
ファイル
「sudo gem install」でいくつかのgemをインストールしました
> gem list
*** LOCAL GEMS ***
compass (0.10.6)
haml (3.0.25)
mustache (0.99.3)
rake (0.8.7)
ここまでは順調ですか? まあ、そうではありません。どうやら「compass version」というコマンドは存在しないようです。フォルダを調べるたびに混乱が増します。たとえば、次のパスは私には意味がわかりません。なぜ隠されているのでしょうか? なぜこのフォルダ内の唯一の gem が mustache なのでしょうか?
/home/pc/.gem/ruby/1.9.1/cache/mustache-0.99.3.gem
まず、ここに「gem 環境」がありますが、これはさらに意味をなさないです。最初の段落で述べたように、rubygems-1.7.2 を確実にインストールしているからです。しかし、ここでは古いバージョン 1.3.7 が表示されます。なぜでしょうか?一昨日Ubuntuをインストールしました。
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.7
- RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [x86_64-linux]
- INSTALLATION DIRECTORY: /var/lib/gems/1.9.1
- RUBY EXECUTABLE: /usr/bin/ruby1.9.1
- EXECUTABLE DIRECTORY: /var/lib/gems/1.9.1/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /var/lib/gems/1.9.1
- /home/pc/.gem/ruby/1.9.1
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
ruby --version は「ruby 1.8.7」を返します........... また、結局のところ、すべての gem はこのフォルダーにインストールされます (mustache も! すでに他のフォルダー内にあるにもかかわらず)。これは、「ruby environment」が主張しているとおりです。
/var/lib/gems/1.9.1/gems
しかし、これらの gem はどれも機能しません。rake 以外はどれも呼び出せません。おそらくここで間違いを犯したのでしょう。「rake」コマンドが認識されず、コマンド プロンプトがそれを提案したため、「gem install rake」に加えて「apt-get install rake」を使用したと思います。rubygems でも同じことをしたかもしれません... Linux は初めてですが、コマンド プロンプトがこれらのものを適切にインストールする方法を知っているだろうと考えました。
。
あらゆる場所に syslink を作成しなくてはならないのは普通ではないですよね?Windows ではこの問題は発生しませんでした。
答え1
rvm をインストールしました。なぜこのような混乱が生じたのかまだわかりませんが、今では特定の Ruby バージョンを簡単に強制することができ、すべての gem がどこにインストールされるかがわかりました。(rvm ディレクトリに) 私の場合はうまくいきました。
答え2
問題は、RubyGems
apt-get ではなく手動でインストールしていることだと思います。おそらく、同じことをしたruby
か、手動で作成したシンボリックリンクを含むメタパッケージが不足しています。
/var/lib/gems/1.9.1/bin
これは、すべてのバイナリがあるディレクトリが $PATH に含まれていないのと同じ理由です。そのため、これらの gem の実行可能ファイルを見つけることができません。
Ruby 1.8 から Ruby 1.9.3 にアップグレードすると、Ruby 1.8 でインストールされた gem は Ruby 1.8 フォルダーに残ります。異なる Ruby バージョンで RubyGems がインストールされている可能性があります。
たとえば、次のパスは私には意味がわかりません。なぜ隠されているのでしょうか? このフォルダー内にある gem が mustache だけなのはなぜでしょうか?
/home/pc/.gem/ruby/1.9.1/cache/mustache-0.99.3.gem
明らかにmustache(sudoなし)をインストールしました
gem install mustache
これはユーザー用にインストールされ、ユーザーインストールディレクトリは です$HOME/.gem/
。このフォルダは非表示になっているため、誤って削除することはありません。$PATH にこれを追加するか、 でインストールする必要があります--no-user-install
。
解決:
RubyGems(およびruby)を手動でダウンロードしてインストールしないでください。パッケージマネージャー(aptitude
)を使用してください。
aptitude
その後、またはを使用して gem をインストールするかどうかを決定できますgem install
。
apt-get または gem によるパッケージのインストール。