#!/bin/bash # Configuración para detener el script si hay errores graves set -e # Colores para los mensajes VERDE='\033[0;32m' ROJO='\033[0;31m' AMARILLO='\033[1;33m' NC='\033[0m' # No Color 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 -e "${ROJO}❌ Error: Por favor, ejecuta este script como root (sudo).${NC}" exit 1 fi # --- 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 # 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 # 3. Descargar Python 2.7.18 echo -e "${AMARILLO}--> Descargando código fuente...${NC}" cd /usr/src wget https://repo.yosoyhendrix.com/yosoyhendrix/Python-2.7/raw/main/Python-2.7.18.tgz -O Python-2.7.18.tgz # 4. Descomprimir echo -e "${AMARILLO}--> Descomprimiendo...${NC}" tar xzf Python-2.7.18.tgz cd Python-2.7.18 # 5. Compilar echo -e "${AMARILLO}--> Configurando y compilando (esto demora unos minutos)...${NC}" ./configure --prefix=/usr/local/python2.7 make make install # 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 # 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 /usr/local/python2.7/bin/python2.7 get-pip.py # 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)" exit 0