Montar un repositorio trivial para nuestros propios paquetes | Algo de Linux

lunes, 24 de mayo de 2010

Montar un repositorio trivial para nuestros propios paquetes

En ocasiones hemos creado o bajado un paquete que no se encuentra en los repositorios y que tiene dependencias de otros paquetes.

Al instalarlo mediante dpkg -i paquete.deb nos surgirá el problema de que, como dpkg no se encarga de instalar las dependencias, tendremos que hacer un apt-get -f install para que se instalen dichas dependencias.

Para resolver este problema, podemos montar un repositorio trivial en nuestra máquina, de forma que al instalar uno de nuestros paquetes con apt-get o aptitude, se instalen las dependencias.

La forma más sencilla de hacerlo es usar nuestro servidor web, así que, suponiendo que ya tenemos apache instalado y corriendo, creamos un directorio para nuestros paquetes:

# mkdir /var/www/mirepositorio

Y copiamos en este directorio todos los paquetes que queramos. Por ejemplo:

# cp gpdftk_0.0.36-1_all.deb /var/www/mirepositorio/

Una vez copiados los paquetes, entramos en el directorio y generamos el fichero de índices:

# cd /var/www/mirepositorio
# dpkg-scanpackages . /dev/null>Packages && gzip -c9 Packages>Packages.gz && rm Packages

Como podremos observar, en el mismo directorio, se nos creará un fichero Packages.gz que contendrá el índice de nuestro repositorio.

Cada vez que añadamos nuevos paquetes al repositorio, volveremos a ejecutar el dpkg-scanpackages. Por ejemplo:

# cp mount-systray_0.5.4-1_all.deb /var/www/mirepositorio/


# cd /var/www/mirepositorio

# dpkg-scanpackages . /dev/null>Packages && gzip -c9 Packages>Packages.gz && rm Packages




Por último, no olvidemos añadir a nuestro /etc/apt/sources.list la localización del repositorio. Por ejemplo: Suponiendo que nuestro servidor de paquetes tiene la ip 192.168.1.3, añadiremos la siguiente línea:

deb http://192.168.1.3/mirepositorio /

La estructura de directorios que he creado es muy simple (un solo directorio). Pero, del mismo modo, podría crear diferentes directorios para distintas arquitecturas o incluso para código fuente.

1 comentario:

d3m4s1@d0v1v0 dijo...

Hola, muy bueno el artículo! Yo hacía algo similar cuando tenía conexión dial-up y descargar paquetes de un repositorio costaba bastante. Lo que hacía era guardar los paquetes y cada vez que los necesitaba, creaba un repositorio en el disco local y los instalaba desde ahí.
Lo que quería agregar es que no hace falta tener un servidor Web instalado para crear un repositorio local. Podes hacer todo lo mismo que explicas con el dpkg-scanpackages, pero en el sources.list agregas una entrada de la forma:
deb file:/pathAlaCarpeta/ debCarpeta/

En mi blog publiqué hace ya un año una entrada sobre agregar repositorios al sources.list, tal vez te resulte interesante: http://itfreekzone.blogspot.com/2009/05/anadir-fuentes-de-paquetes-para-apt.html
Saludos!