Właśnie ponownie zainstalowałem Ubuntu 12.04 LTS, a przede wszystkim wykonałem następujące kroki :
Zainstalowano Node przez menedżera pakietów z następującym skryptem
sudo apt-get update sudo apt-get install python-software-properties python g++ make sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs
Próbowałem zainstalować generatory yeoman, express, n, yeoman's na całym świecie i wszystkie zwróciły ten sam błąd
npm ERR! Błąd: EACCES, łącze symboliczne „../lib/node_modules/n/bin/n”
npm ERR! {[Błąd: EACCES, link symboliczny „../lib/node_modules/n/bin/n”] errno: 3, kod: „EACCES”, ścieżka: „../lib/node_modules/n/bin/n”}
npm ERR!
npm ERR! Spróbuj ponownie uruchomić to polecenie jako root / Administrator.
npm ERR! System Linux 3.8.0-29-generic
npm ERR! polecenie "/ usr / bin / node" "/ usr / bin / npm" "install" "-g" "-d" "n"
npm ERR! cwd / home / heberlz
npm ERR! node -v v0.10.20
npm ERR! npm -v 1.3.11
npm ERR! ścieżka ../lib/node_modules/n/bin/n
npm ERR! kod EACCES
npm ERR! errno 3
npm ERR! Błąd stosu: EACCES, łącze symboliczne „../lib/node_modules/n/bin/n”
npm ERR!
npm ERR! Dodatkowe szczegóły logowania można znaleźć w:
npm ERR! /home/heberlz/npm-debug.log
npm ERR! nie ok kod 0
Odzyskano prawa własności do następujących folderów rekurencyjnie ~ / .npm, / usr / lib / node, / usr / lib / node_modules i następujących dowiązań symbolicznych / usr / bin / node, / usr / bin / nodejs bez żadnego sukcesu
Muszę zainstalować yeoman i jego generatory bez sudo, żeby później nie mieć kłopotów :(
ln -s /usr/bin/nodejs /usr/bin/node
Odpowiedzi:
Ubuntu 12.04 i użycie PPA Chrisa Lei do instalacji działa dla mnie:
i dodanie $ HOME / .npm-packages / bin do $ PATH
dołączyć do
.bashrc
zobacz https://stackoverflow.com/a/18277225 z @passy
źródło
/usr/lib/node_modules/
. A może nawet należałoby utworzyć grupę nodejs unix i dać tej grupie uprawnienia do zapisu w tym katalogu.Jeśli już masz
$HOME/bin
na swojej drodze, prostszym rozwiązaniem jest po prostu ...$HOME/bin
katalogu.Ponieważ ta dyskusja naprawdę dotyczy zmniejszenia zagrożeń bezpieczeństwa związanych z uruchomieniem
sudo
, należy również pamiętać, że każda aplikacja węzła może potencjalnie instalować nazwę aplikacji, która nie jest zgodna z nazwą pakietu zarejestrowanego węzła, którą myślisz, że instalujesz. Istnieje więc ryzyko, że polecenienpm install
zastąpi istniejące polecenie systemowe lub polecenie, które już masz$HOME/bin
. Jeśli martwisz się, najpierw sprawdź właściwościbin
iscripts
wpackage.json
pliku aplikacji, którą instalujesz.Ogólnie najbezpieczniej jest:
$HOME/bin
ostatnią pozycję na ścieżce, aby polecenia systemowe nie zostały zastąpione.$PATH
aby przypadkowo nie uruchomić polecenia, które znajduje się w bieżącym katalogu.Odniesienie:
źródło
npm
jest to, że kod źródłowy, który widzisz wgithub.com
repozytorium pakietu węzłów, może nie być tym samym kodem, który instalujesz znpm.org
serwera rejestru!~/bin
, niektóre pakiety węzłów (lub ich pakiety zależne) zostały przetestowane tylko jako instalacje z,sudo
więc pamiętaj, że możesz napotkać niesprawdzony problem ze „środowiskiem instalacyjnym”. Jak każdy inny problem ze środowiskiem (np. Zmiana systemu operacyjnego), zasada „napisz raz, przetestuj wszędzie” nadal obowiązuje.W październiku 2014 r .:
Node.js jest dostępny w repozytorium dystrybucji binarnych NodeSource Debian i Ubuntu .
Otóż to.
Nieaktualna odpowiedź:
Najszybszy sposób bez użycia sudo jest opisany tutaj przez isaaca
EDYTOWAĆ:
Istnieją pewne obawy dotyczące bezpieczeństwa i ograniczenia funkcjonalności dotyczące zmiany właściciela / usr / local na obecnego użytkownika:
Powiedziawszy to, jeśli chcesz zainstalować moduł globalny bez użycia sudo, nie widzę lepszego rozwiązania (z pragmatycznego punktu widzenia) niż wspomniane. Bezpieczeństwo vs łatwość obsługi to bardzo szeroki temat i nie ma na to prostej odpowiedzi - zależy to tylko od Twoich wymagań.
źródło
/usr/local/lib/node_modules
inode
Problem polegał na tym, że zainstalowałem węzeł za pomocą sudo , aby uniknąć błędów podczas globalnej instalacji modułów npm, NIGDY NIE WOLNO instalować węzła z sudo.
Moim rozwiązaniem była ponowna instalacja węzła w ten sposób:
Pobierz najnowsze stabilne źródła węzłów z nodejs.org # w moim przypadku node-v0.10.20.tar.gz
Należy zauważyć, że samo przejęcie na własność folderu / usr / local nie zadziała w moim przypadku, ponieważ sama instalacja węzła została wykonana za pomocą sudo
Ostatni krok do instalacji yeoman: # chociaż na yeoman.io jest napisane, że wykonanie "npm install -g yo" już instaluje bower i chrząknięcie, jest kilka podmodułów gruntów, które zawodzą, więc naprawiłem to instalując je samodzielnie
źródło
Rozwiązałem ten problem ze zmienną środowiskową i aliasem powłoki:
Dla mnie npm nie przestrzegał ustawienia konfiguracji „prefiksu” w .npmrc.
źródło
Zgodnie z tym podobnym postem SO: npm zgłasza błąd bez sudo
Wygląda na to, że możesz mieć problem z własnością
~/.npm
katalogu.Podobnie jak w przypadku odpowiedzi w tym artykule, spróbuj:
źródło
Znajdź ścieżkę do katalogu npm:
W wielu systemach będzie to / usr / local.
Zmień właściciela katalogów npm na nazwę bieżącego użytkownika (Twoja nazwa użytkownika!):
Zmienia to uprawnienia podfolderów używanych przez npm i niektóre inne narzędzia (lib / node_modules, bin i share).
Oto link do pełnych szczegółów
https://docs.npmjs.com/getting-started/fixing-npm-permissions
źródło
bin
ishare
w nawiasach. Ignorowanie może doprowadzić do zmiany właściciela tych folderów na obecnego użytkownika i problemy z instalacją nowych pakietów w systemie,sudo
ponieważ jego własność również ulegnie zmianieJeśli pracujesz na komputerze, na którym się rozwijasz, lepiej rozważyć użycie nvm .
Jeśli nie, po prostu chcesz zainstalować za pomocą swojego ulubionego menedżera pakietów.
Niezależnie od przypadku, polecam sprawdzenie tej odpowiedzi na stackoverflow
źródło
Właściwie właśnie zmieniłem uprawnienia folderu użytkownika, którego właścicielem był root:
Wtedy mógłbym zainstalować "npm install" i "bower install" bez sudo! Działa dobrze!
źródło
używając lubuntu 14.04.3, próbowałem zmienić własność prefiksów .npm i npm, zaktualizowałem ścieżkę, zainstalowałem moduły npm do mojego katalogu domowego bez sudo, ale ścieżka była niepoprawna, więc moduły takie jak ember nie zostały znalezione, linuxbew rozwiązał problem, szybko przewodnik konfiguracji tutaj dla node / npm
źródło
Ten i inne problemy spowodowane tym samym powodem można rozwiązać, instalując Node w przestrzeni użytkownika.
Możesz to zrobić po prostu kopiując i wklejając w swoim terminalu
Te same polecenia można również uruchomić, aby zaktualizować Node do najnowszej wersji.
Nie zapomnij edytować swojego środowiska. Tylko raz
Sprawdź ten artykuł, aby dowiedzieć się, jak zainstalować Node.js bez sudo .
Aby uzyskać bardziej ogólne rozwiązanie dotyczące tego tematu (np . Lokalną instalację oprogramowania), zobacz dotsoftware .
źródło
po prostu użyj nvm, będziesz mógł dynamicznie przełączać się między różnymi wersjami węzłów i jest on instalowany lokalnie dla twojego użytkownika. Nie potrzeba sudo. Tylko upewnij się, że wcześniej w pełni wyczyściłeś stary węzeł.
https://github.com/nvm-sh/nvm
źródło
Najlepszym rozwiązaniem, jakie znalazłem, było zainstalowanie Node.js z pakietu tar w katalogu domowym użytkownika i powiązanie lokalizacji folderu lib. Oto, co musisz zrobić
To zainstaluje Nodejs w ~ / .local / zamiast domyślnego / usr / local /
Jeśli nadal napotykasz błąd własności lub uprawnień podczas instalowania pakietów, zmień własność ~ / .local / dir, uruchamiając
Teraz powinieneś być dobry w instalowaniu pakietów przez 'npm'
Uwaga: WSZYSTKIE POWYŻSZE POLECENIA SĄ WYKONYWANE JAKO UŻYTKOWNIK. NIE UŻYWAJ LOGOWANIA SUDO ANI ROOT
NIGDY NIE ZMIENIAJ DOPUSZCZENIA FOLDERÓW W ZAKRESIE „/ USR / LIB /”. Doprowadzi do niestabilnego systemu operacyjnego
źródło
Uważam wyjaśnienia Paweł Grzybek za bardzo przekonujące: one sprowadzają się do 3 prostych poleceń sudo nigdy konieczności używania sudo ponownie globalnych instalacjach KMP:
źródło