Як я використовую дорогоцінні камені з Ubuntu?


76

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

Потім я встановив капістрано та інші дорогоцінні камені, такі як героку. Для цього я використав команду:

sudo gem install XXX

Коли я хочу використовувати capкоманду, це не працює:

bash: cap: command not found

Подібно до інших команд самоцвітів.

Чи потрібно щось робити, щоб команди самоцвіту працювали?


хіба це запитання більше не задається на superuser.com ?
Тьяго Дініз,

@ThiagoDiniz або в askubuntu.com ?
Еліран Малка,

Відповіді:


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:

Якщо ви подивитесь на розділ "ШЛЯХИ ДРАГОЦІНІЙ:", ви побачите, що дорогоцінні камені можна зберігати в двох місцях на моєму ноутбуці: /usr/lib/ruby/gems/1.8або в .gemкаталозі мого домашнього каталогу.

Ви також можете побачити, що виконувані файли зберігаються у ВИКОНАВІЙ КАТАЛОГІ, що в цьому випадку є /usr/bin.

Тому що /usr/binв моєму шляху це дозволяє мені працювати cap, merb, і railsт.д.

Оновлення шляху

Якщо з якихось причин ваш ВИКОНАВИЙ ДИРЕКТОР не на вашому шляху (наприклад, якщо це /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; Іноді середовище самоцвіту та шлях дорогоцінного каменя не синхронізуються:

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 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 .


Як я можу відредагувати свій $ PATH, щоб він містив два каталоги, де встановлено самоцвіти? Дякую
0x26res

Я зробив це: 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 / games: / opt / real / RealPlayer: /var/lib/gems/1.8: /home/arthur/.gem/ruby/1.8
0x26res

Зараз це працює. Я змінив шлях на:
/var/lib/gems/1.8/bin:/home/arthur/.gem/ruby/1.8/bin

Чи є спосіб змінити EXECUTABLE_DIRECTORY на щось більш стандартне, наприклад / usr / bin або / usr / local / bin? Додавання /var/lib/gems/1.8/bin до мого шляху не вдається, особливо тому, що в ньому є номер версії.
Kief

Коли я хотів змінити це на системному рівні, мені довелося змінити це на/etc/environment
dolzenko

5

Як зазначав @Chris, вам потрібно додати середовище дорогоцінних каменів на свій шлях. Ви можете зробити це, виконавши:

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

3

Папка, в якій зберігаються дорогоцінні камені, повинна знаходитися на вашому PATH, наприклад, моя:

/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 з моя домашня папка ~, вона не входить до цієї папки. Крім того, самоцвіт heroku знаходиться у правильній папці, але команда heroku не працює. Ось також те, що повертає команда $ PATH: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games
0x26res

Ваші рейки дорогоцінний камінь працюють? Будь ласка, додайте свою папку ~ / .gem / ruby ​​/ 1.8 / bin до шляху та спробуйте
victor hugo

Я задав питання, щоб знати, як редагувати $ PATH: stackoverflow.com/questions/910088/how-can-i-edit-the-path- on-linux
0x26res

1

Здається, при встановленні 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 export PATH = $ PATH: /var/lib/gems/1.8/bin no ~ / .bashrc! =]


2
Для того, щоб зберегти шлях, перевірте інше питання , я запитав: stackoverflow.com/questions/910088 / ...
0x26res

0

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

sudo apt-get install ruby1.9.1-dev

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.