InicioLinuxCrear tu propio repositorio de paquetes deb con Reprepro

Crear tu propio repositorio de paquetes deb con Reprepro

Linux•5/23/2013





En ocasiones necesitamos disponer de un repositorio de paquetes propio con el que instalar una serie de paquetes que no se encuentran en los repositorios de nuestra organización ni en los de nuestra distribución. En este caso, podemos recurrir a reprepro.

Vamos a ver cómo podemos instalar y utilizar reprepro en nuestra organización.

Instalar reprepro.
Lo primero es instalar los paquetes reprepro y apache2:

# apt-get install reprepro apache2


Reprepro necesita que tengamos apache para distribuir los paquetes del repositorio a los clientes.

Una vez instalados los paquetes, creamos el directorio principal de nuestro repositorio y el directorio de configuración de una vez. Por ejemplo:

# mkdir -p /var/www/iesvalledeljerte3/conf


A continuación vamos a crear una clave con la que firmaremos el repositorio:

cd /var/www/repositorio $ gpg --gen-key


gpg nos pedirá que seleccionemos el tipo de clave que deseamos crear. Elegiremos la opción (4) RSA (sólo firmar).

Lo siguiente que nos preguntará gpg es de qué tamaño queremos crear la clave y por defecto nos ofrece un tamaño de 2048. Lo aceptamos.

Nos preguntará por el período de validez de la clave y por detecto nos ofrecerá la opción 0 = la clave nunca caduca. Elegimos la opción por defecto.

Nos preguntará si es correcto. Respondemos que sí (s).

Nos preguntará el nombre y apellidos. Introducimos nuestro nombre y apellidos.

Nos pedirá que introduzcamos nuestra dirección de correo. Así que la introducimos.

Nos ofrecerá la posibilidad de poner un comentario. Pulsamos Enter para dejarlo vacío.

Para terminar, suponiendo que hemos introducido todos los datos correctamente, pulsaremos (V) de (V)ale.

Y, ya por último, nos pedirá que introduzcamos una frase de contraseña. La introducimos y repetimos cuando nos lo pida.

Al final nos mostrará la clave generada. Si se nos ha escapado por lo que sea y no la hemos visto, ejecutamos:

$ gpg --list-keys
/home/enam0000/.gnupg/pubring.gpg
---------------------------------
pub   1024D/153F5386 2009-12-01
uid                  Esteban M. Navas Martín (Administrador Informatico) 
sub   2048g/83061C03 2009-12-01

Copiamos el identificador de la clave pública para introducirlo posteriormente en el fichero /var/www/iesvalledeljerte3/conf/distributions. En mi caso: 153F5386[code]

Exportamos la clave pública en un archivo y la copiamos en el directorio principal del repositorio:

[code]$ gpg  --armor --export 153F5386 > /var/www/iesvalledeljerte3/iesvalledeljerte3.asc

A continuación creamos un fichero donde vamos a definir las distribuciones con las que vamos a trabajar:

$ nano /var/www/iesvalledeljerte3/conf/distributions

Origin: IES Valle del Jerte 
Label: Debian Squeeze packages
Suite: squeeze
Codename: squeeze
Architectures: i386 amd64
Components: main
Description: Paquetes adicionales para el IES
DebIndices: Packages Release . .gz .bz2
SignWith: 153F5386[/quote]

Cuando tengamos todo lo anterior, entramos en el directorio del repositorio:

[quote]$ cd /var/www/iesvalledeljerte3


Y ejecutamos:

$ reprepro -VVV export

Al ejecutar el comando anterior, en alguna ocasión he tenido problemas con la clave. Si tuviérais algún problema como yo, siempre podéis ejecutar el comando anterior con el parámetro --ask-passphrase:

$ reprepro --ask-passphrase -VVV export

A continuación creamos los enlaces simbólicos:

$ reprepro -VVV createsymlinks 

Agregar paquetes binarios a nuestro repositorio
Para agregar paquetes binarios (.deb), nos situamos en la carpeta raíz del repositorio (siguiendo el ejemplo: /var/www/iesvalledeljerte3) y ejecutamos el siguiente comando:

$ reprepro --ask-passphrase includedeb [DISTRIBUCION] [PAQUETE]

Ejemplo:
$ reprepro --ask-passphrase includedeb squeeze /home/enam0000/Java-package/oracle-j2re1.7_1.7.0+update7_amd64.deb

$ reprepro --ask-passphrase includedeb squeeze /home/enam0000/Java-package/oracle-j2re1.7_1.7.0+update7_i386.deb


Nos preguntará por la frase de paso. La introducimos y al terminar incluirá nuestro paquete binario en el repositorio.

Eliminar paquetes binarios del repositorio

Eliminar un paquete de una rama de nuestro repositorio es sencillo:

$ reprepro --ask-passphrase remove [DISTRIBUCION] [PAQUETE] 

Ejemplo:
$ reprepro --ask-passphrase remove squeeze oracle-j2re1.7


Usar el repositorio en nuestros clientes
Una vez hecho todo lo anterior, ya podemos usar el repositorio en nuestros clientes.

Creamos un archivo en el cliente para nuestro repositorio:

# nano /etc/apt/sources.list.d/iesvalledeljerte3.list[/quote]

Con el siguiente contenido:

[quote]deb http://servidor/repositorio [DISTRIBUCIÓN] [COMPONENTES]


Siguiendo con el ejemplo en distribución especificamos squeeze, tal y como indicamos en el archivo de configuración /var/www/iesvalledeljerte3/conf/distributions y como componentes main (no hemos creado otro).

deb http://servidor/iesvalledeljerte3 squeeze main

Seguidamente descargamos la clave pública de nuestro repositorio, que ya subimos al servidor en el cliente y la añadimos mediante apt-key:

# wget http://servidor/iesvalledeljerte3.asc
# apt-key add iesvalledeljerte3.asc 


Por último, haremos un apt-get update en el cliente para actualizar la lista de paquetes y ya podremos instalar lo que queramos desde nuestro repositorio.

Listar los paquetes disponibles en nuestro repositorio
Si queremos ver la lista de paquetes que tenemos agregados en nuestro repositorio, tan sólo tenemos que ejecutar:

# reprepro list "rama-de-repositorio"

Por ejemplo: Si quiero ver los paquetes que tengo en la rama squeeze de mi repositorio, ejecuto el siguiente comando:

# reprepro list squeeze

Y obtendré una lista en la que puedo ver los paquetes, la sección en la que están incluidos y la arquitectura:

squeeze|main|i386: firefox 18.0-2
squeeze|main|i386: iceweasel 17.0-1~bpo60+1
squeeze|main|i386: iceweasel-l10n-es-es 1:17.0-1~bpo60+1
squeeze|main|i386: java-package 0.51~exp1
squeeze|main|i386: nixnote 1.4
squeeze|main|i386: oracle-java7-jre 7.11
squeeze|main|i386: pkg-mozilla-archive-keyring 1.1
squeeze|main|i386: skype 4.0.0.7-1
squeeze|main|i386: xulrunner-17.0 17.0-1~bpo60+1
squeeze|main|amd64: firefox 18.0-2
squeeze|main|amd64: iceweasel-l10n-es-es 1:17.0-1~bpo60+1
squeeze|main|amd64: java-package 0.51~exp1
squeeze|main|amd64: libsqlite3-0 3.7.13-1~bpo60+1
squeeze|main|amd64: nixnote 1.4
squeeze|main|amd64: oracle-java7-jre 7.11
squeeze|main|amd64: pkg-mozilla-archive-keyring 1.1


Agregar paquetes sin sección o prioridad a nuestro repositorio
A veces queremos añadir ciertos paquetes a nuestro repositorio y éstos carecen de información de sección a la que pertenecen o prioridad, por ejemplo. O incluso, puede que tengan dicha información pero queremos cambiarla.

Para especificar la sección a la que queremos añadir un paquete, usamos el parámetro -S o --section. Por ejemplo: Imaginemos que quiero añadir los paquetes de libreoffice descargados de la web oficial de LibreOffice, que carecen de información de sección:

# reprepro --ask-passphrase -S main includedeb squeeze /var/www/descargas/libreoffice4/*.deb

Y si además, quiero cambiar la prioridad, usaré el parámetro -P o --priority. Por ejemplo: Imaginemos que, además de cambiar la sección quiero asignar una prioridad de 600 a los paquetes que voy a añadir a mi repositorio. No tendría más que hacer lo siguiente:

# reprepro --ask-passphrase -S main -P 600 includedeb squeeze /var/www/descargas/libreoffice4/*.deb
Datos archivados del Taringa! original
243puntos
742visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
6visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

N
Usuario
Puntos0
Posts98
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.