los - comandos cluster linux
Cómo instalar archivos de distribución binaria de nodo en Linux (13)
En Ubuntu hay un archivo .bashrc
que establece la ruta a los binarios.
Por defecto, hay una ruta establecida para bin
en el directorio de inicio. Quizás pueda crear un directorio bin en su directorio de inicio y mover los binarios allí. Reinicie su sistema e intente ejecutar el node
comando
Mi servidor de producción (Centos 5.9) no compilará nodejs, posiblemente porque gcc solo es 4.1.2 (se recomienda 4.2 o superior), así que estoy tratando de instalar los binarios.
$ wget http://nodejs.org/dist/v0.10.22/node-v0.10.22-linux-x86.tar.gz
$ tar -zxvf node-v0.10.22-linux-x86.tar.gz
$ cd node-v0.10.22-linux-x86
$ sudo cp bin/* /usr/local/bin
$ sudo cp -R lib/* /usr/local/lib
$ sudo cp -R share/* /usr/local/share
Y ahora para la prueba:
$ node -v # => v0.10.22
$ man node # looks fine
$ npm -v # UH OH, PROBLEM - Cannot find module ''npmlog''
Ahora (teniendo en cuenta que soy un completo principiante en el nodo) hice algunas búsquedas y descubrí que hay una variable de entorno llamada NODE_PATH, así que intenté:
$ export NODE_PATH=/usr/local/lib/node_modules
$ npm -v # SAME PROBLEM - Cannot find module ''npmlog''
Entonces, descubrí dónde vive npmlog e intenté modificar NODE_PATH en consecuencia:
$ find /usr/local/lib -name npmlog # => /usr/local/lib/node_modules/npm/node_modules/npmlog
$ export NODE_PATH=/usr/local/lib/node_modules/npm/node_modules
$ npm -v # DIFFERENT PROBLEM - Can''t find ''../lib/npm.js''
En esta etapa, después de una búsqueda en Google más inútil, decidí que estaba en mi profundidad y decidí pedir ayuda. ¿Alguien puede decirme qué estoy haciendo mal?
En la página man de cp
en Mac OS X:
Los enlaces simbólicos siempre se siguen a menos que se establezca el distintivo -R, en cuyo caso los enlaces simbólicos no se siguen de forma predeterminada.
Cuando ejecuta sudo cp bin/* /usr/local/bin
, se sigue el enlace simbólico bin/npm
.
En realidad, bin/npm
está vinculado a ../lib/node_modules/npm/bin/npm-cli.js
, por lo que cp
copiará npm-cli.js
a /usr/local/bin
. Es por eso que recibe un error.
Es mucho más rápido hacer una reinstalación NPM limpia que eliminará los enlaces "rotos":
wget https://npmjs.org/install.sh
chmod +x install.sh
sudo ./install.sh
Entonces le pedirá que elimine el enlace de NPM anterior
Me enfrenté al mismo problema. Entonces, he enlazado el nodo y npm desde ./bin/
a /usr/local/bin
Puede usar GNU stow para crear enlaces simbólicos de esos binarios en / usr / local correctamente con un comando. Stow también le permite eliminar fácilmente Node js de / usr / local en un momento posterior e intercambiar varias versiones de Node js.
$ # first, install stow
$ mkdir /usr/local/stow # if it doesn''t exist
$ # then, place software binary package in /usr/local/stow
$ cd /usr/local/stow
$ stow <package_name> # install / add sym links
$ source $HOME/.bash_profile # reload your environment
$ # node -v and npm -v should now work
$ stow -D <package_name> # uninstall / remove sym links
Estos pasos me funcionaron con node-v0.10.17-linux-x64.
Si alguien está interesado en usar Docker, en el Dockerfile,
ENV NODE_VERSION 8.10.0
RUN wget https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz
RUN tar -xJvf node-v$NODE_VERSION-linux-x64.tar.xz -C /usr/local/
ENV NODEJS_HOME /usr/local/node-v$NODE_VERSION-linux-x64
ENV PATH $NODEJS_HOME/bin:$PATH
RUN node --version
RUN npm --version
Tiendo a usar la nave para instalar los binarios. Use wget para descargar el archivo nave.sh y luego utilícelo para instalar el nodo. Nave también es bueno tenerla en caso de que una de sus aplicaciones de producción requiera una versión de nodo diferente a la que está instalada globalmente.
$ wget https://raw.github.com/isaacs/nave/master/nave.sh
$ sudo bash nave.sh usemain 0.10.22
Tuve el mismo problema reportado aquí. Se /usr/local/bin/npm
eliminando /usr/local/bin/npm
y reemplazándolo con un enlace simbólico a /usr/local/lib/node_modules/npm/bin/npm-cli.js
$ ls -l /usr/local/bin/
node
npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
$ npm -v
1.3.17
Tuve el mismo problema y pude resolverlo creando enlaces simbólicos en lugar de copiar los binarios.
$ cd /usr/local/src
$ wget http://nodejs.org/dist/v0.10.24/node-v0.10.24-linux-x64.tar.gz
$ tar -zxvf node-v0.10.24-linux-x64.tar.gz
$ cd node-v0.10.24-linux-x64
$ sudo cp -R lib/* /usr/local/lib
$ sudo cp -R share/* /usr/local/share
$ ln -s /usr/local/src/node-v0.10.24-linux-x64/bin/node /usr/local/bin/node
$ ln -s /usr/local/src/node-v0.10.24-linux-x64/bin/npm /usr/local/bin/npm
$ node -v
v0.10.24
$ npm -v
1.3.21
Tuve un problema así, pero con iojs. Sin embargo, debe ser el mismo procedimiento:
(Suponiendo que tenga un archivo que coincida con node-v*-linux-x64.tar.gz
en su directorio actual):
# In case of iojs you need to replace the occurrences of ''node'' with ''iojs''
# Extract the downloaded archive with the linux-x64 version of node
tar zxf node-v*-linux-x64.tar.gz
# Move the extracted folder (./node-v*-linux-x64/) to /opt/
mv ./node-v*-linux-x64/ /opt/
Para que los archivos binarios estén disponibles en su shell, cree algunos enlaces dentro del directorio /usr/bin/
:
# Create a softlink to node in /usr/bin/
ln -s /opt/node-v*-linux-x64/bin/node /usr/bin/node
# Create a softlink to npm in /usr/bin/
ln -s /opt/node-v*-linux-x64/bin/npm /usr/bin/npm
# Create a softlink to iojs in /usr/bin (this step can be omitted if you''re using node)
ln -s /opt/node-v*-linux-x64/bin/iojs /usr/bin/iojs
Aviso: si desea acceder al cli de algunos módulos de nodo instalados globalmente (por ejemplo, typescript
, typescript
o coffee-script
), debe crear un enlace de software para cada uno de esos ejecutables en el directorio /usr/bin/
.
Alternativamente, simplemente puede agregar el directorio bin de su directorio de instalación del nodo (por ejemplo, /opt/node-v*-linux-x64/
) a la PATH
entorno PATH
: (¡debe usar la ruta absoluta para esto!)
# create a new .sh script in /etc/profile.d which adds the directory to PATH
echo "export PATH=$PATH:/opt/node-v0.12.3-linux-x64/bin" > /etc/profile.d/node-npm.sh
Este cambio tendrá efecto después de cerrar sesión y volver a iniciarla.
Ambos métodos funcionaron para mí (uso una versión de Linux para Linux 14.04 / 15.04 con GNOME 3).
Yo tuve el mismo problema.
El problema es el npm excutable en / usr / local / bin.
La forma en que lo resolví fue:
sudo rm /usr/local/bin/npm
sudo ln -s "/usr/local/lib/node_modules/npm/bin/npm-cli.js" /usr/local/bin/npm
Usando Node Version Manager
Use un administrador de versiones de Node como nvm para manejar la instalación y la administración de versiones por usted. Después de instalar nvm
, simplemente puede instalar cualquier versión de Node, por ejemplo, nvm install 8
.
Pero si solo desea instalar el binario usted mismo, vea a continuación:
Utilizando apt-get
En casos especiales donde necesita una instalación de Nodo para todo el sistema, puede usar apt-get:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
El fragmento anterior instalará el último Nodo 8.
Instalar el binario manualmente
Para instalar el binario manualmente, todo lo que necesita hacer es descargar el binario y crear un montón de enlaces simbólicos. Ejecute los comandos debajo de uno después del otro, y debería hacer el trabajo. También he escrito un script de shell que lo hace por usted si eso es más fácil (vea la parte inferior de la respuesta). Espero que ayude.
Asegúrese de usar el enlace de descarga correcto para la arquitectura de su sistema operativo (es decir, 32 bits o 64 bits) para wget en la segunda línea.
ME=$(whoami) ; sudo chown -R $ME /usr/local && cd /usr/local/bin #adding yourself to the group to access /usr/local/bin
mkdir _node && cd $_ && wget https://nodejs.org/dist/v8.11.4/node-v8.11.4-linux-x64.tar.xz -O - | tar zxf - --strip-components=1
ln -s "/usr/local/bin/_node/bin/node" .. # Making the symbolic link to node
ln -s "/usr/local/bin/_node/lib/node_modules/npm/bin/npm-cli.js" ../npm ## making the symbolic link to npm
Aquí hay un script de shell que descarga e instala todos los componentes. Si usa este script para instalar Node, puede usar el script de desinstalación para desinstalarlo.
Instalación del nodo
#! /bin/bash
# run it by: bash install-node.sh
read -p " which version of Node do you need to install: for example 8.11.4 (or any other valid version): " VERSIONNAME
read -p " Are you using a 32-bit or 64-bit operating system ? Enter 64 or 32: " ARCHVALUE
if [[ $ARCHVALUE = 32 ]]
then
printf "user put in 32 /n"
ARCHVALUE=86
URL=https://nodejs.org/dist/v${VERSIONNAME}/node-v${VERSIONNAME}-linux-x${ARCHVALUE}.tar.gz
elif [[ $ARCHVALUE = 64 ]]
then
printf "user put in 64 /n"
ARCHVALUE=64
URL=https://nodejs.org/dist/v${VERSIONNAME}/node-v${VERSIONNAME}-linux-x${ARCHVALUE}.tar.gz
else
printf "invalid input expted either 32 or 64 as input, quitting ... /n"
exit
fi
# setting up the folders and the the symbolic links
printf $URL"/n"
ME=$(whoami) ; sudo chown -R $ME /usr/local && cd /usr/local/bin #adding yourself to the group to access /usr/local/bin
mkdir _node && cd $_ && wget $URL -O - | tar zxf - --strip-components=1 # downloads and unzips the content to _node
cp -r ./lib/node_modules/ /usr/local/lib/ # copy the node modules folder to the /lib/ folder
cp -r ./include/node /usr/local/include/ # copy the /include/node folder to /usr/local/include folder
mkdir /usr/local/man/man1 # create the man folder
cp ./share/man/man1/node.1 /usr/local/man/man1/ # copy the man file
cp bin/node /usr/local/bin/ # copy node to the bin folder
ln -s "/usr/local/lib/node_modules/npm/bin/npm-cli.js" ../npm ## making the symbolic link to npm
# print the version of node and npm
node -v
npm -v
Desinstalar el nodo
#! /bin/bash
# run it by: ./uninstall-node.sh
sudo rm -rf /usr/local/bin/npm
sudo rm -rf /usr/local/bin/node
sudo rm -rf /usr/local/lib/node_modules/
sudo rm -rf /usr/local/include/node/
sudo rm -rf /usr/local/share/man/man1/node.1
sudo rm -rf /usr/local/bin/_node/
wget <node archive url from nodejs.org>
cd /usr/local
sudo tar --strip-components 1 -xf <path to node archive>
Puede ejecutar nodo y npm de inmediato.
Solía estar documentado en el archivo README dentro del archivo en versiones anteriores.