2012-07-02 49 views
22

Necesito instalar una aplicación npm "global" en un servidor fuera de línea.Cómo instalar npm -g en un servidor fuera de línea

Es fácil de instalar una aplicación normal:

npm install 

y luego empacar los archivos resultantes. Ya sea manualmente o usando el paquete npm.

Sin embargo, ¿cómo puedo instalar la aplicación global (que tiene un script de instalación de algún tipo) como forever sin Internet?

npm install -g forever 

Respuesta

18

tratar npmbox, es el nuevo nombre de npmzip que le permitirá instalar paquetes npm fuera de línea por un archivo

+0

Instalé npmbox pn en el servidor pero cómo instalarlo pm2 usando eso? –

+0

Lo siento pero no funcionó para mí. Pasé bastante tiempo intentando hasta que desistí. Encontré cómo y publicado a continuación. –

17

Puede instalar cosas desde un archivo típicamente, echa un vistazo a la npm documentation. Puede encontrar la URL del tarball por siempre con npm view forever dist.tarball y descargar eso. Pruebe algo como esto:

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

Pero puede que tenga que hacer esto para todas las dependencias también. Puede haber una manera mejor, pero esto es lo que encontré en mi búsqueda.

+1

Gracias por tu respuesta. Sin embargo, inmediatamente trata de atraer a las dependencias de Internet. * npm http GET https://registry.npmjs.org/broadway* –

+0

Naturalmente, primero deberá instalar cualquier dependencia. – Kato

+0

Estás en lo correcto Kato. ¿Pero cómo? Hay muchas dependencias para ** forever **. –

3

Trate npmzip

npm install -g npmzip 
npmzip <package> 

Usted recibirá el paquete de archivos en el directorio actual Esto puede ser movido a la máquina de destino y:

npmunzip <tarball> 
+1

npm puede manejar tar.gz zip git svn de forma predeterminada [manual] (https://www.npmjs.org/doc/files/package.json.html#dependencies) – yellowsir

4

Creé offline-npm f o obtener todas las dependencias instaladas de una manera limpia. Para los módulos sin el uso de node-gyp todo debería funcionar como se describe.

Si necesita node-gyp (que generalmente se instala en línea), considere copiar ~/.node-gyp en esa máquina fuera de línea.

1

Enumere las dependencias en bundledDependencies en su paquete.json, y luego ejecute npm pack para crear un tarball. Suéltalo a la otra máquina y npm install <tarball>, o simplemente agrégalo manualmente.

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

1

Bueno .... después de un día tratando de hacer que funcione con referencias anteriores (npmbox o fuera de línea-NPM) se le ocurrió algo mucho más simple. Gracias a npmbox tengo que decir. La idea es mantener el caché de la instancia que tiene acceso en línea y luego usarlo en el que está fuera de línea.

En máquina con internet:

1 - clara caché NPM: npm cache clear

2 - instalar el paquete, digamos su xyz: npm install -g **package.x.y.z**

3 - caché de copia en una carpeta. ..llamémoslo lo (supongo caché NPM se encuentra en la carpeta raíz, no es absolutamente seguro de eso): cp -R /.npm/* **/cache-whatever-folder**

En la máquina sin internet:

4 - aprovechar esta caché-lo-carpeta a la instancia sin internet y después de eso, caché limpia e instalar con él (no voy a indicar cómo copiar la carpeta :)

npm cache clear

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

Hecho

2

INSTALAR PM2 fuera de línea: -

probado en Nodo-v6.10.3 y NPM-3.10.10 en RHEL-7

Ir a máquina con internet conexión: -

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

Ir a máquina sin conexión a 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 

Ir a máquina con conexión a Internet: -

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

Ir a máquina sin conexión a Internet: -

#npmunbox pm2.npmbox --global 
#pm2 ls 
Cuestiones relacionadas