2010-04-21 11 views
5

Mam komputer z systemem Ubuntu Hardy, który zapewnia własny pakiet RubyGems. Niestety ta wersja RubyGems (1.1.1) jest zbyt stara, by zrobić cokolwiek użytecznego, dlatego postanowiłem ręcznie zaktualizować RubyGems do bieżącej wersji (1.3.6). Ta część poszła gładko, a jeśli wykonam gem -v, otrzymam 1.3.6, która jest oczekiwana. Problem jest, gdy próbuję zrobić: sudo gem install rack, zwraca błąd:Błędy instalacji RubyGems zarówno podczas korzystania z "sudo" i nie używania sudo

ERROR: While executing gem ... (Errno::EACCES) 
Permission denied - /home/username/.gem 

Zazwyczaj po zainstalowaniu perełki jako root, to wie, do zainstalowania go w /usr/lib/ruby/gems, więc dlaczego jest sprawdzenie mojego katalogu domowego w ogóle? Kolejnym dziwactwem jest, gdy robię gem install rack (nie jako root), to mówi:

ERROR: While executing gem ... (Gem::FilePermissionError) 
You don't have write permissions into the /usr/lib/ruby/gems/1.8 directory. 

czyli tam, gdzie chcę iść. Próbowałem już wyczyścić binaria source_cache, próbując różnych wersji RubyGems (1.3.5), zmuszając instalację /usr/lib z -i bezskutecznie. Wszelkie pomysły na temat tego, dlaczego RubyGems tak nalega na sprawdzenie mojego katalogu /home podczas instalacji jako root?

Odpowiedz

2

Wygląda na to, że może to być problem ze ścieżką w połączeniu z zainstalowaniem wielu wersji.

Wszelkie różnice w wydajności pomiędzy:

sudo gem env 

i

gem env 
+0

Nie stwierdzono różnic w dwóch, choć w części GEM PATHS: '/ usr/lib/rubin/kamienie/1.8' i'/home/nazwa_użytkownika/.gem/Ruby/1.8'. Czy nie powinno to być domyślnie z sudo? –

+0

Są takie same w moim systemie, ale tylko po tym, jak przeszedłem i "wyszorowałem" wszystko po rekompilacji 1.9. Rzeczy, które sprawdziłem: 1. Usunięto nieużywane polecenie z klejnotem (miałem je w/usr/bin i/usr/local/bin 2. Sprawdziłem plik ~/.gemrc i wyczyściłem ścieżkę do punktu, w którym znajdę mój klejnot ścieżka w/usr/local/lib. Używane mój ~/folder .gem jako zapasową 3. łączone mój GEM_HOME i GEM_PATH zmienne środowiskowe w górę (w .profile/.bash_profile/.bashrc) z pliku .gemrc 4.Sprawdzone uprawnienia do folderów z klejnotami 5. Możesz także sprawdzić, czy masz cokolwiek w/etc/gemrc – SundayEdition

+0

Więc przeszedłem przez te sugestie i wszystkie wydają się sprawdzać: 1) tylko jeden plik wykonywalny gem w/usr/bin , 2) nie .gemrc, 3) Nigdy nie ustawiam tych zmiennych w moich .profile, 4) foldery gem miały uprawnienia root, z którymi sudo powinno być w porządku, 5) no/etc/gemrc. Jedynym innym problemem jest być może fakt, że mój katalog domowy żyje w systemie AFS, który naprawia problemy? –

-3

woulda było prostsze su (hasło), a następnie chmod 755 /usr/lib/ruby/gems/1.8

+1

Bezpieczniejsze jest instalowanie klejnotów w swoim katalogu domowym lub/usr/local/.... Nie zadzieraj plików instalowanych przez system i nie twórz folderów biblioteki zapisywalnych dla każdego użytkownika. To będzie odwrotna sytuacja. – Munhitsu

0

byłem uruchomiony w tym samym problemem się na Fedorze 15, więc wpadłem „gem zainstaluj "z opcją" --backtrace ", aby zobaczyć, co się dzieje.

Okazało się, że nie działał w /usr/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb:203 gdzie próbował przeszukać katalog, który wcześniej zapisał (katalog domowy użytkownika, który byłem Uruchamianie sudo as)

Nie przeprowadziłem obszernej debugowania, aby zobaczyć, jaka była podstawowa przyczyna, tylko wykorzystałem szybkie obejście problemu, aby móc kontynuować działania. Obejście problemu polegało po prostu na przeniesieniu dysku CD do katalogu głównego, np. cd/, przed uruchomieniem polecenia instalacji gem.

Mam nadzieję, że to pomoże/rozwiąże problem.