Empaquetado, Distribución y Creación de Instaladores de Scripts
Desarrollar un script excelente es solo la mitad del trabajo; para que otros administradores y desarrolladores puedan utilizarlo en sus servidores, es necesario saber cómo empaquetarlo, estructurarlo según el estándar del sistema de archivos (FHS) y distribuirlo mediante instaladores autónomos y seguros.
1. El Estándar FHS para Herramientas CLI en Linux #
Al instalar herramientas creadas en Bash en un sistema Linux, se deben respetar las rutas estándar del Filesystem Hierarchy Standard (FHS):
1/usr/local/ 2├── bin/ ◄── Binario ejecutable principal (chmod 755) 3│ └── mibackup 4├── lib/mibackup/ ◄── Módulos y librerías auxiliares (.sh) 5│ ├── logica.sh 6│ └── notificaciones.sh 7└── share/ 8 └── man/man1/ ◄── Página de manual de ayuda (man mibackup) 9 └── mibackup.1.gz 10/etc/mibackup/ ◄── Archivo de configuración global 11 └── mibackup.conf
2. Creación de un Script Instalador Profesional (install.sh) #
El comando install es la utilidad estándar de UNIX para copiar archivos estableciendo propietario y permisos en un solo paso atómico:
1#!/usr/bin/env bash 2set -Eeuo pipefail 3 4 # 1. Comprobar privilegios de administración 5if [ "$EUID" -ne 0 ]; then 6 echo "Error: Este instalador requiere privilegios de superusuario (sudo ./install.sh)." >&2 7 exit 1 8fi 9 10 # 2. Verificar dependencias obligatorias 11for dep in curl jq rsync; do 12 if ! command -v "$dep" >/dev/null 2>&1; then 13 echo "Error: Falta la dependencia requerida '$dep'. Instálala con apt/dnf." >&2 14 exit 1 15 fi 16done 17 18echo "Instalando herramienta CLI 'mibackup'..." 19 20 # 3. Copiar configuración, librerías y binario con permisos seguros 21install -d -m 755 /etc/mibackup 22install -m 644 config/mibackup.conf /etc/mibackup/mibackup.conf 23 24install -d -m 755 /usr/local/lib/mibackup 25install -m 644 lib/*.sh /usr/local/lib/mibackup/ 26 27install -m 755 bin/mibackup /usr/local/bin/mibackup 28 29echo "✅ 'mibackup' se ha instalado correctamente en /usr/local/bin/mibackup."
3. Instalación Remota Segura con Verificación SHA-256 #
El popular patrón de instalación remota mediante curl | bash debe protegerse siempre contra descargas truncadas o conexiones manipuladas mediante sumas de verificación criptográficas (SHA-256):
1#!/usr/bin/env bash 2set -Eeuo pipefail 3 4URL="https://releases.empresa.com/mibackup-v1.0.0.tar.gz" 5SHA256_ESPERADO="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" 6 7TMP_DIR=$(mktemp -d) 8trap 'rm -rf "$TMP_DIR"' EXIT 9 10echo "Descargando paquete de instalación..." 11curl -fsSL "$URL" -o "$TMP_DIR/paquete.tar.gz" 12 13 # Verificar integridad criptográfica 14HASH_CALCULADO=$(sha256sum "$TMP_DIR/paquete.tar.gz" | awk '{print $1}') 15if [ "$HASH_CALCULADO" != "$SHA256_ESPERADO" ]; then 16 echo "❌ Error crítico: La suma de verificación SHA-256 no coincide. Abortando instalación." >&2 17 exit 1 18fi 19 20echo "Integridad verificada con éxito. Descomprimiendo e instalando..." 21tar -xzf "$TMP_DIR/paquete.tar.gz" -C "$TMP_DIR" 22sudo bash "$TMP_DIR/install.sh"
Resumen del tema
Conceptos clave #
- Convención FHS:
/usr/local/binpara ejecutables,/etc/para configuraciones y/usr/local/lib/para módulos compartidos. - Comando
install: copia de archivos garantizando permisos (-m 755,-m 644) y creación de directorios (-d) de forma atómica. - Verificación Criptográfica: uso de
sha256sumpara garantizar que los paquetes descargados de forma remota no hayan sido corrompidos ni alterados.
Qué debes recordar #
Estructura tus herramientas respetando las rutas del estándar FHS y utiliza scripts install.sh con verificación de dependencias y sumas SHA-256 para una distribución profesional y segura.