#!/bin/bash # # Script para descargar un paquete y sus dependencias hasta un nivel especificado # Autor: Esteban M. Navas Martín # Última modificación: 23/11/2025 set -euo pipefail # Verificar si se ejecuta como root if [ "$EUID" -ne 0 ]; then echo "Este script debe ejecutarse como root." echo "Usa: sudo $0 paquete [nivel_dependencia]" exit 1 fi # Parámetros if [ $# -eq 0 ]; then echo "Debe especificar el paquete a descargar" echo "Sintaxis: $0 paquete [nivel_dependencia]" exit 1 fi paquete_principal="$1" nivel="${2:-1}" # Nivel de dependencias por defecto: 1 INFO_DIR="/var/lib/dpkg/info" # Actualizar lista de paquetes apt-get update -qq # Comprobar que el paquete existe if ! apt-cache show "$paquete_principal" > /dev/null 2>&1; then echo "El paquete $paquete_principal no existe en los repositorios" exit 1 fi # Preparar directorio [ -d "$paquete_principal" ] && rm -rf "$paquete_principal" mkdir -p "$paquete_principal" cd "$paquete_principal" || exit # Función para obtener dependencias de un paquete (primer nivel) get_depends() { local pkg="$1" LC_ALL=C apt-cache depends -i "$pkg" \ | awk '/Depends:/ && !/PreDepends/ {gsub(/<|>/,"",$2); print $2}' \ | sort -u } # Array con paquetes a descargar paquetes_a_descargar=("$paquete_principal") descargados=() for ((i=0; i