npm 업데이트 확인 실패


14

실제로 우분투 17.04에 npm과 함께 nodejs를 설치하려고했습니다. nodejs.org에서 Linux 버전을 다운로드하고 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조언 한대로 했습니까 ?
George Udosen 2016 년

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이 제대로 작동합니다.


나를 위해 일했다. 그러나 npm로 루트 로 업데이트해야했습니다 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모든 것을 아래를 -ing하는 ~/.config민감한 무언가가있을 수 있습니다.


1

제발 제공된 사용하지 않는 chown명령을 오류 메시지에. 경로 ~/.config는 많은 응용 프로그램에서 사용되며 구성 정보를 저장하기위한 표준 경로입니다. 여기에서 그룹 권한을 변경하지 않는 것이 좋습니다. 다음과 같이 필요한 경로 만 변경하는 것이 좋습니다.

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

특수한 경우 : 도커

이 오류가 발생하는 일반적인 경우는 Docker와 같은 것을 사용하는 것입니다 (특히 자신의 집을 설치하는 경우). 같은 환경 변수 설정을 고려 NPM_CONFIG_CACHE하고 XDG_CONFIG_HOME. 첫 번째는 캐시 경로를 설정하고 마지막은 캐시 저장소 경로를 설정합니다. .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/" \
  ...

0

이 문제를 해결하기 위해 가장 먼저 할 수있는 일은

  1. 숨겨진 파일을 보려면 폴더 설정에서 옵션을 선택했는지 확인하십시오.
  2. .config 파일을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택한 다음 권한 탭을 클릭하십시오.
  3. 그룹의 폴더 권한 및 파일 권한 | 소유자 | 다른 사람들은 읽기, 쓰기 및 실행 옵션을 선택합니다.
  4. 하단에서 동봉 된 파일에 권한 적용을 클릭하십시오.
  5. 이제 해당 메시지를보고있는 동일한 npm 명령을 다시 실행 해보십시오. 이제 영원히 사라져야합니다.

이것이 도움이된다면 어떻게해야하는지 아는 것입니다.

참고 : .config 폴더 내에서만 configstore에 동일한 절차를 적용 할 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.