Как использовать драгоценные камни в Ubuntu?

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

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

sudo gem install XXX

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

bash: cap: command not found

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

Есть ли у меня что-то особенное, чтобы работать с командами драгоценных камней?

Ответ 1

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

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

[email protected]:~$ 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 в моем домашнем каталоге.

Вы также можете увидеть, что исполняемые файлы хранятся в EXECUTABLE DIRECTORY, которая в этом случае /usr/bin.

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

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

Если по какой-либо причине ваш EXECUTABLE DIRECTORY не находится на вашем пути (например, если это /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":

[email protected]:~$ 
[email protected]:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
[email protected]:~$ 
[email protected]:~$ export PATH=$PATH:/var/lib/gems/1.8/bin
[email protected]:~$ 
[email protected]:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin
[email protected]:~$ 

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

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

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

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

Любой Ruby-процесс здесь выглядит только в одном месте для его драгоценных камней.

:~/$ 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.

Ответ 2

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

echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc

Ответ 3

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

/home/victor/.gem/ruby/1.8/bin

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

echo $PATH

Ответ 4

Похоже, что при установке rubygems, теперь в ubuntu 9.04, у меня есть эта проблема. Я заметил, что в "gem environment" исполняемый каталог "/var/lib/gems/1.8/bin" вместо "/usr/bin"... Это проблема с rubygems или с ubuntu 9.04??

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

Спасибо...

Resolvi: coloquei o export PATH = $PATH:/var/lib/gems/1.8/bin no ~/.bashrc! =]

Ответ 5

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

sudo apt-get install ruby1.9.1-dev