2015-09-18 4 views
3

Я пытаюсь установить последнюю версию npm, следуя инструкциям на the npm doc site.npm установка самостоятельно без зависимостей

Моя проблема заключается в том, что с помощью команды:

npm install -g npm 

, чтобы получить самую последнюю версию НПМ, кажется, не работает: он, кажется, не устанавливать какие-либо из необходимых зависимостей, поэтому, когда я запускаю его я получаю ошибки, такие как:

module.js:340 
    throw err; 
     ^
Error: Cannot find module 'are-we-there-yet' 
    at Function.Module._resolveFilename (module.js:338:15) 
    at Function.Module._load (module.js:280:25) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (/home/harmic/.node_modules/lib/node_modules/npm/node_modules/npmlog/log.js:2:16) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 

Я использую машину Centos 6, поэтому я начал устанавливать узел + НПМ из Epel, как это:

yum install nodejs npm 

Все прошло хорошо. Затем я пошел устанавливать последнюю версию npm, как рекомендовано в приведенной выше ссылке и многих других страницах, которые я видел. Моя первая попытка

sudo npm install -g npm 

была не столь велика, по двум причинам:

  1. Он установлен в /usr/lib/node_modules, поверх первоначальной установки RPM. Я считал, что это очень плохая практика, потому что в следующий раз, когда я сделал yum update, в системе все шансы, что новые файлы будут перезаписаны любыми входящими пакетами RPM, оставят нечестивый беспорядок.

  2. В любом случае это не сработало: я вообще не мог запустить npm, он постоянно жаловался на отсутствие зависимостей, как описано выше.

Поэтому я удалил RPM, удалил все левые файлы и снова установил RPM. На этот раз я создал ~/.npmrc файл и поместить его в нем:

prefix = ${HOME}/.node_modules 

Я также установить переменные окружения NODE_PATH включить этот путь. После этого НПМ было установить себя в моем нужном месте, но не устанавливать никаких зависимостей:

$ npm install -g npm 
npm http GET https://registry.npmjs.org/npm 
npm http 304 https://registry.npmjs.org/npm 
/home/harmic/.node_modules/bin/npm -> /home/harmic/.node_modules/lib/node_modules/npm/bin/npm-cli.js 
[email protected] /home/harmic/.node_modules/lib/node_modules/npm 

Запуск из нового установленного пути дал ошибку в верхней части страницы.

Несмотря на мысль, что я должен делать что-то серьезно не так, я приступил к попытке установить неудовлетворенные зависимости, по одному за раз:

npm install -g are-we-there-yet 
npm install -g gauge 
npm install -g os-tmpdir 
npm install -g os-homedir 
npm install -g is-absolute 
npm install -g asap 
npm install -g path-is-absolute 
npm install -g builtins 
npm install -g validate-npm-package-license 
npm install -g concat-stream 
npm install -g json-parse-helpfulerror 
npm install -g readdir-scoped-modules 
npm install -g debuglog 
npm install -g lodash._baseclone 
npm install -g lodash._bindcallback 
npm install -g lodash._baseflatten 
npm install -g lodash._baseuniq 
... 

и до сих пор жалуется на необходимости больше.

Наконец я пришел к выводу, что я должен пропустить что-то важное, поэтому я решил обратиться за помощью SO сообщества ...

В первоначально установленных версиях узла & НПХ РПХ являются:

  • nodejs-0.10.36-3.el6
  • npm-1.3.6-5.el6

О, и в случае, если вам интересно, почему я пытаюсь обновить НПМ в первую очередь потому, что при попытке установить this package я столкнулся с ошибкой сборки, решение, которое, по-видимому установить обновлен npm.

ответ

2

Прежде всего, я предлагаю вам забыть установить узел с RPM/APT и т. Д., Причина этого в том, что обычно они имеют устаревшие версии. Infact 0.10 очень старый, 0.12 почти год назад, а теперь уже 4.1. Поэтому я предлагаю использовать nvmhttps://github.com/creationix/nvm

nvm является менеджером версий узлов. круто думать, что вы можете переключать версию с помощью одной команды и всегда оставаться в курсе. После установки нужной версии узла вы также можете обновить npm.

Вы даже можете выбрать вариант узла для определенной папки в вашей системе (если у вас есть код, который работает только в старой версии, например)

+0

Избежание РПМ может быть хорошо для моей среды разработки, но он выиграл» возможно, когда дело доходит до развертывания. Я не могу ожидать, что системные администраторы будут изучать и управлять несколькими системами управления пакетами, менеджерами версий и т. Д. Но я, по крайней мере, проверю nvm для моей среды. – harmic

+0

Но в этот момент на серверах будет их проблемой обновить версию, которая не предоставляется RPM, они могут скомпилировать;) – DevAlien