Creación de un repositorio Debian automático 2006-10-14
En este post voy a explicar cómo crear un repositorio para alojar nuestros propios paquetes .deb . Para ello necesitaremos tener instalado el paquete apt-utils que seguramente ya lo estará.
Preparando el repositorio
Antes que nada deberemos crear un directorio raíz donde se hallará el resto de directorios y ficheros. Por ejemplo creamos el directorio /var/repo.
Una vez creado el raíz habrá que crear dentro de el la estructura de directorios, por ejemplo para la distribución sarge creamos la siguiente estructura:
/dists /dists/sarge /dists/sarge/contrib /dists/sarge/contrib/binary-i386 /dists/sarge/contrib/source /dists/sarge/main /dists/sarge/main/binary-i386 /dists/sarge/main/source /dists/sarge/non-free /dists/sarge/non-free/binary-i386 /dists/sarge/non-free/source
Donde vemos que primero se crea el directorio dists, donde luego habrá un directorio por cada distribución (en nuestro caso solo sarge). Dentro de la distribución (sarge) tendremos las diferentes secciones, main para paquetes libres, non-free para paquetes no libres, y contrib para paquetes libres que dependen de otros paquetes que no lo son.
Una vez creadas las secciones creamos un directorio para los binarios, binary-
Llenando el repositorio
Una vez creada la estructura ya podemos alojar nuestros paquetes. Para ello tenemos que copiar los .deb correspondientes a paquetes binarios en los directorios binary-i386 de cada sección. Si además queremos distribuir los fuentes copiaremos los ficheros .dsc -diff.tar.gz .orig.tar.bz en los directorios source.
En cada directorio binary-i386 y source necesitamos un fichero Release cuyo contenido sería el siguiente:
Archive: stable Component: main Origin: <Tu nombre u organizacion> Label: <Una etiqueta descriptiva> Architecture: <Arquitectura de tu procesador o "source" para los directorios de fuentes>
Ficheros de configuración
Necesitamos dos ficheros de configuración:
- apt-sarge-release.conf
- apt-ftparchive.conf
Ambos ficheros los pondremos en el directorio raíz del repositorio. Y su contenido sería el siguiente:
apt-sarge-release.conf
APT::FTPArchive::Release::Origin "Tu nombre u organizacion"; APT::FTPArchive::Release::Label "Etiqueta descriptiva"; APT::FTPArchive::Release::Suite "stable"; APT::FTPArchive::Release::Codename "sarge"; APT::FTPArchive::Release::Architectures "i386 source"; APT::FTPArchive::Release::Components "main contrib non-free"; APT::FTPArchive::Release::Description "Descripcion detallada";
apt-ftparchive.conf
Dir { ArchiveDir "."; CacheDir "."; }; Default { Packages::Compress "gzip bzip2"; Sources::Compress "gzip bzip2"; Contents::Compress "gzip bzip2"; }; BinDirectory "dists/sarge/main/binary-i386" { Packages "dists/sarge/main/binary-i386/Packages"; Contents "dists/sarge/Contents-i386"; SrcPackages "dists/sarge/main/source/Sources"; }; BinDirectory "dists/sarge/contrib/binary-i386" { Packages "dists/sarge/contrib/binary-i386/Packages"; Contents "dists/sarge/Contents-i386"; SrcPackages "dists/sarge/contrib/source/Sources"; }; BinDirectory "dists/sarge/non-free/binary-i386" { Packages "dists/sarge/non-free/binary-i386/Packages"; Contents "dists/sarge/Contents-i386"; SrcPackages "dists/sarge/non-free/source/Sources"; }; Tree "dists/sarge" { Sections "main contrib non-free"; Architectures "i386 source"; }; Default { Packages { Extensions ".deb"; }; };
Una vez tenemos los ficheros de configuración adecuados a nuestras necesidades hemos de ejecutar un par de comandos, los cuales podemos meter en un script llamado por ejemplo update-archive.sh:
#!/bin/sh apt-ftparchive generate apt-ftparchive.conf apt-ftparchive -c apt-dapper-release.conf release dists/dapper/ >dists/dapper/Release
Actualizando el repositorio
Una vez hemos puesto los paquetes dentro de los directorios correspondientes de su sección ejecutamos el script update-archive.sh, obteniendo una salida como la siguiente:
$ ./update-archive.sh dists/sarge/main/binary-i386: 21 files 42.7MB 2s dists/sarge/contrib/binary-i386: 0 files 0B 0s dists/sarge/non-free/binary-i386: 4 files 114MB 5s dists/sarge/main/binary-i386/: 21 files 42.7MB 0s dists/sarge/contrib/binary-i386/: 0 files 0B 0s dists/sarge/non-free/binary-i386/: 4 files 114MB 0s dists/sarge/main/source/: 2 pkgs in 0s dists/sarge/contrib/source/: 0 pkgs in 0s dists/sarge/non-free/source/: 0 pkgs in 0s Done Packages, Starting contents. Done. 314MB in 50 archives. Took 7s
Usando el repositorio
Después de los pasos anteriores ya podemos utilizar el repositorio modificando el fichero /etc/apt/sources.list:
- Para acceso local deb file:///var/repo sarge main contrib non-free
- Para acceso remoto (si por ejemplo hacemos un enlace simbólico a /var/svn dentro del direcorio de un servidor http): deb http://nuestro.servidor/repositorio sarge main contrib non-free
Nota
Este post es prácticamente una traducción de un howto cuyo link es este.
En un próximo post pondré como añadir nuestra firma al repositorio con gpg.