Как я могу использовать драгоценные камни с Ubuntu? - PullRequest
76 голосов
/ 26 мая 2009

Я недавно обновился до Ubuntu 9.04, и у меня возникли проблемы с использованием гемов. Я установил Ruby, Rubygems и Rails, используя apt-get. Команда rails работает.

Затем я установил capistrano и другие драгоценные камни, такие как heroku. Для этого я использовал команду:

sudo gem install XXX

Когда я хочу использовать команду cap, она не работает:

bash: cap: command not found

То же самое с другими командами gem.

У меня есть что-то особенное, чтобы работали команды gem?

Ответы [ 5 ]

138 голосов
/ 26 мая 2009

Где мои драгоценные камни?

Вы можете найти, где хранятся ваши драгоценные камни, с помощью команды gem environment. Например:

chris@chris-laptop:~$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.2

  - RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby1.8
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
     - /home/chris/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:

Если вы посмотрите раздел «GEM PATHS:», вы увидите, что драгоценные камни могут храниться в двух местах на моем ноутбуке: /usr/lib/ruby/gems/1.8 или в каталоге .gem в моем домашнем каталоге.

Вы также можете видеть, что исполняемые файлы хранятся в ИСПОЛНИТЕЛЬНОМ СПРАВОЧНИКЕ, который в данном случае равен /usr/bin.

Поскольку /usr/bin на моем пути, это позволяет мне запускать cap, merb, rails и т. Д.

Обновление вашего PATH

Если по какой-то причине ваша ИСПОЛНИТЕЛЬНАЯ КАТАЛОГ не указана в вашем пути (например, если это /var/lib/gems/1.8/bin), вам необходимо обновить переменную PATH.

Предполагается, что вы используете оболочку bash. Вы можете сделать это быстро для текущего сеанса, набрав следующее в приглашении оболочки; давайте представим, что вы хотите добавить /var/lib/gems/1.8/bin к пути:

export PATH=$PATH:/var/lib/gems/1.8/bin

и нажмите возврат. Это добавляет новый каталог в конец текущего пути. Обратите внимание на двоеточие между $PATH и /var/lib/gems/1.8/bin

Чтобы установить значение для всех сессий, вам нужно отредактировать файл .profile или .bashrc и добавить ту же строку в конец файла. Я обычно редактирую свой .bashrc файл только по той причине, что я всегда делал. Когда закончите, сохраните файл и затем обновите вашу среду, набрав:

bash

в приглашении оболочки. Это заставит .bashrc перечитать.

В любой момент вы можете проверить текущее значение $PATH, набрав

echo $PATH

в приглашении оболочки.

Вот пример с одного из моих собственных серверов, где мое имя пользователя - "chris", а имя машины - "chris-laptop":

chris@chris-laptop:~$ 
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
chris@chris-laptop:~$ 
chris@chris-laptop:~$ export PATH=$PATH:/var/lib/gems/1.8/bin
chris@chris-laptop:~$ 
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin
chris@chris-laptop:~$ 

Мой драгоценный камень не загружается!

" Ruby gems не загружается, даже если установлен ", что указывает на распространенную проблему с использованием нескольких различных версий Ruby; Иногда среда Gem и путь Gem не синхронизируются:

rb(main):003:0> Gem.path

=> ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
irb(main):004:0> exit

Любой процесс Ruby здесь ищет только Gems в одном месте.

:~/$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.9.1 (2009-05-12 patchlevel 129) [x86_64-linux]
  - INSTALLATION DIRECTORY: /opt/ruby1.9/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: /opt/ruby1.9/bin/ruby1.9
  - EXECUTABLE DIRECTORY: /opt/ruby1.9/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /opt/ruby1.9/lib/ruby/gems/1.9.1
     - /home/mark/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

Внимательно посмотрите на вывод среды gem:

  - GEM PATHS:
     - /opt/ruby1.9/lib/ruby/gems/1.9.1

Это не тот путь, который был возвращен Gem.path:

["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]

Трудно сказать, что именно привело к изменению lib/ruby на lib/ruby1.9, но, скорее всего, разработчик работал с несколькими версиями Ruby. Быстрый mv или ln решит проблему.

Если вам нужно работать с несколькими версиями Ruby, тогда вы действительно должны использовать rvm .

5 голосов
/ 09 августа 2011

Как отмечает @Chris, вам нужно добавить среду gems к вашему пути. Вы можете сделать это:

echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc
3 голосов
/ 26 мая 2009

Папка, в которой хранятся драгоценные камни , должна находиться в вашей переменной PATH, например, моя:

/ дома / триумфатор / .gem / рубин / 1,8 / бен

Проверьте свой путь, набрав

echo $PATH
1 голос
/ 27 мая 2009

Видно, что при установке rubygems, теперь в ubuntu 9.04, у меня возникает эта проблема. Я заметил, что в «среде gem» каталог исполняемого файла - «/var/lib/gems/1.8/bin» вместо «/ usr / bin» ... Это проблема с rubygems или с ubuntu 9.04 ??

Решение, с которым я столкнулся, заключается в добавлении "/var/lib/gems/1.8/bin" к моей переменной $ PATH следующим образом: экспорт PATH = $ PATH: /var/lib/gems/1.8/bin Но это не сохраняется ... как я могу сохранить свой путь?

Спасибо ...

Resolvi: coloquei o экспорт PATH = $ PATH: /var/lib/gems/1.8/bin no ~ / .bashrc! =]

0 голосов
/ 02 апреля 2013

mkmf является частью пакета ruby1.9.1-dev. Этот пакет содержит файлы заголовков, необходимые для библиотек расширений для Ruby 1.9.1. Вам необходимо установить пакет ruby1.9.1-dev, выполнив:

sudo apt-get install ruby1.9.1-dev

...