Próbuję ustawić środowisko węzłów na nowej instancji Ubuntu 12.04, z już zainstalowanym Node 0.8.14, ale napotkałem problemy podczas próby uruchomienia npm install
. Więc kiedy próbuję npm install
, mówi, że muszę go uruchomić jako root lub adminisrator:
Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script'
npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/usr/local/lib/node_modules/coffee-script',
npm ERR! fstream_type: 'Directory',
npm ERR! fstream_path: '/usr/local/lib/node_modules/coffee-script',
npm ERR! fstream_class: 'DirWriter',
npm ERR! fstream_stack:
npm ERR! [ 'DirWriter._create (/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23)',
npm ERR! '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53',
npm ERR! 'Object.oncomplete (fs.js:297:15)' ] }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
Ale kiedy próbujesz uruchomić go jako sudo, wyświetla się następująco:
npm WARN cannot run in wd PackNodeDev@0.0.1-166 npm install -g coffee-script node-gyp (wd=/home/ubuntu/PackNode)
W moim pliku package.json zawiera następujące skrypty:
"scripts": {
"preinstall": "npm install -g coffee-script node-gyp",
"start": "node server.js",
"test": "mocha --require should --compilers coffee:coffee-script --colors"
},
Pozostałe zależności od deweloperów obowiązują, odkąd wszystko poprawnie zainstalowałem na własnym komputerze (Mac). Czy ktoś ma pojęcie, dlaczego tak się dzieje?
sudo npm install --unsafe-perm
jednaksudo npm install
nie, chociaż dodałem"unsafe-perm":true
do package.json ... Nie wiem dlaczegonpm install --unsafe-perm
działa dla mnie, próbowałem podążać za implikacjami dotyczącymi zmiany domyślnejuser
konfiguracji. Tak zrobiłemnpm set user my_user
inpm set group my_group
, które dodaje odpowiednie wpisy w.npmrc
pliku użytkownika root . Problem polega jednak na tym, żenode_modules
sam folder i jego podfoldery są nadal własnością roota, więc to nie pomaga. Nie mogłem znaleźć żadnego sposobu, aby nie należały do roota.Jedyną rzeczą, która zadziałała, było dodanie
.npmrc
pliku zawierającego:Dodanie tej samej konfiguracji do
package.json
nie przyniosło żadnego efektu.źródło
RUN npm set unsafe-perm true
Doświadczyłem tego samego problemu podczas próby opublikowania mojej aplikacji nodejs na prywatnym serwerze z systemem CentOs przy użyciu użytkownika root. Ten sam błąd jest wywoływany przez „postinstall”: „./node_modules/bower/bin/bower install” w moim pliku package.json, więc jedynym rozwiązaniem, które działało, było użycie obu opcji, aby uniknąć błędu:
1: użyj opcji --allow-root dla polecenia instalacji bower
2: użyj opcji --unsafe-perm dla polecenia instalacji npm
źródło
OP tutaj, dowiedziałem się dużo więcej o node, odkąd po raz pierwszy zadałem to pytanie. Chociaż odpowiedź Dmitrija była bardzo pomocna, ostatecznie zrobiłem to dla mnie, aby zainstalować węzeł z odpowiednimi uprawnieniami.
Zdecydowanie nie polecam instalowania węzła przy użyciu jakichkolwiek menedżerów pakietów, ale raczej skompilowanie go samodzielnie, aby znajdował się w katalogu lokalnym z normalnymi uprawnieniami.
Ten artykuł zawiera bardzo jasne instrukcje krok po kroku, jak to zrobić:
https://www.digitalocean.com/community/tutorials/how-to-install-an-upstream-version-of-node-js-on-ubuntu-12-04
źródło
Naprawiłem to, zmieniając właściciela
/usr/local
i~/Users/user-name
tak:sudo chown -R my_name /usr/local
To pozwoliło mi zrobić wszystko bez
sudo
źródło