install_python27.sh 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. #!/bin/bash
  2. # Configuración para detener el script si hay errores graves
  3. set -e
  4. # Colores para los mensajes
  5. VERDE='\033[0;32m'
  6. ROJO='\033[0;31m'
  7. AMARILLO='\033[1;33m'
  8. NC='\033[0m' # No Color
  9. echo -e "${VERDE}==========================================================${NC}"
  10. echo -e "${VERDE} Instalador Automático de Python 2.7 (Ubuntu 24.04+)${NC}"
  11. echo -e "${VERDE}==========================================================${NC}"
  12. # --- FUNCIÓN 1: VERIFICAR ROOT ---
  13. if [ "$EUID" -ne 0 ]; then
  14. echo -e "${ROJO}❌ Error: Por favor, ejecuta este script como root (sudo).${NC}"
  15. exit 1
  16. fi
  17. # --- FUNCIÓN 2: VERIFICAR VERSIÓN DE UBUNTU ---
  18. echo -e "${AMARILLO}--> Verificando versión del sistema operativo...${NC}"
  19. # Obtener información del sistema
  20. if [ -f /etc/os-release ]; then
  21. . /etc/os-release
  22. else
  23. echo -e "${ROJO}❌ Error: No se pudo detectar el sistema operativo.${NC}"
  24. exit 1
  25. fi
  26. # Verificar si es Ubuntu
  27. if [ "$ID" != "ubuntu" ]; then
  28. echo -e "${ROJO}❌ Error: Este script está diseñado solo para Ubuntu.${NC}"
  29. exit 1
  30. fi
  31. # Comparar versión (Lógica: Si VERSION_ID es menor a 24.04, falla)
  32. # Usamos 'sort -V' para comparar versiones numéricas correctamente
  33. MIN_VERSION="24.04"
  34. if [ "$(printf '%s\n' "$MIN_VERSION" "$VERSION_ID" | sort -V | head -n1)" != "$MIN_VERSION" ]; then
  35. echo -e "${ROJO}❌ Error: Tu versión de Ubuntu es $VERSION_ID.${NC}"
  36. echo -e "${ROJO} Se requiere Ubuntu $MIN_VERSION o superior para continuar.${NC}"
  37. exit 1
  38. else
  39. echo -e "${VERDE}✅ Sistema compatible detectado: Ubuntu $VERSION_ID${NC}"
  40. fi
  41. # --- FUNCIÓN 3: VERIFICAR SI PYTHON YA ESTÁ INSTALADO ---
  42. # Verificamos la ruta específica donde este script instala Python (/usr/local/python2.7)
  43. echo -e "${AMARILLO}--> Buscando instalaciones previas de Python 2.7...${NC}"
  44. PYTHON_BIN="/usr/local/python2.7/bin/python2.7"
  45. if [ -f "$PYTHON_BIN" ]; then
  46. echo -e "${VERDE}✅ Python 2.7 ya se encuentra instalado en: $PYTHON_BIN${NC}"
  47. EXISTING_VERSION=$($PYTHON_BIN -V 2>&1)
  48. echo -e " Versión detectada: $EXISTING_VERSION"
  49. echo -e "${AMARILLO} Omitiendo instalación para evitar duplicados o conflictos.${NC}"
  50. exit 0
  51. else
  52. echo -e " No se detectó Python 2.7 en la ruta objetivo. Procediendo con la instalación..."
  53. fi
  54. # ==========================================================
  55. # INICIO DE LA INSTALACIÓN (Si pasó las verificaciones)
  56. # ==========================================================
  57. # 1. Actualizar el sistema
  58. echo -e "${AMARILLO}--> Actualizando repositorios...${NC}"
  59. apt update
  60. # 2. Instalar dependencias
  61. echo -e "${AMARILLO}--> Instalando dependencias necesarias...${NC}"
  62. apt install -y build-essential zlib1g-dev checkinstall libncurses5-dev \
  63. libncurses-dev libnss3-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev \
  64. libc6-dev libbz2-dev libffi-dev libreadline-dev libdb-dev curl
  65. # 3. Descargar Python 2.7.18
  66. echo -e "${AMARILLO}--> Descargando código fuente...${NC}"
  67. cd /usr/src
  68. wget https://repo.yosoyhendrix.com/yosoyhendrix/Python-2.7/raw/main/Python-2.7.18.tgz -O Python-2.7.18.tgz
  69. # 4. Descomprimir
  70. echo -e "${AMARILLO}--> Descomprimiendo...${NC}"
  71. tar xzf Python-2.7.18.tgz
  72. cd Python-2.7.18
  73. # 5. Compilar
  74. echo -e "${AMARILLO}--> Configurando y compilando (esto demora unos minutos)...${NC}"
  75. ./configure --prefix=/usr/local/python2.7
  76. make
  77. make install
  78. # 6. Enlaces Simbólicos (Python)
  79. echo -e "${AMARILLO}--> Creando accesos directos (symlinks)...${NC}"
  80. # Forzamos (-f) la creación del enlace para asegurar que apunte al nuevo binario
  81. ln -sf /usr/local/python2.7/bin/python2.7 /usr/local/bin/python2.7
  82. # 7. Instalar PIP
  83. echo -e "${AMARILLO}--> Instalando PIP...${NC}"
  84. cd /usr/src
  85. curl https://repo.yosoyhendrix.com/yosoyhendrix/Python-2.7/raw/main/get-pip.py -o get-pip.py
  86. /usr/local/python2.7/bin/python2.7 get-pip.py
  87. # 8. Enlaces Simbólicos (Pip)
  88. ln -sf /usr/local/python2.7/bin/pip2.7 /usr/local/bin/pip2.7
  89. # FINALIZACIÓN
  90. echo -e "${VERDE}==========================================================${NC}"
  91. echo -e "${VERDE} ¡Instalación Completada con Éxito!${NC}"
  92. echo -e "${VERDE}==========================================================${NC}"
  93. echo -e "Comandos disponibles:"
  94. echo -e " python2.7 --version -> $(python2.7 --version 2>&1)"
  95. echo -e " pip2.7 --version -> $(pip2.7 --version)"