2013-02-20 33 views
5

Tôi có một thư mục nhà NFS gắn trên và đang cố gắng để thiết lập các gói toàn cầu qua NPM, ví dụ:vị trí thay thế cho thư mục .npm (để tránh nhà NFS gắn trên)

sudo npm install -g jshint 

này mang lại cho tôi một lỗi vì theo sudo tôi không thể tạo bất cứ điều gì trên máy chủ từ xa (cố gắng bên ngoài này của NPM)

npm ERR! Error: EACCES, open '/home/explunit/.npm/a02a2468-jshint.lock' 
npm ERR! { [Error: EACCES, open '/home/explunit/.npm/a02a2468-jshint.lock'] 
npm ERR! errno: 3, 
npm ERR! code: 'EACCES', 
npm ERR! path: '/home/explunit/.npm/a02a2468-jshint.lock' } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

tôi chắc chắn rằng ai đó sẽ đi cùng trong 2 phút và nói "không sử dụng sudo - một nhà phát triển thực sự sẽ hiểu cách thiết lập nút/npm mà không có nó! ", nhưng a) nó chưa bao giờ rõ ràng đối với tôi cách thiết kế này được thiết kế để hoạt động, cho rằng npm readme gợi ý sudo và b) trong trường hợp này tôi thực sự không muốn bất kỳ điều gì liên quan đến người dùng cụ thể của tôi (đó là máy chủ xây dựng)

Vì vậy, tôi đoán câu hỏi thực sự là cách làm npm bỏ qua thư mục chính của tôi và sử dụng một số vị trí khác cho .npm?

+0

Bạn có thể thay thế '.npm' trong thư mục chính bằng liên kết tượng trưng đến vị trí không phải là nfs có thể ghi được. –

Trả lời

7

Cố gắng thay đổi vị trí bộ nhớ cache với điều này.

npm config set cache /SOMEWHERE/ELSE 

/SOMEWHERE/ELSE phải ở đâu đó nơi người dùng đang chạy lệnh có thể viết.

+0

cảm ơn, nhưng có vẻ như điều này vẫn không giải quyết được trong kịch bản "sudo npm install -g some_package" vì sudo sẽ không xem xét cấu hình npm cục bộ của người dùng – explunit

+0

'sudo npm -g config get cache' vẫn mang lại cho tôi '~/.npm'. bộ nhớ cache chỉ ở đó để giảm thiểu những gì bạn cần tải xuống lại. Bạn đã thử nó và nó đã không giúp đỡ? –

+0

có, đã thử lệnh của bạn, sau đó là lệnh từ câu hỏi ban đầu của tôi ở trên và gặp lỗi tương tự. BAO GIỜ, có vẻ như có một - global có thể được đặt vào cuối lệnh của bạn mà sẽ làm cho nó áp dụng ngay cả với các thiết lập môi trường sudo. Một lệnh tương tự cũng cần thiết để đặt tmp ở nơi khác – explunit

Các vấn đề liên quan