2012-07-02 50 views
22

Tôi cần cài đặt ứng dụng npm "toàn cầu" trên máy chủ ngoại tuyến.Cách cài đặt npm -g trên máy chủ ngoại tuyến

Nó rất dễ dàng để cài đặt một ứng dụng bình thường:

npm install 

và sau đó đóng gói lên các tập tin kết quả. Hoặc thủ công hoặc sử dụng gói npm.

Tuy nhiên, làm cách nào tôi có thể cài đặt ứng dụng toàn cầu (có tập lệnh cài đặt một số loại) chẳng hạn như mãi mãi không có Internet?

npm install -g forever 

Trả lời

18

thử npmbox, nó là tên mới của npmzip cho phép bạn cài đặt gói npm ngoại tuyến theo một tệp

+0

Tôi đã cài đặt npmbox pn máy chủ nhưng cách cài đặt pm2 bằng cách sử dụng? –

+0

Xin lỗi nhưng đã không làm việc cho tôi. Đã dành khá nhiều thời gian cố gắng cho đến khi bị bỏ rơi. Đã tìm thấy cách thức và được đăng bên dưới. –

17

Bạn có thể cài đặt nội dung từ tệp tarball, hãy xem npm documentation. Bạn có thể tìm thấy URL của tarball mãi mãi với npm view forever dist.tarball và tải xuống. Hãy thử một cái gì đó như thế này:

curl -so forever.tar.gz `npm view forever dist.tarball 2> /dev/null` 
npm install ./forever.tar.gz -g 

Nhưng bạn có thể phải làm điều này cho tất cả các phụ thuộc là tốt. Có thể có một cách tốt hơn nhưng đây là những gì tôi đã tìm thấy trong tìm kiếm của tôi.

+1

Cảm ơn câu trả lời của bạn. Tuy nhiên, nó ngay lập tức cố gắng để kéo phụ thuộc từ Internet. * npm http GET https://registry.npmjs.org/broadway* –

+0

Đương nhiên, trước tiên bạn cần phải cài đặt bất kỳ phụ thuộc nào. – Kato

+0

Bạn đúng Kato. Nhưng bằng cách nào? Có rất nhiều phụ thuộc cho ** mãi mãi **. –

3

Hãy thử npmzip

npm install -g npmzip 
npmzip <package> 

Bạn sẽ nhận được tarball trong thư mục hiện Điều này có thể được chuyển đến máy tính mục tiêu và:

npmunzip <tarball> 
+1

npm có thể chuyển tar.gz zip git svn theo mặc định [thủ công] (https://www.npmjs.org/doc/files/package.json.html#dependencies) – yellowsir

4

Tôi đã tạo offline-npm f hoặc nhận được tất cả các phụ thuộc được cài đặt một cách sạch sẽ. Đối với các mô-đun không sử dụng nút-gyp, mọi thứ sẽ hoạt động như mô tả.

Nếu bạn yêu cầu node-gyp (thường được cài đặt trực tuyến) hãy xem xét sao chép ~/.node-gyp sang máy ngoại tuyến đó.

1

Liệt kê các phụ thuộc trong bundledDependencies trong package.json của bạn và sau đó chạy npm pack để tạo tarball. Đưa nó qua máy khác và npm install <tarball> hoặc chỉ mở nó bằng tay.

https://github.com/npm/npm/issues/1349

1

Vâng .... sau một ngày cố gắng để làm cho nó hoạt động với sự tham khảo trên (npmbox hoặc offline-NPM) đã đưa ra một cái gì đó đơn giản hơn cách nhiều. Nhờ npmbox tôi phải nói. Ý tưởng là giữ bộ nhớ cache từ cá thể có quyền truy cập trực tuyến và sau đó sử dụng nó trong một ngoại tuyến.

Trong máy có internet:

1 - rõ ràng NPM cache: npm cache clear

2 - cài đặt gói, cho phép nói xyz của nó: npm install -g **package.x.y.z**

3 - bản sao bộ nhớ cache vào một thư mục. ..chúng ta hãy gọi nó là bất cứ điều gì (tôi giả sử NPM bộ nhớ cache nằm trong thư mục gốc, không hoàn toàn chắc chắn về điều đó): cp -R /.npm/* **/cache-whatever-folder**

Trong máy không có Internet:

4 - thực hiện việc này bộ nhớ cache bất cứ thư mục với Ví dụ không có internet và sau đó, bộ nhớ cache sạch và cài đặt với nó (tôi sẽ không chỉ ra làm thế nào để sao chép thư mục :)

npm cache clear

npm install --global --cache **/cache-whatever-folder** --optional --cache-min 99999999999 --shrinkwrap false **package.x.y.z**

Xong

2

INSTALL PM2 OFFLINE: -

Thử nghiệm trên Node-v6.10.3 và NPM-3.10.10 trên RHEL-7

Tới máy với internet kết nối: -

#npm install -g npmbox 
#npmbox npmbox 
#scp npmbox.npmbox [email protected]:. 

Tới máy mà không cần kết nối internet: -

#ssh [email protected] 
#tar --no-same-owner --no-same-permissions -xvzf npmbox.npmbox 
#npm install --global --cache ./.npmbox.cache --optional --cache-min 99999999999 --shrinkwrap false npmbox 

Đến máy có kết nối internet: -

#npm install pm2 -g 
#npmbox pm2 
#scp pm2.npmbox [email protected]:. 

Đến máy mà không cần kết nối internet: -

#npmunbox pm2.npmbox --global 
#pm2 ls 
Các vấn đề liên quan