Usando los repositorios de CentOS en máquinas con RHEL

Autor: MatthewHyclak

CentOS adiciona valor a la reconstrucción de RHEL mediante varios repositorios, tales como CentOS-Plus y Extras. Además, existen Repositorios de terceros que son de utilidad a los sistemas RHEL ( ej. RPMForge y el de los Extras de Fedora reconstruidos por Karanbir Singh). El problema es que up2date no maneja muy bien los repositorios de yum. Con la transición a yum de RHEL5, ahora las personas puede administrar sus sistemas RHEL con yum.

Para usar los repositorios de CentOS en RHEL necesita:

  1. Instalar yum en RHEL. Nosotros utilizaremos el paquete yum de CentOS y haremos los ajustes necesarios para que trabaje en RHEL.
  2. Permitirle a yum acceder a los repositorios de RHEL. Debido a que Red Had no publica sus repositorios, un espejo tendrá que ser creado. Para los objetivos de este documento utilizaremos la herramienta mrepo de Dag Wieers.
  3. Especificar repositorios adicionales. Los repositorios son administrados generalmente en el directorio /etc/yum.repos.d a través de los ficheros .repo.

1. Preparando Yum

Los siguientes RPMs de CentOS 4, disponibles en http://mirror.centos.org/centos/, serán necesarios.

IMPORTANTE: La versión de yum en CentOS 3 no tiene todas las dependencias que tiene en CentOS 4, de esta forma puede ignorar cualquier dependencia en esta lista que no exista en CentOS 3.

Para poder instalar estos paquetes, debe estar instalado un paquete que suministre "yumconf". En CentOS, este es suministrado por el RPM centos-release. Este RPM no lo podemos utilizar en RHEL, debido a que sobrescribirá /etc/redhat-release, entre otras cosas. Para trabajar en ello, cree un RPM nuevo que contenga los ficheros apropiados. El rpm suministrado más abajo hace justamente eso. El fichero spec para este RPM (redhat-yumconf-4-4.7.el4.nosrc.rpm) contiene:

Summary: RHEL-4 Yum configuration.
Name: redhat-yumconf
Version: 4
Release: 4.7.el4
Copyright: GPL
Group: System Environment/Base
Source0: CentOS-Base.repo
Source1: RHEL-Base.repo
NoSource: 1
BuildArch: noarch
BuildRoot: %{_tmppath}/redhat-yumconf-root
Provides: yumconf
Conflicts: centos-release

%description
Repo files for yum on RHEL 4

%install
mkdir -p $RPM_BUILD_ROOT/etc
mkdir -p $RPM_BUILD_ROOT/etc/yum.repos.d
cp -f %{SOURCE0} $RPM_BUILD_ROOT/etc/yum.repos.d
cp -f %{SOURCE1} $RPM_BUILD_ROOT/etc/yum.repos.d

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(0644,root,root)
%config(noreplace) /etc/yum.repos.d/CentOS-Base.repo
%config(noreplace) /etc/yum.repos.d/RHEL-Base.repo

Usted notará que el fichero RHEL-Base.repo está listado como un fichero NoSource. Como usted debe crear su propio repositorio, no existe forma de saber en cual servidor este repositorio estará, etc. Es recomendable que usted use el fichero CentOS-Base.repo como una plantilla y cree un fichero RHEL-Base.repo que se adapte a su entorno. Una vez que esté en su lugar, ponga este fichero en el directorio SOURCES de su camino de construcción rpm y reconstruya el SRPM redhat-yumconf-4-4.7.el4.nosrc.rpm.

Truco: Si no está seguro donde terminará el repositorio, usted debe crear un fichero vacío por ahora y modificarlo después de que haya creado su espejo.

Una vez que el RPM esté creado e instalado, los RPMs necesarios de yum y sus dependencias pueden ser instalados. El script de más abajo (yum-bootstrap.sh) ayudará a comenzar este proceso.

#!/bin/sh

# Check that the prerequisite of yumconf is installed
rpm -q --whatprovides yumconf 2>&1 >/dev/null
if [ $? != 0 ]; then
        echo "You must have a package installed that provides yumconf."
        echo "See http://wiki.centos.org/HowTos/PackageManagement/YumOnRHEL"
        echo "for more details on how to accomplish this."
        exit 1;
fi

export ARCH=`uname -i`
export BSDIR=/tmp/yum-bootstrap
export SOURCE=http://mirror.centos.org/centos/4/os/$ARCH/CentOS/RPMS

mkdir $BSDIR
wget -P $BSDIR -nH $SOURCE/yum-2.4.3-1.noarch.rpm
wget -P $BSDIR -nH $SOURCE/python-urlgrabber-2.9.8-2.noarch.rpm
wget -P $BSDIR -nH $SOURCE/python-elementtree-1.2.6-4.2.1.$ARCH.rpm
wget -P $BSDIR -nH $SOURCE/python-sqlite-1.1.7-1.2.$ARCH.rpm
wget -P $BSDIR -nH $SOURCE/sqlite-3.3.3-1.2.$ARCH.rpm

rpm -Uvh $BSDIR/yum* $BSDIR/python* $BSDIR/sqlite*

if [ $? -eq 0 ]; then
        rm -rf $BSDIR
fi

# Fix the release package, otherwise $releasever is set to null
sed -i "s/centos-release/redhat-release/" /etc/yum.conf

2. Creando un espejo de RHEL

Como se mencionó más arriba, para usar yum directamente es necesario construir un espejo para los RPMs binarios de RHEL. Comience por instalar mrepo. La forma más fácil de hacer esto es adicionar el repositorio RPMForge (vea Repositorios). Desde RPMForge, instale mrepo, createrepo y hardlink++.

  1. Crear el directorio donde le gustaría almacenar el espejo.
     mkdir /var/mrepo/rhel4as-x86_64
  2. Copiar el fichero systemid desde /etc/sysconfig/rhn a su nuevo directorio.

     cp /etc/sysconfig/rhn/systemid /var/mrepo/rhel4as-x86_64
  3. Modificar el fichero /etc/mrepo.conf incluido para adaptarlo a su entorno. Configure los directorios apropiados, arch y mailto. Usted puede dejar comentada la línea rhnlogin, esto es solo necesario cuando se suscribe a canales. Debido a esto un systemid se ha comenzado a utilizar, este no parece necesitar la contraseña pero le preguntará por una en los casos que sea necesario (ej. usted configura un canal al cual no está suscrito.)

  4. Lo siguiente, es crear un fichero en /etc/mrepo.conf.d para su distribución. El ejemplo que se muestra debajo es para RHEL4 con Extras y Fastrack. Para otros caminos de canales consulte el sitio web de RHN. La página de detalles para cada canal tiene un campo etiqueta (después del Sumario y la Descripción). Esto es lo que usted pone después de rhns:///.

  5. Ahora construya el repositorio con mrepo. Para ello ejecute el comando:
     mrepo -uv rhel4as-x86_64.

/etc/mrepo.conf.d/rhel4as-x86_64.conf:

[rhel4as-x86_64]
name = Red Hat Advanced Server $release ($arch)
release = 4
arch = x86_64
updates = rhns:///rhel-x86_64-as-4
extras = rhns:///rhel-x86_64-as-4-extras
fastrack = rhns:///rhel-x86_64-as-4-fastrack

Es recomendable crear un trabajo de cron que corra mrepo -gu rhel4as-x86_64 para mantener el repositorio actualizado a medida que las actualizaciones son liberadas. Esto es usualmente una vez por semana para RHEL, pero probablemente sea un buen ciclo poner un trabajo corriendo todas las noches, especialmente si hay actualizaciones del repositorio Fastrack o hechos relacionados a la seguridad disponibles.

NOTA: mrepo tiene muchos más usos que simplemente descargar actualizaciones desde RHN. Vea el sitio web de mrepo para más opciones de configuración.

IMPORTANTE: Si está corriendo una máquina que no tiene RHEL (ej. CentOS), para ejecutar mrepo existen algunos aspectos que debe conocer antes:

Es necesario un ajuste para up2date en /etc/sysconfig/rhn/sources, mencionado en http://svn.rpmforge.net/svn/trunk/tools/mrepo/docs/redhat-network.txt - usted debe descomentar la línea que contiene up2date por defecto.

3. Configurando repositorios

En estos momentos, yum debe estar instalado. Para adicionar repositorios adicionales simplemente adicione ficheros .repo a el directorio /etc/yum.repos.d. Puede encontrar más información en como hacer esto en la página es/HowTos/Repositories Repositorios. Algunos asuntos a tener en cuenta antes de comenzar, al menos en RHEL4, es que la mayoría de los repositorios de terceros usan /4/ como la versión de entrega (releasever), sin embargo RHEL usa /4XX/ como versión de entrega, donde XX es WS, ES o AS - en dependencia del tipo de entrega. La forma más fácil de arreglar esto es remplazando todas las referencias de $releasever en los ficheros .repo con 4.

IMPORTANTE: Usando el RPM redhat-yumconf que mostramos arriba, los repositorios base y update de CentOS están habilitados pero restringidos para yum y las dependencias.

Todos los otros repositorios de CentOS están disponibles pero deshabilitados por defecto. Esto es posible alterarlo en la línea de comando con la opción --enablerepo o editando el fichero CentOS-Base.repo para habilitar los otros repositorios. Esto permite el acceso a los paquetes de Valor Agregado, sin tener que convertir una máquina RHEL en una máquina CentOS. Todos los repositorios de CentOS tienen el prefijo c4- al comienzo del nombre (ej. c4-updates), para no crear conflictos con repositorios de nombres similares en su RHEL-Base.repo. Además, esto es conveniente a la hora de hacer cosas como yum --enablerepo=c4-\* .....

es/HowTos/PackageManagement/YumOnRHEL (last edited 2008-11-07 17:31:36 by AlainRegueraDelgado)