Недавно я обновился до Ubuntu 9.04, и у меня есть проблемы с использованием драгоценных камней.
Я установил Ruby, Rubygems и Rails, используя apt-get.
Команда rails
работает.
Затем я установил capistrano и другие драгоценные камни, такие как heroku. Для этого я использовал команду:
sudo gem install XXX
Когда я хочу использовать команду cap
, она не работает:
bash: cap: command not found
То же самое с другими командами gem.
Есть ли у меня что-то особенное, чтобы работать с командами драгоценных камней?
Вы можете найти, где хранятся ваши драгоценные камни, используя команду 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
и т.д.
Если по какой-либо причине ваш 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.
Как отмечено @Chris, вам нужно добавить окружение драгоценных камней к вашему пути. Вы можете сделать это:
echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc
Папка, в которой хранятся драгоценные камни, должна быть на вашем PATH, например my:
/home/victor/.gem/ruby/1.8/bin
Проверьте свой путь, набрав
echo $PATH
Похоже, что при установке 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! =]
mkmf является частью пакета ruby1.9.1-dev. Этот пакет содержит файлы заголовков, необходимые для библиотек расширений для Ruby 1.9.1. Вам необходимо установить пакет ruby1.9.1-dev, выполнив следующие действия:
sudo apt-get install ruby1.9.1-dev