Kontrola aktualizacji npm nie powiodła się

14

tak naprawdę próbowałem zainstalować nodejs wraz z npm na moim Ubuntu 17.04. pobrałem wersję linux z nodejs.org i utworzyłem miękkie łącze dla node i nodejs. po sprawdzeniu wersji nodejs pokazuje wersję, którą zainstalowałem i nic mi nie jest.

teraz próbowałem zrobić to samo dla npm. próbowałem utworzyć miękki link dla npm.

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

nie wiem, czy link, który utworzyłem, jest poprawny, czy nie. ale po uruchomieniu npm -vpolecenia widzę wersję 5.0.3, którą próbuję zainstalować. wersja jest pokazana, ale tuż pod nią widzę coś takiego.

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 
Sagar Limbu
źródło
Czy sudo chown -R $USER:$(id -gn $USER) /home/sagar/.configzgodnie z zaleceniami?
George Udosen,
Jeśli używasz Dockera, sprawdź dwukrotnie, czy system plików jest tylko do odczytu. To musi być zapisywalne.
Константин Ван

Odpowiedzi:

14

Moja wersja npm to 5.0.3 i mam ten sam problem, gdy używam dowolnego polecenia npm:

komunikat o błędzie npm

Polecenie działa dobrze, ale ten kod wyświetla się bez wyraźnego powodu. Zaktualizowałem z 5.0.3 do 5.2.0 za pomocą następujących poleceń:

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

npm install -g npmlub npm i -g npm.

Teraz npm działa dobrze.

Arpit
źródło
Pracował dla mnie. Chociaż musiałem aktualizować npmjako root sudo npm i -g npm. Zaktualizowano npm do 6.0.1
Denialos
3

Dokładnie ten sam problem dla mnie, ale nie wydaje się związany z wersją (używam npm 5.5.1). Naprawienie praw ~/.configstało się dla mnie sztuczką:

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

Myślę, że jest to związane z jakimś problemem właściciela ~/.config/configstore/update-notifier-npm.json.

Anto
źródło
1

Zmieniłem właściciela

~/configstore

i

~/configstore/update-notifier-npm.json

do USER $: USER $.

Domyślam się, że uruchomione npmz sudo utworzyło ten plik. W moim systemie przynajmniej znajdujemy to:

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

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

Więc jeśli sudo npmjest zakodowany do utworzenia ~/configstore/update-notifier-npm.json, zrobi to zwykły katalog domowy użytkownika. Stwarza to problem podczas późniejszego uruchamiania, npmbez sudoktórego również chce czytać i być może pisać~/configstore/update-notifier-npm.json . Z jakiegoś powodu uprawnienia wynoszą 600 w obu przypadkach.

Bądź ostrożny, kiedy chowni chmod-ing wszystko pod ~/.config, że może być coś nie wrażliwy.

Craig Hicks
źródło
1

Proszę nie używać podanego chownpolecenia w komunikacie o błędzie. Ścieżka ~/.configjest używana przez wiele aplikacji i jest standardową ścieżką do przechowywania informacji o konfiguracji. Nie zaleca się zmiany tam uprawnień grupy. Lepiej zmień tylko wymaganą ścieżkę, np .:

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

Przypadek specjalny: doker

Częstym przypadkiem uzyskania tego błędu jest użycie czegoś takiego jak Docker (szczególnie przy montażu własnego domu). Rozważ ustawienie zmiennych środowiskowych, takich jak NPM_CONFIG_CACHEi XDG_CONFIG_HOME. Pierwszy ustawia ścieżkę pamięci podręcznej, a ostatni ustawia ścieżkę do pliku configstore. Nie używałbym tego .configfolderu w katalogu domowym, aby uniknąć problemów z własnością pliku. Ale korzystanie z pamięci podręcznej pomaga usługom takim jak NPM oszczędzać przepustowość. Staraj się unikać nadmiernego pobierania przy każdej kompilacji i użyj czegoś takiego (ale sprawdź, czy obiekt docelowy /tmpma wystarczającą ilość miejsca na dysku):

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
źródło
0

Cóż, pierwszą rzeczą, którą możemy zrobić, aby rozwiązać ten problem, jest

  1. Upewnij się, że zaznaczyłeś opcję w ustawieniach folderów, aby zobaczyć ukryte pliki.
  2. Kliknij prawym przyciskiem myszy plik .config i wybierz właściwości, a następnie kliknij kartę uprawnień.
  3. W uprawnieniach do folderów i uprawnieniach do plików dla grupy | właściciel | inni zaznaczają opcje odczytu, zapisu i wykonania.
  4. Na dole kliknij Zastosuj uprawnienia do załączonych plików.
  5. Teraz spróbuj ponownie uruchomić te same polecenia npm, w których widziałeś te wiadomości, a teraz powinno zniknąć na zawsze.

Jeśli to pomogło Ci wiedzieć, co robić.

Uwaga: Tę samą procedurę można również zastosować do samego configstore w folderze .config.

Raju
źródło