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

73

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

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

sudo gem install XXX

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

bash: cap: command not found

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

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

  • 0
    не является ли этот вопрос более подходящим для superuser.com ?
  • 0
    @ThiagoDiniz или в askubuntu.com ?
Теги:
rubygems
capistrano

5 ответов

138
Лучший ответ

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

Вы можете найти, где хранятся ваши драгоценные камни, используя команду 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 в моем домашнем каталоге.

Вы также можете увидеть, что исполняемые файлы хранятся в 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":

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; Иногда среда 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.

  • 0
    Как я могу отредактировать свой $ PATH так, чтобы он включал два каталога, в которые установлены гемы? Спасибо
  • 0
    Я сделал это: sudo ln -s /var/lib/gems/1.8/gems/capistrano-2.5.5/bin/cap / usr / local / bin / cap ln: создание символической ссылки `/ usr / local / bin / cap ': Файл существует, но он не работает! Он по-прежнему получает: bash: cap: команда не найдена Вот мой $ PATH: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / игры: / опт / реальный / RealPlayer: /var/lib/gems/1.8: /home/arthur/.gem/ruby/1.8
Показать ещё 4 комментария
5

Как отмечено @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
  • 1
    Спасибо за ваш ответ Вот содержимое ~ / .gem / ruby / 1.8 / bin: activerecord-2.3.2 activesupport-2.3.2 heroku-0.9.1 json-1.1.6 rails-2.3.2 Когда я устанавливаю capistrano из моя домашняя папка ~, она не идет в эту папку. Кроме того, гем геройку находится в нужной папке, но команда героку не работает. Также вот что возвращает команда $ PATH: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games
  • 0
    Ваши рельсы драгоценный камень работает? Пожалуйста, добавьте вашу папку ~ / .gem / ruby / 1.8 / bin в путь и попробуйте
Показать ещё 2 комментария
1

Похоже, что при установке 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! =]

  • 2
    Чтобы сохранить путь, посмотрите другой вопрос, который я задал: stackoverflow.com/questions/910088/…
0

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

sudo apt-get install ruby1.9.1-dev

Сообщество Overcoder
Наверх
Меню