Jak używać gemów z Ubuntu?

Niedawno uaktualniłem do Ubuntu 9.04 i mam problemy z używaniem gemów. Zainstalowałem Ruby, Rubygems i Rails używając apt-get. Polecenie rails działa.

Następnie zainstalowałem capistrano i inne klejnoty, takie jak heroku. W tym celu użyłem komendy:
sudo gem install XXX

Gdy chcę użyć komendy cap nie działa:

bash: cap: command not found
Tak samo jest z innymi poleceniami gem.

Czy mam coś konkretnego do zrobienia, aby polecenia gem działały?

Author: the Tin Man, 2009-05-26

5 answers

Gdzie są moje klejnoty?

Możesz znaleźć miejsce przechowywania swoich klejnotów za pomocą polecenia gem environment. Na przykład:

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:

Jeśli spojrzysz na sekcję " ścieżki klejnotów:", zobaczysz, że klejnoty mogą być przechowywane w dwóch miejscach na moim laptopie: /usr/lib/ruby/gems/1.8 lub w katalogu .gem w moim katalogu domowym.

Możesz również zobaczyć, że pliki wykonywalne są przechowywane w katalogu wykonywalnym, który w tym przypadku jest /usr/bin.

Ponieważ /usr/bin jest na mojej drodze to pozwala mi biec cap, merb, rails itd.

Aktualizacja ścieżki

Jeśli z jakiegoś powodu twój katalog wykonywalny nie znajduje się na twojej ścieżce (na przykład jeśli jest to /var/lib/gems/1.8/bin), musisz zaktualizować swoją zmienną PATH.

Zakładając, że używasz powłoki bash. Możesz to zrobić szybko dla bieżącej sesji, wpisując następujące polecenie w wierszu polecenia powłoki; Załóżmy, że chcesz dodać /var/lib/gems/1.8/bin do ścieżki:

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

I naciśnij return. Który dołącza nowy katalog do końca bieżąca ścieżka. Zwróć uwagę na dwukropek pomiędzy $PATH a /var/lib/gems/1.8/bin

Aby ustawić wartość dla wszystkich sesji, musisz edytować plik .profile lub .bashrc i dodać tę samą linię na końcu pliku. Zwykle edytuję mój plik .bashrc nie z innego powodu niż to, co zawsze robiłem. Po zakończeniu zapisz plik, a następnie odśwież środowisko, wpisując:

bash

W wierszu polecenia powłoki. To spowoduje, że .bashrc zostanie ponownie przeczytany.

W dowolnym momencie możesz sprawdzić aktualny wartość $PATH przez wpisanie

echo $PATH

W wierszu polecenia powłoki.

Oto przykład z jednego z moich własnych serwerów, gdzie moja nazwa użytkownika to "chris", a nazwa maszyny to "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:~$ 
Mój klejnot się nie ładuje!

"ruby gems nie ładuje się nawet po zainstalowaniu " podkreśla częsty problem przy użyciu wielu różnych wersji Rubiego; czasami środowisko Gem i ścieżka Gem są synchronizowane:

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

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

Każdy proces Rubiego szuka tylko w jednym miejsce na swoje klejnoty.

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

Spójrz uważnie na wyjście środowiska gem:

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

To nie jest ta sama ścieżka co zwrócona przez Gem.ścieżka:

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

Trudno powiedzieć, co dokładnie spowodowało zmianę lib/ruby na lib/ruby1.9, ale najprawdopodobniej programista pracował z wieloma wersjami Rubiego. Szybki mv lub ln rozwiąże problem.

Jeśli potrzebujesz pracować z wieloma wersjami Rubiego, powinieneś używać rvm .

 138
Author: Chris McCauley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:29:36

Jak zauważył @ Chris, musisz dodać środowisko klejnotów do swojej ścieżki. Można to zrobić przez:

echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc
 5
Author: Adam Greenhall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-08 20:09:33

Folder, w którym przechowywane są perełki musi znajdować się na twojej ścieżce, na przykład moja to:

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

Sprawdź ścieżkę wpisując

echo $PATH
 3
Author: victor hugo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-26 09:07:20

Widać, że podczas instalacji rubygems, teraz w ubuntu 9.04, mam ten problem. Zauważyłem, że w "gem environment" katalog wykonywalny to "/var/lib/gems/1.8/bin", zamiast "/usr/bin"... To jest problem z rubygems lub z ubuntu 9.04??

Napotkanym rozwiązaniem jest dodanie "/ var / lib / gems / 1.8 / bin " do mojej $PATH robiąc to: export PATH = $PATH: / var / lib / gems / 1.8 / bin Ale to nie jest zapisane... jak Mogę zapisać swoją ścieżkę?

Dzięki...

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

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-27 01:04:20

Mkmf jest częścią pakietu ruby1. 9.1-dev. Ten pakiet zawiera pliki nagłówkowe potrzebne do bibliotek rozszerzeń dla Ruby 1.9.1. Musisz zainstalować pakiet ruby1. 9. 1-dev wykonując:

Sudo apt-get install ruby1.9.1-dev

 0
Author: Sohan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-02 11:36:20