2015-04-06 31 views
22

Próbującgyp WARN EACCES użytkownika "root" nie ma uprawnień dostępu do reż dev

sudo npm install protractor -g 

i tego samego błędu osławionego/ostrzeżenia ponownie (googled bezskutecznie):

gyp WARN EACCES user "root" does not have permission to access the dev dir "/Users/dmitrizaitsev/.node-gyp/0.12.0" 

Wygląda na to, że node version 0.12.0 jest pobierany i przebudowywany ponownie podczas tej samej instalacji, mimo że jest bieżącą wersją węzła na moim komputerze:

node -v 
v0.12.0 

Pytania:

  • Katalog "/Users/dmitrizaitsev/.node-gyp/0.12.0" jest rzeczywiście brakuje! Dlaczego taka myląca wiadomość?

  • Dlaczego ten katalog nie został utworzony ani podczas node v0.12.0, ani podczas poprzedniej pomyślnej odbudowy z node-gyp?

  • (Oczywiście) Jak mogę temu zapobiec?

Używam Mac OSX 10.8.5, jeśli ma to jakiekolwiek znaczenie.

Odpowiedz

33

UPDATE. Jest lepszy sposób - zmieniając domyślny globalny katalog npm na podkatalog użytkownika, do którego masz już odpowiednie uprawnienia, więc nie musisz narzekać na uprawnienia systemu plików lub prawa własności na pierwszym miejscu.

Zgodnie z zaleceniami zawartymi https://docs.npmjs.com/getting-started/fixing-npm-permissions:

  1. Zrób katalog dla instalacji globalnych:
mkdir ~/npm-global 
  1. Konfiguruj NPM do użyj nowej ścieżki do katalogu:
npm config set prefix '~/npm-global' 
  1. Otwórz lub utwórz ~/.profile (lub ~/.bash_profile etc) plik i dodać tę linię (na końcu pliku):
export PATH=~/npm-global/bin:$PATH 

Zobacz także przewodnik Sindre Sorhus na ten temat: https://github.com/sindresorhus/guides/blob/master/npm-global-without-sudo.md


teraz zorientowali, co się stało:

Katalog miał złe uprawnienia - nie było zapisu (co byłoby lepsze niż komunikat o błędzie „dostępny”).

A ponieważ nie był zapisywalny, katalog tymczasowy był używany i usuwany po każdym użyciu, dlatego całe pobieranie musiało być uruchamiane wielokrotnie.

Rozwiązaniem jest ustawienie uprawnień użytkownika z

sudo chown -R $USER <directory> 

i nigdy sudo npm ponownie. Wygląda na to, że po uruchomieniu sudo npm wszystkie utworzone podkatalogi mają niepoprawne uprawnienia, co później prowadzi do problemów.

See here for more details.

7

Spróbuj z:

sudo npm zainstalować -g moduł--unsafe-perm

+1

Nie, nie "sudo npm" - zobacz moją odpowiedź! –

+0

Dzięki, to rozwiązało mój problem. Nie mogłem wprowadzić powyższej odpowiedzi z jakiegoś powodu. –

+0

dla mnie to zadziałało. Uruchomiono npm na root, więc trzeba się upewnić, że może działać jako root. --unsafe-perm. Dziękuję za poprawkę –

2

To dlatego, że nie masz folderu w tym katalogu "/Users/dmitrizaitsev/.node-gyp/0.12.0".

Wystarczy utworzyć nowy folder o nazwie 0.12.0 która jest numer wersji węzła

będzie rozwiązać problem.

+0

2 lata później, napotykając na ten problem z węzłem 9.0.0 i oczywiście nie mam katalogu '/ usr/local/js/node-v9.0.0/lib/node_modules/@angular/cli/ node_modules/node-sass/.node-gyp/9.0.0', ponieważ właśnie to ma obsługiwać skrypt instalacyjny. Po to właśnie jest. Zamiast tego pojawia się błąd "nie mam uprawnień" i nieskończoną pętlę podczas instalacji. Poczucie lat 90. Błazeński. –

+0

Cóż, 'mkdir' wyłączył instalator z pętli. Do następnego problemu. –