Configurar fuentes APT con un espejo FTP en Debian
1. Descripción del servicio
APT es la herramienta de gestión de paquetes utilizada en sistemas basados en Debian. Al almacenar las fuentes de software en un servidor FTP, los clientes de red interna pueden acceder a los paquetes e índices desde una ubicación centralizada, lo cual es ideal para entornos sin conexión a Internet, redes locales de laboratorios o múltiples servidores Debian. Este artículo muestra cómo montar un directorio FTP y configurar una fuente APT, utilizando como ejemplo la dirección del servidor FTP 172.18.206.130, el cliente Debian y el directorio de montaje /qwe/.
2. Preparación del entorno
• Sistema operativo: Debian, con el código de versión coincidente entre el cliente y el espejo FTP.
• Permisos de acceso: Cuenta root o usuario con permisos sudo.
• Condiciones de red: El cliente debe poder acceder al puerto TCP 21 del servidor FTP; DNS, puerta de enlace y rutas deben estar funcionando correctamente.
• Servidor FTP: Debe tener un espejo de instalación Debian o un directorio con paquetes APT, además de un usuario FTP con acceso de lectura.
• Software del cliente: Debe contar con apt y apt-cdrom; si se necesita montar el directorio FTP, instalar curlftpfs.
• Requisitos de configuración: Hacer una copia de seguridad del archivo /etc/apt/sources.list antes de modificarlo; no rellenar el código de versión de forma casual.
3. Conceptos clave
• El formato típico de una fuente APT es deb URI suite component..., donde suite representa el código de versión del sistema y component puede ser main, contrib o non-free.
• La conexión de control FTP utiliza por defecto el puerto TCP 21; el firewall o NAT también puede afectar la conexión de datos, por lo que se recomienda verificar el rango de puertos en modo pasivo.
• curlftpfs permite montar un directorio FTP en el sistema de archivos local; APT también puede acceder directamente a direcciones deb ftp://..., según el entorno de prueba.
• apt-cdrom es más adecuado para escanear discos ópticos o directorios de imágenes; cuando se usan fuentes FTP, escribir manualmente deb ftp://... facilita la revisión y mantenimiento.
• El código de versión en la fuente debe coincidir exactamente con el contenido del directorio de paquetes. Un error puede provocar fallos al encontrar el archivo Release, incompatibilidad de versiones o errores al resolver dependencias.
• Las credenciales del usuario FTP no deben permanecer escritas en scripts compartidos o documentos públicos; en entornos de producción, se recomienda usar cuentas restringidas, FTPS o fuentes HTTPS.
4. Pasos de prueba
4.1 Verificar versión del sistema y conectividad
Antes de continuar, confirmar el código de versión del cliente y probar la accesibilidad del servidor FTP:
root@debian:~# uname -a
root@debian:~# cat /etc/debian_version
root@debian:~# grep -E '^(VERSION_ID|VERSION_CODENAME)=' /etc/os-release
root@debian:~# nc -vz 172.18.206.130 21
En versiones antiguas de Debian, podría no existir el campo VERSION_CODENAME, por lo que se debe utilizar el directorio del espejo y /etc/debian_version como referencia.
4.2 Montar el directorio FTP
Si se requiere tratar el directorio FTP como un directorio local, primero instalar y crear el punto de montaje. Los siguientes datos de inicio de sesión son solo para demostración, sustituirlos por credenciales reales:
root@debian:~# apt install -y curlftpfs
root@debian:~# mkdir -p /qwe
root@debian:~# curlftpfs ftp://ftp:123456@172.18.206.130/ /qwe/
root@debian:~# mountpoint /qwe
root@debian:~# ls -la /qwe/
Si el sistema tiene activado el control de acceso FUSE, los usuarios normales deben asegurarse de que user_allow_other esté habilitado en /etc/fuse.conf antes de usar allow_other; root maneja esto según la configuración FUSE del sistema.
4.3 Copiar y configurar la fuente APT
Consultar primero el código de versión correspondiente al directorio del espejo, luego hacer una copia de seguridad del archivo de fuentes. En este ejemplo, etch representa solo un espejo antiguo y no debe usarse directamente para otras versiones:
root@debian:~# cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
root@debian:~# sed -i '/^[[:space:]]*deb /s/^/#/' /etc/apt/sources.list
root@debian:~# printf '%s\n' 'deb ftp://172.18.206.130/ etch main contrib non-free' >> /etc/apt/sources.list
root@debian:~# cat /etc/apt/sources.list
Los campos importantes del archivo de fuentes son los siguientes:
deb ftp://172.18.206.130/ etch main contrib non-free
└──────────────┘ └──┘ └─────────────────┘
Dirección FTP Código Componente
Si se requiere usar el directorio montado, también se puede verificar el contenido del espejo y usar apt-cdrom para escanearlo:
root@debian:~# ls -la /qwe/
root@debian:~# apt-cdrom -m -d /qwe/ add
No se deben mantener fuentes apuntando a versiones incorrectas. Fuentes obsoletas o innecesarias pueden causar errores durante apt update o incluso instalar versiones incompatibles.
4.4 Actualizar índices y probar instalaciones
Después de la configuración, actualizar los índices de paquetes y realizar una instalación simulada para comprobar la resloución de dependenicas:
root@debian:~# apt-get clean
root@debian:~# apt-get update
root@debian:~# apt-cache policy curlftpfs
root@debian:~# apt-get install -s curlftpfs
Si apt-get update descarga correctamente los archivos Release o índices, y la instalación simulada no reporta errores de fuente o dependencias, significa que APT está funcionando correctamente con esta fuente FTP.
4.5 Restaurar y desmontar
Una vez finalizados los tests, restaurar el archivo original de fuentes y desmontar el directorio FTP:
root@debian:~# cp -a /etc/apt/sources.list.bak /etc/apt/sources.list
root@debian:~# fusermount -u /qwe/
root@debian:~# mountpoint /qwe/ || true
5. Verificación de resultados
Ejecutar los siguientes comandos en el cliente para revisar la configuración de fuentes, el montaje FTP y los índices de APT:
root@debian:~# grep -vE '^[[:space:]]*(#|$)' /etc/apt/sources.list
root@debian:~# mountpoint /qwe/
root@debian:~# apt-cache policy
root@debian:~# apt-get update
root@debian:~# apt-get install -s curlftpfs
Criterios de verificación:
1. Solo debe haber fuentes FTP que coincidan con la versión actual del espejo en /etc/apt/sources.list.
2. Si /qwe/ aparece como punto de montaje, debe mostrar el contenido del directorio FTP.
3. apt-get update no debe reportar errores de conexión, tiempo de espera o permisos.
4. apt-cache policy debe mostrar correctamente los índices de paquetes, y la instalación simulada debe completar la resolución de dependencias.
Soluciones comunes a problemas:
• Conexión rechazada: Verificar estado del servidor FTP, firewall y puerto TCP 21.
• Inicio de sesión incorrecto: Comprobar nombre de usuario, contraseña y directorio de acceso.
• El repositorio no tiene un archivo Release: Verificar la ruta raíz del FTP, código de versión y estructura del directorio del espejo.
• No encontrado (404): Confirmar que suite o component coincidan con la estructura real del directorio FTP.
• Fallo en apt-cdrom: Asegurarse de que /qwe/ sea un directorio válido de espejo; para fuentes puras FTP, cambiar a deb ftp://... y ejecutar apt-get update.