jueves, 17 de enero de 2019

Configurar un repositorio local Apt

Repositorio_Apt

Configurar un repositorio local

APT es un gestor de paquetes debian (.deb). El repositorio es un indice para buscar, instalar y actualizar paquetes en Linux. La idea de guia es configurar un repositorio "local".
Se puede crear un repositorio complejo o simple. En está guía se creará un repositorio Simple.
La ruta utilizada a modo de ejemplo sera: /usr/local_repo
El proceso se compone de tres paso:
  • Descargar y almacenar los paquetes.
  • Escaneo del directorio local, para crear el archivo de indice.
  • Agregar la ruta del Archivo indice a /etc/apt/source.list.

Descarga de paquetes Debian

Para la descarga de paquetas podemos seleccionar cualquiera de los mirrors de https://www.debian.org/mirror/list. Los mirrors principales suelen tener la estructura ftp.<country>.debian.org y los secundarios que pueden ser de cualquier otro organismo, pero estos pueden tener restricciones en la descarga o acceso.
Los paquetes de instalación se encuentran en el directorio /pool/que contiene tres subdirectorios:
  • main: Contien el gran mayoría de los paquetes de debian que cumplen con los requisitos de ser libres y con los 10 principios de Debian.
  • contrib: Cumple los requisitos debian pero usa paquetes no libres para su compilación o ejecución.
  • non-free: Son los paquetes privativos como de Intel,atmel etc. Sobretodo podemos encontrar el firmware de aquellos dispositivos privativos.

Escanear el directorio con "dpkg-scanpackages"

dpkg-scanpackages busca los paquetes binarios de Debian en un árbol de directorios, creando un fichero "Packages".
El comando espera el directorio (path) y el archivo de anulación. Para un repo simple no es necesario, por tanto mandamos la salida a /dev/null.
A la hora de crear el repositorio tenemos que canalizar la salida STDOUT al archivo Packages.gz con gzip, que funcionara como indice del repositorio.
paperclip
$ sudo dpkg-scanpackages <directorio-del-repositorio> /dev/null |gzip - c9 > <directorio-del-repositorio>/Packages.gz

Añadir fichero Release y firma

Para evitar los mensajes de seguridad de apt debemos crear el archivo Release y Release.gpg. Para crear el archivo Release utilizaremos el comando apt-ftparchive con la siguiente línea de comando:
paperclip
$ sudo apt-ftparchive release <directorio-del-repositorio> > <directorio-del-repositorio>/Release
Para firmar el archivo debemos utilizar la herramienta gpg con el siguiente comando:
paperclip
$ sudo gpg --sign -ba -o <directorio-del-repositorio>/Release.gpg <directorio-del-repositorio>/Release
  • Nota: Si no tenemos configurada una firma, la podemos crear mediante: $ sudo gpg --gen-key. Finalmente añadiremos la public key mediante:
paperclip
$ sudo --export --armor > Public.key # Exportamos la Clave Publica al fichero $ sudo apt-key add Public.key # Añadimos la clave a apt

Actualizar source.list

Para añadir el directorio como fuente, es necesario modificar el archivo source.list que se encuentra en /etc/apt/source.list.
Le añadiremos la siguiente linea:
paperclip
deb file:<ruta_directorio_local> ./ # Directorio Local
y ejecutamos $ sudo apt update.