2013-07-30 13 views
11

mam zainstalowane Bundler klejnot na moim nowym serwerze i gdy próbuję wykonać bundle install, to nie powiodło się z tego błędu:`pakiet install` powiodło się z powodu zgody odmówiono

Unfortunately, a fatal error has occurred. Please see the Bundler troubleshooting documentation at http://bit.ly/bundler-issues. Thanks! 
/usr/lib/ruby/1.9.1/fileutils.rb:247:in `mkdir': Permission denied - /var/lib/gems (Errno::EACCES) 

Mój serwer jest wheezy Debian (7.1) z domyślnym pakietem ruby ​​1.9.3. Skonfigurowałem /etc/gemrc w następujący sposób: gem: --user-install, aby umożliwić użytkownikom instalowanie klejnotów lokalnie.

Klejnot bundler został zainstalowany wewnątrz klejnotów mojego użytkownika, katalog ~/.gem jak chcę z tego polecenia: gem install bundler (bez sudo). Ale Bundler chcesz zainstalować perełki w /var/lib/gems zamiast mój katalog perełki :(

nie rozumiem co w tym złego Bundler ... dlaczego nie spróbować zainstalować gem gdzie chcę (w moich klejnotów lokalny dir)?

ps: w moim laptopie, z ArchLinux i domyślnej Ruby 2.0.0 pakietu zainstalowane, nie mam żadnych problemów z Bundler aby zainstalować perełki użytkownika

+0

Czy używasz menedżera wersji ruby? –

+0

nie ... Próbowałem z rbenv z tym samym wynikiem i usunąłem go. – JoJoS

Odpowiedz

18

Znalazłem!

Zaktualizowałem mój rubygem w ten sposób: gem update --system. Ale tylko moje lokalne klejnoty zostały zaktualizowane z powodu ograniczenia gem: --user-install w moim /etc/.gemrc. Kiedy bundler działa, używa globalnego rubygem, a nie mojego.

Aby rozwiązać ten problem, zaktualizowałem globalne rubygemy za pomocą: sudo gem update --system --no-user-install.

Wszystko działa dobrze!

+0

Dzięki! To naprawdę pomoże! – Yuanhang

6

bundle install nie używać ustawień gemrc (Chociaż possibly that has changed w ostatniej aktualizacji.. , ale aktualizacja wydaje się załadować tylko ~/.gemrc, a nie/etc/gemrc)

Możesz zrobić, co chcesz, z bundle install --path ~/.gem

Jednak gorąco polecam sprawdzenie działania rbenv lub RVM. Powiedziałeś, że masz "ten sam wynik" z rbenv. Jeśli twoje klejnoty próbowały zainstalować się w /var/lib/gems, gdy miałeś zainstalowany rbenv, to nie był to zainstalowany Rubin, który uruchamiał to polecenie. Albo rbenv nadal używa systemu Ruby (który będzie działał, dopóki nie wybierzesz rbenv zainstalowanego Ruby, aby stać się domyślnym), lub nie masz poprawnie działającego programu rbenv.

+1

Masz rację! Bundler działa dobrze z dobrze skonfigurowanym routerem. Moje problemy ze szwem ze względu na mój '~/.profile' który jest bardzo obciążony, gdy jestem zalogowany. Muszę jawnie załadować go' source ~/.profile'. Przeniesię rbenv do '.bashrc'. Dzięki !!! ;) – JoJoS

5

Według bundler documentation zmienna $BUNDLE_PATH lub $GEM_HOME env można ustawić, aby to domyślny zapisywalny miejsce.

export BUNDLE_PATH=~/.gems 

bundle install 

Jest bardzo przydatny, jeśli {nie masz/nie chcesz używać} uprawnienia administratora.

+0

gdzie znalazłeś to w dokumentacji bundler? – Bernhard

Powiązane problemy