[IMPROVED] Instalación de nodejs (npm)
This commit is contained in:
parent
db0102f9c7
commit
8288eb062f
3 changed files with 181 additions and 1 deletions
BIN
bin/.vpn_users.sh.swp
Normal file
BIN
bin/.vpn_users.sh.swp
Normal file
Binary file not shown.
|
@ -38,7 +38,8 @@ head_nobuilded="No se pudo completar la construcción del contenedor"
|
|||
head_builded="Construcción del contenedor completada!"
|
||||
head_zip="Utilitario zip no ha sido instalado!"
|
||||
head_key_end="999999END"
|
||||
|
||||
head_superuser="Super Usuario"
|
||||
head_canceled="Cancelado"
|
||||
head_container="Generando contenedor"
|
||||
label_email="Correo Electrónico:"
|
||||
|
||||
|
@ -63,3 +64,26 @@ git_add_files="Archivos base del proyecto agregados!"
|
|||
git_first_commited="[INIT] Proyecto inicializado"
|
||||
git_end_commited="Todos los cambios al repositorio nuevo han sido aplicados!"
|
||||
git_new_project_pushed="Proyecto ha sido creado/actualizado en repositorio remoto"
|
||||
|
||||
npm_001="El programa 'dialog' no está instalado. Por favor, instálalo e inténtalo nuevamente."
|
||||
npm_002="No eres super usuario. Ingresa la contraseña para escalamiento:"
|
||||
npm_003="Contraseña incorrecta o error al escalar privilegios."
|
||||
npm_004="Este script instalará Node.js y npm de forma interactiva. Soporta Arch Linux, Debian/Ubuntu, Fedora, FreeBSD y macOS (Homebrew)."
|
||||
npm_005_1="Se detectó el siguiente sistema:"
|
||||
npm_005_2="¿Desea continuar con la instalación?"
|
||||
npm_006="No se encontró un gestor de paquetes soportado."
|
||||
npm_007="Sistema operativo no soportado:"
|
||||
npm_008="Instalación cancelada por el usuario."
|
||||
npm_009="Actualizando repositorios..."
|
||||
npm_010="Repositorios actualizados."
|
||||
npm_011="No se requiere actualización."
|
||||
npm_012="Iniciando instalación de Node.js y npm..."
|
||||
npm_013="Instalación en progreso..."
|
||||
npm_014="Instalación completada."
|
||||
npm_015="Instalación completada. Versiones instaladas: Node.js: [versión] npm: [versión]"
|
||||
npm_016="Instalador de Node.js y npm"
|
||||
npm_017="Confirmar Sistema"
|
||||
npm_018="Instalación"
|
||||
npm_019="Versiones instaladas:"
|
||||
npm_020="No encontrado"
|
||||
npm_021="Instalación Finalizada"
|
||||
|
|
156
bin/npm_install.sh
Executable file
156
bin/npm_install.sh
Executable file
|
@ -0,0 +1,156 @@
|
|||
#!/bin/bash
|
||||
# npm_install.sh
|
||||
# Script interactivo para instalar Node.js y npm en múltiples sistemas operativos
|
||||
# Soporta: Arch Linux, Debian/Ubuntu, Fedora, FreeBSD y macOS (Homebrew)
|
||||
# Requiere: dialog
|
||||
# Modified: 2025/03/09 10:27:00
|
||||
# Generado con inteligencia artificial
|
||||
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
|
||||
# o (a su elección) cualquier versión posterior.
|
||||
#
|
||||
# Este programa se distribuye con la esperanza de que sea útil,
|
||||
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
|
||||
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
|
||||
# Licencia Pública Affero General de GNU para obtener más detalles.
|
||||
#
|
||||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
BIN_CFGS=bin/config
|
||||
VERSION=1.0.1
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# LOAD BASE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||
#baselib_test
|
||||
|
||||
# Load head messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
|
||||
title="${head_000} ${head_002}"
|
||||
|
||||
# Función para limpiar la pantalla y salir
|
||||
function finish() {
|
||||
clear
|
||||
exit
|
||||
}
|
||||
|
||||
# Verificar que dialog esté instalado
|
||||
if ! command -v dialog &> /dev/null; then
|
||||
echo "${npm_001}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Si no se ejecuta como root, solicitar contraseña para escalamiento vía dialog
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
SUDO_PASS=$(dialog --backtitle "${title}" --title "${head_superuser}" --insecure --passwordbox "${npm_002}" 10 60 3>&1 1>&2 2>&3 3>&-)
|
||||
# Probar la contraseña
|
||||
echo "$SUDO_PASS" | sudo -S true &> /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
dialog --backtitle "${title}" --title "${head_error}" --msgbox "${npm_003}" 8 50
|
||||
finish
|
||||
fi
|
||||
fi
|
||||
|
||||
# Función para ejecutar comandos con sudo si es necesario
|
||||
run_cmd() {
|
||||
if [ "$EUID" -eq 0 ]; then
|
||||
"$@"
|
||||
else
|
||||
echo "$SUDO_PASS" | sudo -S "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
# Mensaje de bienvenida
|
||||
dialog --backtitle "${title}" --title "${npm_016}" \
|
||||
--msgbox "${npm_004}" 10 60
|
||||
|
||||
# Detectar sistema operativo
|
||||
OS_TYPE=$(uname -s)
|
||||
DISTRO=""
|
||||
UPDATE_CMD=()
|
||||
INSTALL_CMD=()
|
||||
|
||||
if [[ "$OS_TYPE" == "Linux" ]]; then
|
||||
if command -v apt-get &> /dev/null; then
|
||||
DISTRO="Debian/Ubuntu (apt-get)"
|
||||
UPDATE_CMD=("apt-get" "update")
|
||||
INSTALL_CMD=("apt-get" "install" "-y" "nodejs" "npm")
|
||||
elif command -v pacman &> /dev/null; then
|
||||
DISTRO="Arch Linux (pacman)"
|
||||
UPDATE_CMD=("pacman" "-Sy")
|
||||
INSTALL_CMD=("pacman" "-S" "--noconfirm" "nodejs" "npm")
|
||||
elif command -v dnf &> /dev/null; then
|
||||
DISTRO="Fedora (dnf)"
|
||||
# dnf actualiza automáticamente en muchos casos
|
||||
INSTALL_CMD=("dnf" "install" "-y" "nodejs" "npm")
|
||||
elif command -v yum &> /dev/null; then
|
||||
DISTRO="Fedora/CentOS (yum)"
|
||||
INSTALL_CMD=("yum" "install" "-y" "nodejs" "npm")
|
||||
else
|
||||
dialog --backtitle "${title}" --title "${head_error}" --msgbox "${npm_006}" 8 50
|
||||
finish
|
||||
fi
|
||||
elif [[ "$OS_TYPE" == "FreeBSD" ]]; then
|
||||
DISTRO="FreeBSD (pkg)"
|
||||
INSTALL_CMD=("pkg" "install" "-y" "node" "npm")
|
||||
elif [[ "$OS_TYPE" == "Darwin" ]]; then
|
||||
DISTRO="macOS (Homebrew)"
|
||||
INSTALL_CMD=("brew" "install" "node")
|
||||
else
|
||||
dialog --backtitle "${title}" --title "${head_error}" --msgbox "4{npm_007} ${OS_TYPE}" 8 50
|
||||
finish
|
||||
fi
|
||||
|
||||
# Confirmación del sistema detectado
|
||||
dialog --backtitle "${title}" --title "${npm_017}" \
|
||||
--yesno "${npm_005_1}\n\n ${DISTRO}\n\n" 10 60
|
||||
if [ $? -ne 0 ]; then
|
||||
dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 8 50
|
||||
finish
|
||||
fi
|
||||
|
||||
# Mostrar un progress bar para indicar el avance de la instalación
|
||||
(
|
||||
# Inicializar progreso
|
||||
echo 0; sleep 1
|
||||
|
||||
# Actualizar repositorios si corresponde
|
||||
if [ ${#UPDATE_CMD[@]} -gt 0 ]; then
|
||||
echo 5; echo "# ${npm_009}"
|
||||
run_cmd "${UPDATE_CMD[@]}"
|
||||
echo 25; echo "# ${npm_010}"
|
||||
sleep 1
|
||||
else
|
||||
echo 25; echo "# ${npm_11}"
|
||||
fi
|
||||
|
||||
# Instalar Node.js y npm
|
||||
echo 40; echo "# ${npm_12}"
|
||||
run_cmd "${INSTALL_CMD[@]}"
|
||||
echo 80; echo "# ${npm_013}"
|
||||
sleep 1
|
||||
|
||||
# Finalizar
|
||||
echo 100; echo "# ${npm_014}"
|
||||
sleep 1
|
||||
) | dialog --backtitle "${title}" --title "i${npm_018}" --gauge "${npm_016}" 10 70 0
|
||||
|
||||
# Verificar versiones instaladas (algunos sistemas usan "node" en lugar de "nodejs")
|
||||
node_ver=$(nodejs --version 2>/dev/null || node --version 2>/dev/null)
|
||||
npm_ver=$(npm --version 2>/dev/null)
|
||||
|
||||
result_message="${npm_017}\n\n${npm_019}\nNode.js: ${node_ver:-${npm_020}}\nnpm: ${npm_ver:-${npm_020}}"
|
||||
dialog --backtitle "${title}" --title "${npm_021}" --msgbox "$result_message" 10 60
|
||||
|
||||
finish
|
||||
|
Loading…
Reference in a new issue