Pytanie Jak korzystać z klejnotów w Ubuntu?


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

Następnie zainstalowałem capistrano i inne klejnoty, takie jak heroku. W tym celu użyłem polecenia:

sudo gem install XXX

Kiedy chcę użyć cap polecenie nie działa:

bash: cap: command not found

Tak samo jest z innymi poleceniami gem.

Czy mam coś konkretnego do zrobienia, aby polecenia z klejnotem zadziałały?


76
2018-05-26 08:55


pochodzenie


czy nie jest to pytanie bardziej odpowiednie, zadawane w superuser.com? - Thiago Diniz
@ThiagoDiniz lub w askubuntu.com? - Eliran Malka


Odpowiedzi:


Gdzie są moje klejnoty?

Możesz znaleźć, gdzie są przechowywane twoje klejnoty za pomocą gem environment dowództwo. 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ę "GEM PATHS:", zobaczysz, że klejnoty można przechowywać w dwóch miejscach na moim laptopie: /usr/lib/ruby/gems/1.8 lub w .gem katalog w moim domu reż.

Można również zauważyć, że pliki wykonywalne są przechowywane w KATALOGU EXECUTABLE, w tym przypadku /usr/bin.

Bo /usr/bin jest na mojej drodze, to pozwala mi biec cap, merb, rails itp.

Aktualizowanie swojej PATH

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

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

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

i naciśnij return. To dodaje nowy katalog na końcu bieżącej ścieżki. Zwróć uwagę na dwukropek między $PATH i /var/lib/gems/1.8/bin

Aby ustawić wartość dla wszystkich sesji, musisz edytować swoje .profile lub .bashrc plik i dodaj ten sam wiersz na końcu pliku. Zwykle edytuję moje .bashrc plik bez powodu, poza tym, co zawsze robiłem. Po zakończeniu zapisz plik, a następnie odśwież środowisko, wpisując:

bash

po znaku zachęty powłoki. To spowoduje, że .bashrc aby ponownie przeczytać.

W dowolnym momencie możesz sprawdzić aktualną wartość $PATH wpisując

echo $PATH

po znaku zachęty powłoki.

Oto przykład z jednego z moich własnych serwerów, gdzie moja nazwa użytkownika to "chris", a nazwa komputera 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 załaduje!

"Klejnoty Ruby nie ładują się nawet po zainstalowaniu"podkreśla powszechny problem z użyciem wielu różnych wersji Rubiego, czasami środowisko Gem i ścieżka Gem nie są zsynchronizowane:

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

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

Każdy proces Ruby szuka tylko w jednym miejscu swoich klejnotów.

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

Przyjrzyj się dokładnie wynikowi środowiska gem:

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

To nie jest ta sama ścieżka, która została zwrócona przez Gem.path:

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

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

Jeśli potrzebujesz pracować z wieloma wersjami Ruby, to naprawdę powinieneś używać rvm.


138
2018-05-26 10:23



Jak mogę edytować swoją $ PATH tak, aby zawierała dwa katalogi, w których zainstalowane są klejnoty? Dzięki - Arthur
Zrobiłem to: sudo ln -s /var/lib/gems/1.8/gems/capistrano-2.5.5/bin/cap / usr / local / bin / cap ln: tworzenie dowiązania symbolicznego `/ usr / local / bin / cap ': Plik istnieje Ale to nie działa! Nadal otrzymuję: bash: cap: polecenie nie znalezione Oto moja $ PATH: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / gry: / opt / real / RealPlayer: /var/lib/gems/1.8: /home/arthur/.gem/ruby/1.8 - Arthur
Teraz działa. Zmieniłem ścieżkę do: /var/lib/gems/1.8/bin:/home/arthur/.gem/ruby/1.8/bin - Arthur
Czy istnieje sposób, aby zmienić EXECUTABLE_DIRECTORY na coś bardziej standardowego, na przykład / usr / bin lub / usr / local / bin? Dodanie do /var/lib/gems/1.8/bin mojej ścieżki nie jest dobre, szczególnie, że ma w sobie numer wersji. - Kief
Kiedy chciałem to zmienić na poziomie systemu, musiałem to zmienić /etc/environment - dolzenko


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

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

5
2017-08-08 20:09





Folder, w którym znajdują się klejnoty przechowywane musi być na Twojej zmiennej PATH, na przykład moja to:

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

Sprawdź swoją ścieżkę, pisząc

echo $PATH

3
2018-05-26 09:07



Dziękuję za odpowiedź Oto zawartość ~ / .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 Kiedy zainstaluję capistrano z mój katalog domowy ~, nie ma go w tym folderze. Co więcej, klejnot Heroku znajduje się we właściwym folderze, ale polecenie heroku nie działa. Tutaj również znajduje się instrukcja $ PATH: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games - Arthur
Czy klejnot Twojej szyny działa? Dodaj folder ~ / .gem / ruby ​​/ 1.8 / bin do ścieżki i spróbuj - victor hugo
Jak mogę to zrobić ? Nie znam polecenia powłoki Dzięki - Arthur
Zadałem pytanie, aby wiedzieć, jak edytować ścieżkę $ PATH: stackoverflow.com/questions/910088/how-can-i-edit-the-path- on-linux - Arthur


Wynika z tego, że podczas instalacji rubygemów, teraz w Ubuntu 9.04, mam ten problem. Zauważyłem, że w "środowisku gem" katalog wykonywalny to "/var/lib/gems/1.8/bin", zamiast "/ usr / bin" ... To jest problem z rubygems lub z ubuntu 9.04 ??

Rozwiązaniem, które napotkałem, jest dodanie "/var/lib/gems/1.8/bin" do mojej zmiennej $ PATH w ten sposób: export PATH = $ PATH: /var/lib/gems/1.8/bin Ale to nie jest zapisane ... jak mogę ocalić moją ścieżkę?

Dzięki...

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


1
2018-05-27 00:02



Aby zapisać ścieżkę, sprawdź inne pytanie, które zadałem: stackoverflow.com/questions/910088/... - Arthur


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 następujące czynności:

sudo apt-get install ruby1.9.1-dev


0
2018-04-02 11:36