Node.js
npm 使用 tarball 全域安裝一個包
根據npm docs,這應該可行;
npm install ./package.tgz
因此,我在全球範圍內嘗試從pm2 github repo 發布頁面下載的 pm2 tarfile ;
npm install -g ./pm2-3.2.2.tar.gz
但我明白了;
npm ERR! code ENOTFOUND npm ERR! errno ENOTFOUND npm ERR! network request to https://registry.npmjs.org/@pm2%2fagent failed, reason: getaddrinfo ENOTFOUND nb nb:443 npm ERR! network This is a problem related to network connectivity. npm ERR! network In most cases you are behind a proxy or have bad network settings. npm ERR! network npm ERR! network If you are behind a proxy, please make sure that the npm ERR! network 'proxy' config is set properly. See: 'npm help config' npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2019-01-29T08_16_17_112Z-debug.log
npm version: 5.6.0 node version: 9.4.0
它是一個錯誤嗎?
有沒有其他方法可以離線安裝 pm2(和任何其他)包?
我發現我還需要處理包的依賴關係。我在類似問題的這個答案中得到了解決方案;
好吧……經過一天嘗試使其與上述參考(npmbox 或離線-npm)一起工作後,想出了一些更簡單的方法。感謝 npmbox,我不得不說。這個想法是從具有線上訪問權限的實例中保留記憶體,然後在離線實例中使用它。
在有網際網路的機器上:
1 - 清除 npm 記憶體:npm 記憶體清除
2 - 安裝包,假設它的 xyz: npm install -g package.xyz
3 - 將記憶體複製到一個文件夾中……讓我們隨便稱呼它(我假設npm記憶體在根文件夾中,對此不確定): cp -R /.npm/* /cache-whatever-folder
在沒有網際網路的機器上:
4 - 將此記憶體文件夾帶到沒有網際網路的實例,然後清理記憶體並使用它安裝(我不會說明如何復製文件夾:)
npm 記憶體清除
npm install –global –cache /cache-whatever-folder –optional –cache-min 99999999999 –shrinkwrap false package.xyz
完畢