Hay circunstancias en las que puede ser recomendable disponer de repositorios de yum locales para la actualización e instalación de paquetes en sistemas CentOS, RHEL, Fedora, etc, sobre todo si manejamos una gran cantidad de servidores y queremos disponer de mayor velocidad, seguridad y centralización. Vamos a ver los pasos necesarios para crear un repositorio local.
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í.
La fuente: http://rm-rf.es/como-crear-un-repositorio-local-de-yum/
Hola, el repo no tiene porque tener esa estructura de carpetas: /repo_local/centos/5.6/os/i386/CentOS, ten en cuenta que lo añades manualmente a un archivo *.repo
En cuanto a prioridades, puedes instalar el plugin yum-priorities y problema resuelto. Le pones 1 a los orignales de Centos y 10 (por ejemplo) al tuyo.
Efectivamente, la ruta es indiferente, en el /etc/yum.repos.d/xxxx se lo dices: baseurl=file:///repo_local/
Tampoco hace falta desactivarlo, pueden coexistir como dices. Buen apunte.
Lo que está interesante es tenerlo actualizado mediante rsync, por eso me he animado a publicarlo.
Saludos!
Excelente Aporte!