|
|
@@ -1,82 +1,116 @@
|
|
|
#!/bin/bash
|
|
|
|
|
|
-# Detener el script si ocurre algún error
|
|
|
+# Configuración para detener el script si hay errores graves
|
|
|
set -e
|
|
|
|
|
|
-echo "=========================================================="
|
|
|
-echo " Iniciando instalación de Python 2.7 en Ubuntu 24.04"
|
|
|
-echo " Basado en la guía de: repo.yosoyhendrix.com"
|
|
|
-echo "=========================================================="
|
|
|
+# Colores para los mensajes
|
|
|
+VERDE='\033[0;32m'
|
|
|
+ROJO='\033[0;31m'
|
|
|
+AMARILLO='\033[1;33m'
|
|
|
+NC='\033[0m' # No Color
|
|
|
|
|
|
-# 1. Verificar si se está ejecutando como root
|
|
|
+echo -e "${VERDE}==========================================================${NC}"
|
|
|
+echo -e "${VERDE} Instalador Automático de Python 2.7 (Ubuntu 24.04+)${NC}"
|
|
|
+echo -e "${VERDE}==========================================================${NC}"
|
|
|
+
|
|
|
+# --- FUNCIÓN 1: VERIFICAR ROOT ---
|
|
|
if [ "$EUID" -ne 0 ]; then
|
|
|
- echo "❌ Por favor, ejecuta este script como root (usando sudo)."
|
|
|
+ echo -e "${ROJO}❌ Error: Por favor, ejecuta este script como root (sudo).${NC}"
|
|
|
exit 1
|
|
|
fi
|
|
|
|
|
|
-# 2. Actualizar el sistema
|
|
|
-echo "--> Actualizando repositorios y paquetes del sistema..."
|
|
|
-apt update && apt upgrade -y
|
|
|
+# --- FUNCIÓN 2: VERIFICAR VERSIÓN DE UBUNTU ---
|
|
|
+echo -e "${AMARILLO}--> Verificando versión del sistema operativo...${NC}"
|
|
|
+
|
|
|
+# Obtener información del sistema
|
|
|
+if [ -f /etc/os-release ]; then
|
|
|
+ . /etc/os-release
|
|
|
+else
|
|
|
+ echo -e "${ROJO}❌ Error: No se pudo detectar el sistema operativo.${NC}"
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+# Verificar si es Ubuntu
|
|
|
+if [ "$ID" != "ubuntu" ]; then
|
|
|
+ echo -e "${ROJO}❌ Error: Este script está diseñado solo para Ubuntu.${NC}"
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+# Comparar versión (Lógica: Si VERSION_ID es menor a 24.04, falla)
|
|
|
+# Usamos 'sort -V' para comparar versiones numéricas correctamente
|
|
|
+MIN_VERSION="24.04"
|
|
|
+if [ "$(printf '%s\n' "$MIN_VERSION" "$VERSION_ID" | sort -V | head -n1)" != "$MIN_VERSION" ]; then
|
|
|
+ echo -e "${ROJO}❌ Error: Tu versión de Ubuntu es $VERSION_ID.${NC}"
|
|
|
+ echo -e "${ROJO} Se requiere Ubuntu $MIN_VERSION o superior para continuar.${NC}"
|
|
|
+ exit 1
|
|
|
+else
|
|
|
+ echo -e "${VERDE}✅ Sistema compatible detectado: Ubuntu $VERSION_ID${NC}"
|
|
|
+fi
|
|
|
+
|
|
|
+# --- FUNCIÓN 3: VERIFICAR SI PYTHON YA ESTÁ INSTALADO ---
|
|
|
+# Verificamos la ruta específica donde este script instala Python (/usr/local/python2.7)
|
|
|
+echo -e "${AMARILLO}--> Buscando instalaciones previas de Python 2.7...${NC}"
|
|
|
+
|
|
|
+PYTHON_BIN="/usr/local/python2.7/bin/python2.7"
|
|
|
+
|
|
|
+if [ -f "$PYTHON_BIN" ]; then
|
|
|
+ echo -e "${VERDE}✅ Python 2.7 ya se encuentra instalado en: $PYTHON_BIN${NC}"
|
|
|
+ EXISTING_VERSION=$($PYTHON_BIN -V 2>&1)
|
|
|
+ echo -e " Versión detectada: $EXISTING_VERSION"
|
|
|
+ echo -e "${AMARILLO} Omitiendo instalación para evitar duplicados o conflictos.${NC}"
|
|
|
+ exit 0
|
|
|
+else
|
|
|
+ echo -e " No se detectó Python 2.7 en la ruta objetivo. Procediendo con la instalación..."
|
|
|
+fi
|
|
|
+
|
|
|
+# ==========================================================
|
|
|
+# INICIO DE LA INSTALACIÓN (Si pasó las verificaciones)
|
|
|
+# ==========================================================
|
|
|
+
|
|
|
+# 1. Actualizar el sistema
|
|
|
+echo -e "${AMARILLO}--> Actualizando repositorios...${NC}"
|
|
|
+apt update
|
|
|
|
|
|
-# 3. Instalar dependencias necesarias
|
|
|
-echo "--> Instalando dependencias de compilación..."
|
|
|
+# 2. Instalar dependencias
|
|
|
+echo -e "${AMARILLO}--> Instalando dependencias necesarias...${NC}"
|
|
|
apt install -y build-essential zlib1g-dev checkinstall libncurses5-dev \
|
|
|
libncurses-dev libnss3-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev \
|
|
|
libc6-dev libbz2-dev libffi-dev libreadline-dev libdb-dev curl
|
|
|
|
|
|
-# 4. Descargar el código fuente de Python 2.7.18
|
|
|
-echo "--> Descargando código fuente de Python 2.7.18..."
|
|
|
+# 3. Descargar Python 2.7.18
|
|
|
+echo -e "${AMARILLO}--> Descargando código fuente...${NC}"
|
|
|
cd /usr/src
|
|
|
-# Usamos -O para asegurar el nombre del archivo
|
|
|
wget https://repo.yosoyhendrix.com/yosoyhendrix/Python-2.7/raw/main/Python-2.7.18.tgz -O Python-2.7.18.tgz
|
|
|
|
|
|
-# 5. Descomprimir
|
|
|
-echo "--> Descomprimiendo archivos..."
|
|
|
+# 4. Descomprimir
|
|
|
+echo -e "${AMARILLO}--> Descomprimiendo...${NC}"
|
|
|
tar xzf Python-2.7.18.tgz
|
|
|
cd Python-2.7.18
|
|
|
|
|
|
-# 6. Configurar y Compilar
|
|
|
-echo "--> Configurando compilación (esto tomará unos minutos)..."
|
|
|
-# Usamos la opción estándar recomendada en la guía para evitar conflictos
|
|
|
+# 5. Compilar
|
|
|
+echo -e "${AMARILLO}--> Configurando y compilando (esto demora unos minutos)...${NC}"
|
|
|
./configure --prefix=/usr/local/python2.7
|
|
|
-
|
|
|
-echo "--> Compilando (make)..."
|
|
|
make
|
|
|
-
|
|
|
-echo "--> Instalando (make install)..."
|
|
|
make install
|
|
|
|
|
|
-# 7. Crear enlace simbólico para poder usar el comando 'python2.7' globalmente
|
|
|
-echo "--> Creando enlace simbólico en /usr/local/bin/python2.7..."
|
|
|
-if [ -L /usr/local/bin/python2.7 ]; then
|
|
|
- rm /usr/local/bin/python2.7
|
|
|
-fi
|
|
|
-ln -s /usr/local/python2.7/bin/python2.7 /usr/local/bin/python2.7
|
|
|
-
|
|
|
-# 8. Verificar instalación de Python
|
|
|
-echo "--> Verificación de versión de Python:"
|
|
|
-python2.7 -V
|
|
|
+# 6. Enlaces Simbólicos (Python)
|
|
|
+echo -e "${AMARILLO}--> Creando accesos directos (symlinks)...${NC}"
|
|
|
+# Forzamos (-f) la creación del enlace para asegurar que apunte al nuevo binario
|
|
|
+ln -sf /usr/local/python2.7/bin/python2.7 /usr/local/bin/python2.7
|
|
|
|
|
|
-# 9. Instalar PIP para Python 2.7
|
|
|
-echo "--> Descargando e instalando pip..."
|
|
|
+# 7. Instalar PIP
|
|
|
+echo -e "${AMARILLO}--> Instalando PIP...${NC}"
|
|
|
cd /usr/src
|
|
|
curl https://repo.yosoyhendrix.com/yosoyhendrix/Python-2.7/raw/main/get-pip.py -o get-pip.py
|
|
|
-
|
|
|
-# Ejecutamos con el binario recién instalado
|
|
|
/usr/local/python2.7/bin/python2.7 get-pip.py
|
|
|
|
|
|
-# Crear enlace simbólico para pip2.7
|
|
|
-echo "--> Creando enlace simbólico para pip2.7..."
|
|
|
-if [ -L /usr/local/bin/pip2.7 ]; then
|
|
|
- rm /usr/local/bin/pip2.7
|
|
|
-fi
|
|
|
-ln -s /usr/local/python2.7/bin/pip2.7 /usr/local/bin/pip2.7
|
|
|
-
|
|
|
-# 10. Limpieza y Finalización
|
|
|
-echo "=========================================================="
|
|
|
-echo " ¡Instalación completada con éxito!"
|
|
|
-echo "=========================================================="
|
|
|
-echo "Versiones instaladas:"
|
|
|
-python2.7 --version
|
|
|
-pip2.7 --version
|
|
|
-echo "=========================================================="
|
|
|
+# 8. Enlaces Simbólicos (Pip)
|
|
|
+ln -sf /usr/local/python2.7/bin/pip2.7 /usr/local/bin/pip2.7
|
|
|
+
|
|
|
+# FINALIZACIÓN
|
|
|
+echo -e "${VERDE}==========================================================${NC}"
|
|
|
+echo -e "${VERDE} ¡Instalación Completada con Éxito!${NC}"
|
|
|
+echo -e "${VERDE}==========================================================${NC}"
|
|
|
+echo -e "Comandos disponibles:"
|
|
|
+echo -e " python2.7 --version -> $(python2.7 --version 2>&1)"
|
|
|
+echo -e " pip2.7 --version -> $(pip2.7 --version)"
|