sudo: npm: команда не знайдена


201

Я намагаюся оновити до останньої версії вузла. Я дотримуюся інструкцій на веб-сторінці http://davidwalsh.name/upgrade-nodejs

Але коли я це роблю:

sudo npm install -g n

Я отримую помилку:

sudo: npm: command not found

npm працює без судо. Коли я роблю:

whereis node

Я бачу:

node: /usr/bin/node /usr/lib/node /usr/bin/X11/node /usr/local/node

Запуск:

which npm

Показує:

/usr/local/node/bin/npm

Я спробував рішення за адресою https://stackoverflow.com/a/5062718/1246159

Але я все одно отримую ту саму помилку. Я також переглянув файл / etc / sudoers і відповідний рядок:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Це мені добре виглядає. Як я можу змусити NPM працювати з командою sudo?


4
Це працює? sudo /usr/bin/npm install -g n
robertklep

2
Чи можете ви спробувати перевстановити вузол? Це здається, що ви видалили npm.
Jeff Sloyer

1
Можливо, ви додали /usr/local/node/binдо свого $PATH, але його npmслід встановити в /usr/local/bin. Перший каталог не в secure_pathякому пояснюється, чому sudoйого не можна знайти.
robertklep

1
Використовуючи nvmтут Ubuntu - з коментарем @robertklep, я спробував, sudo /home/${user}/.nvm/version/node/${version}/bin/npm installі це спрацювало.
Став Пан Геффен

2
Це вирішило мою проблему, перевстановившись із наступного пакету. nodejs.org/uk/download
Marghoob Suleman

Відповіді:


125

Файл npm повинен бути в /usr/local/bin/npm. Якщо його немає, встановіть node.js знову з пакетом на їхньому веб-сайті . Це спрацювало в моєму випадку.


Дякую. Якщо ви встановите вузол в інших накопичувачах даних, де OS не встановлений, ви не можете знайти цей шлях.
Хардік Дарджі

1
у випадку mac os з homebrew .. два кроки потрібно зробити (1) який вузол (2) який npm, який має бути як у / usr / local / bin (де homebrew встановлює / символізує вузол + npm) ... щоб вирішити .. спробуйте (1) заварити лікар (2) заваріть перевстановити вузол, якщо його все-таки виникають проблеми .. перевірте свій шлях (відлуння $ PATH). у вас повинно бути декілька місць для бін, які вказують на різні установки вузлів. Якщо це так ... очищення (як це зробити акуратніше) ваш ~ / .bashrc / ~ / .bash_profile, так що / usr / local / bin є завантажується без іншої, що вказує на випадкову установку вузла.
Jimmy MG Lim Lim

3
Це часткове рішення. Проблема виникає під час встановлення вузла вручну. Ви повинні зв'язати кожен встановлений двійковий код у / usr / bin або / usr / local / bin. Встановлення шляху в bashrc root не буде працювати, оскільки він не читається під час sudo, тому це єдиний спосіб, якщо це не встановлено, якщо ви не встановите пакет.
креветки

як сказано в @shrimpwagon, у нижній частині інструкцій з інструкцією ви посилаєте "посилання ldo -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / node / usr / bin / node sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npm / usr / bin / npm sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npx / usr / bin / npx "
Джеймс Нельсон

169

Мені довелося це робити

sudo apt-get install npm

що працювало на мене.


6
Важко зрозуміти, що ти хочеш висловити.
крихітні сонячні промені

4
Це застаріло. Для мене працювали такі команди, які я знайшов тут: github.com/nodesource/distributions#debinstall # Використання Ubuntu curl -sL deb.nodesource.com/setup_5.x | sudo -E bash - sudo apt-get install -y nodejs # Використання Debian як root curl -sL deb.nodesource.com/setup_5.x | bash - apt-get install -y nodejs
Hamed

4
@tinysunlight Я не впевнений, що незрозуміло. Оп каже, що команда npm відсутня. Ця команда встановлює команду npm.
Velocibadgery

7
Це не є правильною відповіддю на питання, оскільки це очевидно з оп, який npmуже встановлений, але недоступний, коли викликається через sudo. За допомогою цього рішення ви перевстановлюєте npm, який вже існує. Це бойові симптоми, а не пошук причини. Я розумію, що це може виправити зламані речі для деяких людей, але це вводити в оману, стоячи так.
Домінік

4
Коли я встановив вузол за допомогою NVM на Ubuntu 18.10, sudo не розпізнає npm як команду. sudo apt-get install npmпрацював на мене.
AlienKevin

91

Наступні кроки для користувачів MAC працювали для мене.

$ brew update
$ brew uninstall node
$ brew install node
$ brew postinstall 

5
Це brew uninstall nodeне працювало для мене, але я продовжував роботу з brew install nodeі brew postinstallі це вирішило проблему. Спасибі
Тревор

2
Що brew postinstallсаме робить ?
Олівер Д

у домашній версії 2.2.14 brew postinstallзайвий
Арслан Хан

63

У мене була така ж проблема; ось команди, щоб виправити це:

  • sudo ln -s /usr/local/bin/node /usr/bin/node
  • sudo ln -s /usr/local/lib/node /usr/lib/node
  • sudo ln -s /usr/local/bin/npm /usr/bin/npm
  • sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf

2
Працював для мене на CentOS 7
hirikarate

4
Для мене працював Ubuntu 16.04.1 LTS. Я використовую NVM, тому перший шлях був до того, де NVM встановив вузол та npm (шлях включає версію %HOME%/.nvm/versions/node/v7.4.0/bin/npm). Прикро, що мені доведеться посилатися на цю відповідь щоразу, коли я оновлюю NVM через те, як зміниться версія на шляху
kas

1
Це вирішило це і для мене! Спочатку розміщено на переповнюванні стека: На EC2: команда вузла sudo не знайдена, але вузол без судо в порядку
Домінік

2
@kas sudo ln -s $(whereis node) /usr/bin/node І так далі. у вашому баш-профілі.
Аравінд Воггу

Працював для мене в екземплярі AWS ec2.
Chirag Purohit

26

ПОПЕРЕДЖЕННЯ (редагувати)

Виконання а chmod 777є досить радикальним рішенням. Спробуйте скористатися спочатку, по черзі, і зупиніться, коли працює:

  • $ sudo chmod -R 777 /usr/local/lib/node_modules/npm
  • $ sudo chmod -R 777 /usr/local/lib/node_modules
  • $ sudo chmod g+w /usr/local/lib
  • $ sudo chmod g+rwx /usr/local/lib

$ brew postinstall node є єдиною частиною встановлення, де у мене виникнуть проблеми

Permission denied - /usr/local/lib/node_modules/npm/.github

Так я

// !! READ EDIT ABOVE BEFORE RUNNING THIS CODE !!
$ sudo chmod -R 777 /usr/local/lib
$ brew postinstall node

і альта, npm тепер пов'язана

$ npm -v
3.10.10

Додатково

Якщо ви використовували -R 777на Lib моя рекомендація буде встановити вкладені файли і директорії установки за замовчуванням:

  • $ find /usr/local/lib -type f -print -exec chmod 644 {} \;
  • $ find /usr/local/lib -type d -print -exec chmod 755 {} \;
  • $ chmod /usr/local/lib 755

3
@Jacksonkr ..... ти щойно рекомендував chmoding 777 всю локальну папку / lib?
sfratini

Яким chmodмає бути цей каталог?
tim_xyz

1
@tim_xyz - drwxr-xr-xце параметри за замовчуванням для lib. При цьому НЕ використовуйте рекурсивну функцію -Rпід час повернення папки назад.
Джексонкр

Дякую! sudo chmod -R 777 / usr / local / lib / node_modules працював на мене
Hisagr


8

Для користувачів CentOS це для мене працює:

sudo yum install npm

1
Проблема такого підходу полягає в тому, що, наприклад, у Fedora, він дуже застарів у dnf / yum repos
ACV

2
На CentOS 7 вам потрібно спочатку ввімкнути EPEL repo:yum install epel-release; yum install npm
hudolejev

8

Щоб встановити пакети npm у всьому світі з дозволу sudo, /usr/bin/npmслід мати доступ. Якщо npmіснує в іншому каталозі, створіть м'яке посилання, наприклад:

sudo ln -s /usr/local/bin/npm /usr/bin/npm

Він працює на Fedora 25, node8.0.0 та npm5.0.0


6

На macOS це працювало для мене:

brew reinstall node

1
Вибачте щойно помітив, що питання позначене тегом unix, але воно все ще може бути корисним, оскільки це найкращий результат пошуку Google для "команда macos npm не знайдена"
friederbluemle

5

Для debian після встановлення вузла введіть

curl -k -O -L https://npmjs.org/install.sh    
ln -s /usr/bin/nodejs /usr/bin/node  
sh install.sh

5

Якщо ви встановили node / npm за допомогою nvm, файл конфігурації середовища nvm повинен бути запущений, перш ніж ви зможете використовувати будь-який пакет.

Як правило, це є у ~ / .nvm / nvm.sh.

Щоб запустити це автоматично, включіть:

source ~/.nvm/nvm.sh

у файлі .bash_profile для вашого користувача

Якщо ви хочете потім використовувати sudo з цим користувачем, обов'язково включіть параметр -i, щоб sudo встановила середовище користувача. напр

sudo -iu jenkins npm install grunt-cli

4

просто перевстановити.

На RHEL, CentOS та Fedora

sudo yum remove nodejs npm
sudo dnf remove nodejs npm   [On Fedora 22+ versions]

тоді

yum -y install nodejs npm
dnf -y install nodejs npm   [On Fedora 22+ versions]

легко! .. і вузол, і npm працює як шарм зараз!


3

Я вирішив цю проблему шляхом

apt-get install npm2deb

1
що це за відповідь? npm2deb є третьою стороною
Beau Bouchard

1
це не зовсім "довіра", оскільки у третьої сторони може бути скоріше скомпрометований, ніж з npm безпосередньо з джерела. я нічого не знаю про npm2deb, але подумайте, чи хотіли б ви використовувати його у вашій компанії, вони, мабуть, будуть суворо
ставитись

Це очевидно для всіх.
Игорь Демянюк

1

У мене була така ж проблема, причина в тому, що менеджер пакунків npm не був встановлений під час встановлення вузла. Це було викликано наступною помилкою: У процесі встановлення є крок під назвою "Спеціальна установка", тут у вас є можливість вибрати одне з наступних: 1) Час виконання Node.js (Це вибрано за замовчуванням). 2) менеджер пакунків npm 3) ярлики Інтернет-документації. 4) Додати в шлях. Якщо ви продовжите, як це npm, менеджер пакунків не буде встановлений, а значить, ви отримаєте помилку.

Рішення: Коли ви отримаєте ці параметри, виберіть менеджер пакетів npm. Це працювало для мене.


1

Якщо ви завантажили пакет вузлів і дістали його де-небудь, як /optви можете просто створити символічне посилання всередині /usr/local/bin.

/usr/local/bin/npm -> /opt/node-v4.6.0-linux-x64/bin/npm
/usr/local/bin/node -> /opt/node-v4.6.0-linux-x64/bin/node

1

У мене теж був той самий випуск у Homestead і спробував багато способів. Я спробував

sudo apt-get install nodejs

Я отримую таку помилку:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi (>= 0.3.0-2) but it is not going to be installed
       Depends: node-ansi-color-table but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 3.0.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-underscore but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Нарешті я спробував

sudo apt-get dist-upgrade

Це добре працювало.

root@homestead:/usr/local/bin# npm -v
3.10.10

root@homestead:/usr/local/bin# node -v
v6.13.0

1

Моє рішення:

sudo -E env "PATH=$PATH" n stable

Добре працює для мене.

Знайшов його тут: https://stackoverflow.com/a/29400598/861615

Це відбувається тому, що у вас є зміна глобального каталогу пакунків за замовчуванням


0

Додано npm бінарний шлях до sudo шляху за допомогою visudo та редагування "secure_path"

Зараз "sudo npm" працює


0

Видаліть Вузол повністю:

  brew uninstall --force node

Встановити ще раз:

brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules'

0

У випадку, якщо це може бути корисним для тих, хто використовує rh-*пакети, це працювало для мене:

sudo ln -s /opt/rh/rh-nodejs8/root/usr/bin/npm /usr/local/bin/npm

0

Оскільки я встановив node.js за допомогою .tar-файлу, доступного на node.js, мені довелося поставити місце розташування каталогу вузлів:

~ / .bashrc

root, переходячи від звичайного користувача до root за допомогою команди:

судо -і

тоді мені довелося додати шлях до вузла, де я витяг його у файл .bashrc, як показано нижче: введіть тут опис зображення

потім переглянув .bashrc, використовуючи

. ~ / .bashrc

там після

npm: command not found

пішов


0

Робота для мене Вирішення помилок у дозволах EACCES при встановленні пакетів у всьому світі

Щоб мінімізувати ймовірність помилок дозволів, ви можете налаштувати npm для використання іншого каталогу. У цьому прикладі ви створите та використаєте прихований каталог у своєму домашньому каталозі.

Створіть резервну копію комп'ютера. У командному рядку у своєму домашньому каталозі створіть каталог для глобальних установок:

 mkdir ~/.npm-global

Налаштуйте npm для використання нового шляху до каталогу:

 npm config set prefix '~/.npm-global'

У бажаному текстовому редакторі відкрийте або створіть файл ~ / .profile і додайте цей рядок:

 export PATH=~/.npm-global/bin:$PATH

У командному рядку оновіть системні змінні:

 source ~/.profile

Щоб перевірити вашу нову конфігурацію, встановіть пакет глобально, не використовуючи sudo:

 npm install -g jshint

0

Для мене жоден із методів, згаданих вище, використовуючи Homebrew, не працював на macOS. Отже, я видалив вузол за допомогою Homebrew та завантажив пакет вузла з https://nodejs.org/uk/download/ та встановив його. Це спрацювало як шарм.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.