Проверка обновления npm не удалась

14

на самом деле я пытался установить nodejs вместе с npm на моем Ubuntu 17.04. я скачал версию linux с nodejs.org и создал мягкую ссылку для node и nodejs. после проверки версии nodejs он показывает версию, которую я установил, и я в порядке с ней.

Теперь я пытался сделать то же самое для Npm. я пытался создать мягкую ссылку для npm.

 sudo ln -sf /mnt/7A46BE1454633621/softwares/programming/frontend/nodejs/lib/node_modules/npm/bin/npm 
    /usr/bin/npm

Я не знаю, ссылка, которую я создал, правильная или нет. но после запуска npm -vкоманды я вижу версию 5.0.3, которую я пытаюсь установить. версия показана, но прямо под ней я вижу нечто подобное.

5.0.3
npm update check failed                 │
│           Try running with sudo or get access           │
│          to the local update config store via           │
│ sudo chown -R $USER:$(id -gn $USER) /home/sagar/.config 
сахарный лимбу
источник
Вы sudo chown -R $USER:$(id -gn $USER) /home/sagar/.configкак советовали?
Джордж Удосен
Если вы используете Docker, дважды проверьте , доступна ли файловая система только для чтения. Это должно быть доступно для записи.
Константин Ван

Ответы:

14

Моя версия npm 5.0.3, и у меня возникает та же проблема, когда я использую любую команду npm:

сообщение об ошибке npm

Команда работает нормально, но этот код продолжает появляться без видимой причины. Я обновил с 5.0.3 до 5.2.0 с помощью этих команд:

sudo chown -R $USER:$(id -gn $USER) /home/sagar/.config

npm install -g npmили npm i -g npm.

Теперь npm работает нормально.

Arpit
источник
Работал на меня. Хотя мне пришлось обновляться npmс правами root sudo npm i -g npm. Обновлен npm до 6.0.1
Denialos
3

Точно такая же проблема для меня, но, похоже, не связана с версией (я использую npm 5.5.1). Исправление прав на ~/.configсделанный трюк для меня:

sudo chown -R $USER:$(id -gn $USER) ~/.config

Я думаю, это связано с проблемой владельца ~/.config/configstore/update-notifier-npm.json.

Анто
источник
1

Мне пришлось сменить владельца

~/configstore

и

~/configstore/update-notifier-npm.json

$ USER: $ USER.

Я предполагаю, что запуск npmс sudo создал этот файл. В моей системе, по крайней мере, мы находим это:

$ env | grep  -e HOME= -e "^USER="
USER=craig
HOME=/home/craig

$ sudo env | grep  -e HOME= -e "^USER="
HOME=/home/craig
USER=root

Так что, если sudo npmон закодирован для создания, ~/configstore/update-notifier-npm.jsonон сделает это домашним каталогом обычного пользователя. Это создает проблему при последующем запуске, npmбез sudoкоторого тоже хочется читать и, возможно, писать ~/configstore/update-notifier-npm.json. По некоторым причинам разрешения 600 на обоих.

Будьте осторожны , когда chownи chmod-ную все под ~/.config, там может быть что - то там чувствительны.

Крейг Хикс
источник
1

Пожалуйста, не используйте предоставленную chownкоманду в сообщении об ошибке. Путь ~/.configиспользуется многими приложениями и является стандартным путем для хранения информации о конфигурации. Не рекомендуется менять права группы там. Лучше всего только изменить нужный путь, как:

sudo chown -R $USER ~/.config/configstore

Особый случай: Докер

Распространенным случаем, чтобы получить эту ошибку, является использование чего-то вроде Docker (особенно путем монтирования собственного дома). Рассмотрите возможность установки переменных среды, таких как NPM_CONFIG_CACHEи XDG_CONFIG_HOME. Первый устанавливает ваш путь к кешу, а последний - ваш путь к configstore. Я бы не использовал эту .configпапку в домашнем каталоге, чтобы избежать проблем с владением файлами. Но использование кэша помогает таким службам, как NPM, экономить полосу пропускания. Старайтесь избегать чрезмерных загрузок при каждой сборке и используйте что-то вроде этого (но убедитесь, что у цели вроде /tmpдостаточно места на диске):

test -d /tmp/$USER/cache || mkdir -p /tmp/$USER/cache
docker run \
  -v /tmp/$USER:/tmp/$USER \
  -e "NPM_CONFIG_CACHE=/tmp/$USER/cache/npm" \
  -e "XDG_CONFIG_HOME=/tmp/$USER/cache/" \
  ...
Trendfischer
источник
0

Ну, первое, что мы можем сделать, чтобы решить эту проблему, это

  1. Убедитесь, что вы отметили опцию в настройках папки, чтобы увидеть скрытые файлы.
  2. Щелкните правой кнопкой мыши файл .config и выберите свойства, а затем перейдите на вкладку прав доступа.
  3. В папке разрешений и прав доступа к файлам для группы | владелец | другие отмечают опции чтения, записи и выполнения.
  4. В нижней части нажмите Применить разрешения для вложенных файлов.
  5. Теперь попробуйте перезапустить те же самые команды npm, где вы видели эти сообщения, и теперь это должно исчезнуть навсегда.

Если это помогло, вы знаете, что делать.

Примечание. Эту же процедуру можно применить и для одного хранилища конфигурации в папке .config.

Раджу
источник