Ruby/gem安裝路徑散落各處,原因是什麼?

Ruby/gem安裝路徑散落各處,原因是什麼?

你能幫我理解我的 ruby​​ 資料夾結構嗎?我不明白為什麼我的寶石散落各處,為什麼它們不被識別為命令。

我將首先解釋我的安裝情況:

/usr/bin/ruby
/usr/bin/ruby1.8
/usr/bin/ruby1.9.1

第一個是到 ruby​​1.9.1 的軟鏈接,因為“ruby”命令在終端中不起作用。我對「寶石」也做了同樣的事情。我透過下載、解壓縮然後運行 setup.rb 來安裝 ruby​​gems:(我創建了「ruby」資料夾)

/home/pc/ruby/rubygems-1.7.2/setup.rb

/usr/bin/gem
/usr/bin/gem1.8
/usr/bin/gem1.9.1

我使用“sudo gem install”安裝了一些 gem

> gem list

 *** LOCAL GEMS ***

 compass (0.10.6)
 haml (3.0.25)
 mustache (0.99.3)
 rake (0.8.7)

到目前為止,一切都很好?嗯,不完全是,因為事實證明命令“指南針版本”似乎不存在。我的困惑隨著我查看的每個資料夾而增加。例如,以下路徑對我來說沒有任何意義。為什麼會被隱藏呢?為什麼 Mustache 是這個資料夾中唯一的寶石?

/home/pc/.gem/ruby/1.9.1/cache/mustache-0.99.3.gem

首先,這裡是“gem 環境”,這更沒有意義,因為我肯定已經安裝了 ruby​​gems-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”......... 另外,事實證明,所有 gems 都安裝到這個資料夾中(小鬍子也是如此!即使它已經在另一個資料夾中) ,正如“ruby環境”所聲稱的那樣:

/var/lib/gems/1.9.1/gems

但這些寶石都不起作用。除了 rake 之外,我不能調用其中任何一個。所以這就是我可能犯錯的地方,我想我除了“gem install rake”之外還使用了“apt-get install rake”,因為命令“rake”未被識別,並且命令提示字元建議它。我可能也用 ruby​​gems 這樣做過...我是 Linux 新手,我認為命令提示字元知道如何正確安裝這些東西。

我必須全部創建系統鏈接,這是不正常的,對嗎?在 Windows 中我沒有遇到這個問題。

答案1

我安裝了 rvm,我仍然不知道為什麼會這麼混亂,但現在我可以輕鬆地強制使用某個 ruby​​ 版本,並且我知道所有 gems 安裝到哪裡。 (進入 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。


例如,以下路徑對我來說沒有任何意義。為什麼會被隱藏呢?為什麼 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-or-gem 安裝軟體包

相關內容