
Tengo una computadora portátil y una copia local de varios repositorios en un disco duro externo conectado a mi enrutador. Mi enrutador proporciona acceso a esos archivos (con credenciales) como recursos compartidos de samba y/o servidor ftp.
Me gustaría configurar apt-get para verificar esos repositorios cuando estén disponibles y descargar actualizaciones de ellos para acelerar el proceso cuando sea posible.
Para ser más claro: quiero que apt-get verifique tanto los repositorios habituales en Internet como el local cuando mi computadora portátil esté conectada a mi wifi. Si los archivos en los repositorios externos son más nuevos que los de mi mirror local o si el mirror no está disponible, apt-get debería descargar los archivos de Internet.
Respuesta1
Hay 4 pasos para configurar su propio repositorio
- Instalar
dpkg-dev
- Poner los paquetes en un directorio.
- Cree un script que escanee los paquetes y cree un archivo
apt-get update
que pueda leer - Agregue una línea a su
sources.list
apuntando a su repositorio
Instalardpkg-dev
Abrir una terminal:
sudo apt-get install dpkg-dev
El directorio
Crea un directorio para guardar tus paquetes. Para este ejemplo, usaremos /usr/local/lan-repo
.
sudo mkdir -p /usr/local/lan-repo
Ahora mueva todos sus paquetes a ese nuevo directorio.
Los paquetes que ya se han descargado generalmente se almacenan en su sistema en formato /var/cache/apt/archives
. Si lo ha instalado, apt-cacher
lo más probable es que tenga paquetes adicionales almacenados en el apt-cacher/packages
directorio.
Crea un script llamadoupdate-lan-repo
Es un script muy simple de tres líneas:
#! /bin/bash
cd /usr/local/lan-repo
sudo dpkg-scanpackages . /dev/null | gzip -9c > packages.gz
Copie y pegue lo anterior en su editor de texto favorito y guárdelo como update-lan-repo
en ~/bin
. ( ~
significa el directorio de inicio. Si ~/bin
aún no existe, créelo. Ubuntu colocará automáticamente ese directorio en su RUTA. Esto lo convierte en un buen lugar para colocar scripts personales).
Ahora hagamos ejecutable el script:
chmod u+x ~/bin/update-lan-repo
Así es como funciona el guión:
dpkg-scanpackages
examina todos los paquetes en lan-repo
, y la salida se comprime y se escribe en el archivo packages.gz
, que apt-get update
se puede leer (consulte a continuación una referencia que explica esto con todo detalle). /dev/null
es un archivo vacío, es decir, es una improvisación para un archivo de anulación que contiene información adicional sobre los paquetes, que en nuestro caso no es realmente necesaria. Verdeb-override(5)
si quieres saber más al respecto.
Necesitamos agregar su repositorio local a su archivo sources.list
echo "deb file:/usr/local/lan-repo ./" >> /etc/apt/sources.list
y listo, ya está.
Opción CD/DVD
Puede almacenar el directorio que contiene el archivo .deb en un CD/DVD y usarlo también como repositorio (bueno para compartir entre computadoras). Para utilizar el CD como repositorio:
simplemente ejecute el comando:
sudo apt-cdrom add
utilizando el nuevo repositorio.
Luego, cada vez que almacene un nuevo paquete Debian en el directorio lan-repo, ejecute:
sudo update-lan-repo
sudo apt-get update
Ahora sus paquetes locales se pueden manipular con Synaptic, aptitude y los comandos apt: apt-get
, apt-cache
, etc. Cuando intente instalar apt-get, todas las dependencias se resolverán por usted, siempre que se puedan cumplir.
Respuesta2
Finalmente logré resolver esto y está funcionando bastante bien, así que quiero compartirlo con personas que quieran implementar algo similar.
Mi primer problema fue que mi sistema admite múltiples arcos, por lo que los repositorios reflejados deberían contener paquetes i386 y amd64 (no creé fuentes reflejadas) para evitar errores de descarga. Esto se hace en/etc/apt/mirror.listcomo muestra este ejemplo:
deb-i386 http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
Miruta_basedefinido en ese archivo es/mnt/apt-espejosy ejecuto un script que monta un disco duro externo conectado al puerto USB de mi enrutador como un recurso compartido Samba (puedes ver el script aquí: cómo usar apt-mirror para guardar archivos en HDD conectado al enrutador LAN
Quería acceder a los repositorios reflejados desde otras computadoras en la LAN, por lo que la otra parte de la solución es agregar las definiciones de los repositorios FTP.al principioen/etc/apt/sources.list. Esta configuración haceapto-obtenerusar los repositorios FTP primero al descargar archivos y luego usar los definidos en/etc/apt/sources.list.d, siempre que los reflejados estén actualizados.
Los repositorios locales se definen así:
deb [arch=amd64,i386] ftp://user:password@lan-resource/apt-mirrors/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
donde reemplazasusuariocon el nombre de usuario que tiene acceso otorgado al servidor FTP,:contraseñacon su contraseña si es necesario para conectarse (de lo contrario, elimínela), yrecurso-lancon la dirección del servidor FTP en su LAN (decidí editar/etc/hostspara evitar repetir la dirección IP codificada, donde definí 192.168.0.1 comoservidor lanftputilizar en este campo).