Lo primero que tenemos que hacer es elegir la ruta del repositorio y crear la estructura de carpetas, vamos a crear la misma estructura que en los repositorios oficiales, en este caso para la versión 5.6 de CentOS i386:
mkdir -p /repo_local/centos/5.6/os/i386/CentOS/
Antes de crear el repositorio debemos instalar una utilidad de yum llamada createrepo:
# yum install createrepo
Una vez instalado podemos crear el repositorio con el siguiente comando:
# createrepo repo_local Saving Primary metadata Saving file lists metadata Saving other metadata
Nota: Este comando hay que ejecutarlo cada vez que añadimos, eliminamos o hacemos algún cambio en los rpm del repositorio.
Una vez creado podemos sincronizar nuestro repositorio con uno de los mirror oficiales de CentOS por rsync o añadir nuestros propios RPM. De momento vamos a hacer la prueba añadiendo un único rpm al repositorio:
# cd /repo_local/centos/5.6/os/i386/CentOS # wget ftp://ftp.udl.es/pub/centos/5.6/os/i386/CentOS/perl-5.8.8-32.el5_5.2.i386.rpm
Antes de empezar a trabajar con él tenemos que activar el repositorio, para ello creamos un nuevo fichero con la configuración del mismo en /etc/yum.repos.d/repo_local.repo (el fichero debe tener la extensión .repo):
[repo_local] name=Repositorio_local_CentOS baseurl=file:///repo_local/ enabled=1 gpgcheck=0
La estructura es sencilla, indicamos el nombre del repositorio, su ruta (podría ser SMB, NFS, HTTP…), si está activado y si usa algún tipo de llave gpg (en este caso no). Ahora ya podemos hacer consultas contra este repositorio, instalar rpm’s, etc. Vamos a consultar el único rpm que hemos metido (perl-5.8.8-32.el5_5.2.i386.rpm). En el comando que veis deshabilito el repositorio base para evitar problemas de prioridades, etc:
# yum --enablerepo=repo_local --disablerepo=base info perl Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile * addons: centos.mirror.xtratelecom.es * extras: centos.mirror.xtratelecom.es * rpmforge: fr2.rpmfind.net * updates: centos.mirror.xtratelecom.es addons | 951 B 00:00 extras | 2.1 kB 00:00 repo_local | 951 B 00:00 rpmforge | 1.1 kB 00:00 updates | 1.9 kB 00:00 Excluding Packages in global exclude list Finished Available Packages Name : perl Arch : i386 Epoch : 4 Version : 5.8.8 Release : 32.el5_5.2 Size : 12 M Repo : repo_local Summary : El lenguaje de programación Perl. URL : http://www.perl.org/ License : Artistic or GPL Description: Perl es un lenguaje de programación de alto nivel derivado : del lenguaje C, de sed, de awk y de los script de la shell. Es adecuado : para la gestión de procesos, de ficheros y en particular de : ficheros de texto. Perl es un lenguaje sencillo y eficaz. Se utiliza : normalmente para la creación de utilidades de administración del sistema : y para la programación de sitios Web. Gran parte de los scripts CGI de la : web están escritos en Perl. Es necesario que instale el paquete perl en su : sistema si desea gestionar los scripts de Perl. : : Instale este paquete si desea programar en Perl o habilitar su sistema : para gestionar los scripts Perl.
Si el repositorio lo quisierais además de para vuestros RPM personalizados para los oficiales de CentOS, deberíais sincronizarlo periódicamente con un mirror oficial y ejecutar después el createrepo. Podéis hacerlo en un cron, siendo el comando algo así:
# rsync -avz centos.mirror.xtratelecom.es::CentOS/5.6 /repo_local/centos/ && createrepo repo_local
Nota: no todos los repositorios aceptan rsync, en la lista de mirrors de CentOS veréis los que sí que lo permiten. El que uso en el ejemplo sí.