¿No les ha pasado que quisieran montar su propio repositorio APT donde monten los paquetes con dput o dupload como si lo hiciesen directamente a Debian o Ubuntu pero con la ventaja de que se actualice en 5 minutos? Bueno, realmente es fácil hacerlo y les explicaré como en este artículo. También podrán tener, opcionalmente, otra ubicación o ruta donde coloquen un histórico de todos los paquetes que han subido aparte del pool como éste.
¿Qué necesitas?
Usaremos reprepro para manejar el repositorio y para la administración unos scripts en bash, además necesitarás el paquete devscripts pues necesitaremos del script dcmd.
Instalar y Configurar
Facilisto:
# aptitude install reprepro devscripts
Para configurar: en el directorio seleccionado para hospedar el repositorio crea la carpeta conf donde crearás el archivo llamado distributions, en éste último archivo colocaremos información sobre el repositorio en el siguiente formato:
Origin: Jose Luis Rivas
Label: Jose Luis Rivas for Debian
Suite: unstable
Codename: sid
Architectures: i386 all source
Components: main non-free contrib
Description: Jose Luis Rivas's repo for Debian-related work
Origin: Jose Luis Rivas
Label: Jose Luis Rivas for Debian
Suite: testing
Codename: squeeze
Architectures: i386 all source
Components: main non-free contrib
Description: Jose Luis Rivas's repo for Debian-related work
Esa es la configuración de mi repositorio, tengo lugar para testing y para unstable. Así mismo para subir tengo dos directorios diferentes, uno para unstable y otro para testing.
Los archivos para sincronizar los directorios de subida con el repositorio son diferentes para cada distribución configurada; el script es el siguiente:
#!/bin/sh
DCRET=/home/ghostbar/incoming
DCROT=/srv/dl.rivco.net/debian/
for i in $( find $DCRET | grep ".changes" ); do
reprepro -Vb $DCROT include unstable $i
for j in $( dcmd $i ); do
rm $j
done
done
Lo obvio, en DCRET va el directorio donde subiran los archivos y DCROT es donde está ubicado el repositorio APT. Si quieres además llevar el histórico como comenté más arriba el script entonces se vería más como:
#!/bin/sh
DCRET=/home/ghostbar/incoming-unstable
DCROT=/srv/dl.rivco.net/debian/
HISTORICREPO=/srv/repo.rivco.net/debian
for i in $( find $DCRET | grep ".changes" ); do
reprepro -Vb $DCROT include sid $i
mkdir -p $HISTORICREPO/$( grep "Source: " $i | sed 's/Source: //' )/$( grep "Version: " $i | sed 1's/Version: //' | grep --max-count=1 - )
for j in $( dcmd $i ); do
mv $j $HISTORICREPO/$( grep "Source: " $i | sed 's/Source: //' )/$( grep "Version: " $i | sed 1's/Version: //' | grep --max-count=1 - )/
done
done
Para que sea automático y que revise cada 5 minutos el incoming simplemente se coloca en cron una línea como esta:
*/5 * * * * /usr/local/bin/incoming-unstable.sh
*/5 * * * * /usr/local/bin/incoming-testing.sh
Soporte para subidas
Yo uso dput y mi configuración es la siguiente en ~/.dput.cf:
[rivco]
fqdn = rivco.net
login = ghostbar
incoming = /home/ghostbar/incoming-unstable
method = scp
run_dinstall = 0
[rivco-testing]
fqdn = rivco.net
login = ghostbar
incoming = /home/ghostbar/incoming-testing
method = scp
run_dinstall = 0
El método que uso es scp y lo único que necesito tener configurado en mi servidor es sshd; creo que el resto de los parámetros son autoexplicativos.
Ajá ¿y ahora?
dput rivco package_file.changes
Y esperar unos 5 minutos para que los scripts hagan su trabajo y ¡disfrutar!
Recent Comments