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 apache2Reprepro 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/confA continuación vamos a crear una clave con la que firmaremos el repositorio:
cd /var/www/repositorio
$ gpg --gen-keygpg 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-01Copiamos el identificador de la clave pública para introducirlo posteriormente en el fichero /var/www/iesvalledeljerte3/conf/distributions. En mi caso:
153F5386Exportamos la clave pública en un archivo y la copiamos en el directorio principal del repositorio:
$ 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/distributionsOrigin: 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: 153F5386Cuando tengamos todo lo anterior, entramos en el directorio del repositorio:
$ cd /var/www/iesvalledeljerte3Y ejecutamos:
$ reprepro -VVV exportAl 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 exportA continuación creamos los enlaces simbólicos:
$ reprepro -VVV createsymlinks
Agregar paquetes binarios a nuestro repositorioPara 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.debNos preguntará por la frase de paso. La introducimos y al terminar incluirá nuestro paquete binario en el repositorio.
Eliminar paquetes binarios del repositorioEliminar 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 clientesUna 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.listCon el siguiente contenido:
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 mainSeguidamente 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 repositorioSi 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 squeezeY 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 repositorioA 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