kiểm tra cập nhật npm không thành công


14

tôi thực sự đã cố gắng cài đặt nodejs cùng với npm trên ubfox 17.04 của tôi. tôi đã tải xuống phiên bản linux từ nodejs.org và tạo liên kết mềm cho nút và nodejs. Khi kiểm tra phiên bản của nodejs, nó hiển thị phiên bản tôi đã cài đặt và tôi thấy ổn với nó.

bây giờ tôi đã cố gắng làm tương tự cho npm. tôi đã cố gắng tạo liên kết mềm cho npm.

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

tôi không biết liên kết tôi tạo ra có chính xác hay không. nhưng khi chạy npm -vlệnh tôi thấy phiên bản 5.0.3 là thứ tôi đang cố cài đặt. phiên bản được hiển thị nhưng ngay bên dưới nó tôi thấy một cái gì đó như thế này.

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 

Bạn sudo chown -R $USER:$(id -gn $USER) /home/sagar/.configđã tư vấn?
George Udosen

Nếu bạn đang sử dụng Docker, hãy kiểm tra kỹ xem hệ thống tập tin có ở chế độ chỉ đọc không. Nó phải được ghi.
Toàn cảnh

Câu trả lời:


14

Phiên bản npm của tôi là 5.0.3 và tôi gặp vấn đề tương tự khi tôi sử dụng bất kỳ lệnh npm nào:

thông báo lỗi npm

Lệnh đang hoạt động tốt nhưng mã này tiếp tục hiển thị mà không có lý do rõ ràng. Tôi đã cập nhật từ 5.0.3 đến 5.2.0 bằng các lệnh sau:

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

npm install -g npmhoặc npm i -g npm.

Bây giờ npm đang hoạt động tốt.


Đã làm cho tôi. Mặc dù, tôi đã phải cập nhật npmvới quyền root sudo npm i -g npm. Cập nhật npm đến 6.0.1
Denialos

3

Chính xác vấn đề tương tự đối với tôi, nhưng dường như không liên quan đến phiên bản (Tôi đang sử dụng npm 5.5.1). Sửa các quyền trên ~/.configđã tạo ra mánh khóe cho tôi:

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

Tôi đoán điều này có liên quan đến một số vấn đề chủ sở hữu với ~/.config/configstore/update-notifier-npm.json.


1

Tôi đã thay đổi chủ sở hữu của

~/configstore

~/configstore/update-notifier-npm.json

đến $ USER: $ USER.

Tôi đoán là chạy npmvới sudo đã tạo tập tin đó. Trên hệ thống của tôi ít nhất chúng tôi tìm thấy điều này:

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

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

Vì vậy, nếu sudo npmđược mã hóa để tạo, ~/configstore/update-notifier-npm.jsonnó sẽ thực hiện nó trong thư mục chính của người dùng thông thường. Điều đó tạo ra một vấn đề khi sau này chạy npmmà không sudomuốn đọc và có thể viết ~/configstore/update-notifier-npm.json. Vì một số lý do, các quyền là 600 trên cả hai.

Hãy thận trọng khi chownvà - chmodmọi thứ bên dưới ~/.config, có thể có một cái gì đó nhạy cảm ở đó.


1

Xin vui lòng, không sử dụng chownlệnh được cung cấp trong thông báo lỗi. Đường dẫn ~/.configđược sử dụng bởi nhiều ứng dụng và là đường dẫn chuẩn để lưu trữ thông tin cấu hình. Không nên thay đổi quyền nhóm ở đó. Tốt hơn chỉ thay đổi đường dẫn cần thiết như:

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

Trường hợp đặc biệt: Docker

Một trường hợp phổ biến để nhận lỗi này là sử dụng một cái gì đó như Docker (đặc biệt là bằng cách gắn nhà riêng của bạn). Xem xét việc thiết lập các biến môi trường như NPM_CONFIG_CACHEXDG_CONFIG_HOME. Cái đầu tiên đặt đường dẫn bộ đệm của bạn và cái cuối cùng là thiết lập đường dẫn configstore của bạn. Tôi sẽ không sử dụng .configthư mục trong thư mục chính để tránh các vấn đề về quyền sở hữu tập tin. Nhưng sử dụng bộ đệm giúp các dịch vụ như NPM tiết kiệm băng thông. Cố gắng tránh tải xuống quá mức trên mỗi bản dựng và sử dụng cái gì đó như thế này (nhưng kiểm tra xem mục tiêu như /tmpcó đủ dung lượng đĩa không):

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

Chà, điều đầu tiên chúng ta có thể làm để giải quyết vấn đề này là

  1. Hãy chắc chắn rằng bạn đã đánh dấu một tùy chọn trong cài đặt thư mục để xem các tập tin ẩn.
  2. Nhấp chuột phải vào tệp .config và chọn thuộc tính, sau đó nhấp vào tab quyền.
  3. Trong quyền thư mục và quyền tệp cho nhóm | chủ sở hữu | những người khác đánh dấu các tùy chọn đọc, viết và thực hiện.
  4. Ở dưới cùng, nhấp vào Áp dụng quyền cho các tệp đính kèm.
  5. Bây giờ hãy thử chạy lại các lệnh npm tương tự nơi bạn đang xem các tin nhắn đó và bây giờ nó sẽ biến mất mãi mãi.

Nếu điều này giúp bạn biết phải làm gì.

Lưu ý: Quy trình tương tự cũng có thể được áp dụng cho configstore một mình trong thư mục .config.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.