Już miałem rozpocząć jakiś projekt node.js w domu, ale natknąłem się na dziwne zachowanie podczas instalowania pakietów npm na całym świecie.Zestawy npm dziwne zezwolenia dla pakietów zainstalowanych globalnie
Używam WebStorm jako mojego IDE i chcę korzystać z funkcji ECMAScript6, co oznacza, że muszę transponować źródła, które WebStorm robi za pomocą Babel.
Więc próbowałem zainstalować Babel globalnie:
$ sudo npm install -g babel-cli
Co się dzieje, że te pliki są dostępne w porządku od użytkownika root i katalog babel-cli
i wszystkich plików i katalogów w nim wyglądać dobrze tak długo, jak Wyglądam jak root
. Problem zaczyna się, kiedy próbuję spojrzeć na opakowaniu, lub wykorzystać go, jako inny użytkownik:
$ ls -l /usr/lib/node_modules/babel-cli/
ls: cannot access '/usr/lib/node_modules/babel-cli/lib': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/index.js': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/scripts': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/node_modules': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/package.json': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/README.md': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/bin': Permission denied
total 0
d????????? ? ? ? ? ? bin/
d????????? ? ? ? ? ? lib/
d????????? ? ? ? ? ? node_modules/
d????????? ? ? ? ? ? scripts/
-????????? ? ? ? ? ? index.js
-????????? ? ? ? ? ? package.json
-????????? ? ? ? ? ? README.md
To nie ma znaczenia, który pakiet zainstalować, wszyscy stają się w ten sposób.
Używam node.js v6.3.0 i npm 3.10.3, na Ubuntu 16.04.
Zainstalowałem plik node.js świeżo zgodnie z instrukcją here. Jeśli spróbuję zaktualizować npm
, to samo dzieje się z globalnym katalogiem npm, a npm staje się niedostępny z wyjątkiem root
.
Kiedy liście światowego node_modules
jako użytkownik widzę
$ ll /usr/lib/node_modules/
total 8,0K
drwxr--r-- 6 nobody root 4,0K jul 15 23:50 babel-cli/
drwxr-xr-x 10 root root 4,0K jul 15 23:21 npm/
Poza tym katalogu są własnością przez nobody
widzę nic specjalnego.
Nie ma oczywiście żadnych błędów podczas instalacji pakietu.
Czy coś jest nie tak z npm i/lub węzłem? Czy jest coś nie tak z Ubuntu? Lub jak zainstalowałem węzeł? Jaki mógł być powód czegoś takiego?
Instalacja lokalna działa dobrze, a dla pakietu babel-cli
jest to dopuszczalne rozwiązanie, aby zainstalować go jako pakiet rozwoju lokalnego. Nadal chciałbym wiedzieć, co dzieje się podczas instalowania pakietów na całym świecie i dlaczego.
Problem answered here. Problem nie był związany z npm
i node
.
używam repozytorium źródłowego i węzła Nie widziałem tych problemów. Jednak używam węzła 4.4 ze starszym npm. Czy masz problem z Babel? A co z innymi narzędziami CLI, takimi jak grunt, łyk, altana itp.? – tsturzl
@tsturzl To samo dotyczy wszystkich pakietów instalowanych globalnie. –
Nigdy, przenigdy nie używaj 'sudo' z' npm'. Po prostu prosisz o kłopoty. Wyczyść węzeł, wszystkie moduły i katalogi i zainstaluj wszystko z normalnymi uprawnieniami użytkownika. – xdumaine