Sunday, October 19, 2008

REPOSITORIO LOCAL EN FEDORA 9

Este tutorial muestra como crear un repositorio para Red Local en Fedora 9. Tener un mirror local de Fedora es bastante útil si tenemos que instalar múltiples sistemas en la red local, porque todos los paquetes necesarios pueden ser descargados a través de la conexión LAN, de esta manera hay un ahorro de ancho de banda.

Nota: Originalmente este tutorial se hizo para Fedora 8. Restituyan el número de release (Fedora 7, 8, 9 etc.) donde sea necesario.

No garantizo que esto te funcione!

Nota Preliminar

En este tutorial uso el nombre de host server1.example.com con la direccion IP 192.168.0.100. Estos ajustes podrían ser diferentes para tu caso, así que tendrás que cambiarlos donde sea apropiado.

Quiero crear el repositorio (asumamos en adelante que es para yum) accesible a traves de http; el documento raíz de Apache en Fedora es /var/www/html, así que crearé el repositorio en /var/www/html/yum. Si estas usando un vhost diferente, podrías necesitar cambiar el camino de los accesos.


Instalando Apache

Instalemos Apache

yum install httpd

Luego creamos los accesos de arranque del sistema Apache (de manera que Apache inicie automaticamente cuando el sistema arranque):

chkconfig --levels 235 httpd on

Entonces iniciamos Apache:

/etc/init.d/httpd start


Creando el Repositorio

Primero instalamos la herramienta createrepo:

yum install createrepo

Quiero ubicar los paquetes de Fedora 9 i386 en /var/www/html/yum/base/9/i386 y los de actualización o update en /var/www/html/yum/updates/9/i386, así que creo estos directorios ahora mismo (se ajustan los caminos de acceso en caso que quieras crear un repositorio para versiones anteriores u otra infraestructura):

mkdir -p /var/www/html/yum/base/9/i386
mkdir -p /var/www/html/yum/updates/9/i386

Ahora agreguemos los paquetes a /var/www/html/yum/base/9/i386. La manera más fácil es insertar la última release de tu Fedora DVD, montarlo y copiar los paquetes rpm a /var/www/html/yum/base/9/i386.

cd /mnt
mkdir disco
mount /dev/cdrom /mnt/disco
cd /mnt/disco/Packages
cp -v * /var/www/html/yum/base/9/i386
cd /
umount /mnt/disco

Nota: Si no tiene el disco, pero tiene la imagen iso del disco de instalación vea al final como montar la imagen.

El DVD contiene solamente paquetes básicos. Si quisieras tener todos los paquetes disponibles en /var/www/html/yum/base/9/i386 puedes descargar los paquetes (usando rsync) desde el folder Everything en el mirror de Fedora. Ve a http://mirrors.fedoraproject.org/mirrorlists/publiclist/Fedora/9, encuentra un mirror que ofrezca rsync y descarga los paquetes como se indica a continuación (puede llevar mucho tiempo, así que hay que ser pacientes):

rsync -avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/releases/9/Everything/i386/os/Packages/
/var/www/html/yum/base/9/i386

Asegúrate de usar todas las plecas (/) como se muestra arriba. Debe ser rsync://ftp-stud.hs-esslingen.de/fedora/linux/releases/9/Everything/i386/os/Packages/, no rsync://ftp-stud.hs-esslingen.de/fedora/linux/releases/9/Everything/i386/os/Packages!)

Luego ejecutamos el comando createrepo:

createrepo /var/www/html/yum/base/9/i386

Esto creará un directorio repodata en el directorio /var/www/html/yum/base/9/i386. Su contenido debería de ser como a continuación:

ls -l /var/www/html/yum/base/9/i386/repodata/

[root@server1 /]# ls -l /var/www/html/yum/base/9/i386/repodata/ total 9268

-rw-r--r-- 1 root root 2227275 2007-12-18 21:11 filelists.xml.gz

-rw-r--r-- 1 root root 6487453 2007-12-18 21:11 other.xml.gz

-rw-r--r-- 1 root root 747714 2007-12-18 21:11 primary.xml.gz

-rw-r--r-- 1 root root 951 2007-12-18 21:11 repomd.xml

[root@server1 /]#

Ahora llenemos el directorio de actualizaciones /var/www/html/yum/updates/9/i386. Vamos de nuevo a http://mirrors.fedoraproject.org/mirrorlists/publiclist/Fedora/9, encontramos un mirror que ofrezca rsync y descargamos los paquetes como a continuación:

rsync -avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/updates/9/i386/ --exclude=debug/ /var/www/html/yum/updates/9/i386

De nuevo, asegurémonos de usar todas las plecas (/) como se muestra arriba!

Para hacer que en adelante nuestro mirror local descargue las últimas actualizaciones de manera automática, podemos crear un cron job. Por ejemplo, para descargar las actualizaciones cada segundo día a las 04:23h, creamos el siguiente cron job:

crontab -e

23 4 */2 * * /usr/bin/rsync -avrt rsync://ftp-stud.hs-esslingen.de/fedora/linux/updates/9/i386/
--exclude=debug/ /var/www/html/yum/updates/9/i386

Nuestro mirror esta listo para ser usado.


Configuracion del Cliente

Para hacer que nuestros sistemas Fedora 9 usen el repositorio local, modificamos /etc/yum.conf en cada sistema Fedora 9 (se puede hacer esto mismo en el propio mirror si es lo tenemos corriendo con Fedora 9). Abrimos /etc/yum.conf:

vi /etc/yum.conf

Nota: Si no usamos VI bien, entonces conviene hacerlo con cualquier otro editor.

Encontramos estas dos lineas:

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

... y agregamos lo siguiente bajo esas lineas:

[base-local]
name=Fedora $releasever - $basearch
failovermethod=priority
baseurl=http://192.168.0.100/yum/base/$releasever/$basearch
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
enabled=1
gpgcheck=0

[updates-local]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
baseurl=http://192.168.0.100/yum/updates/$releasever/$basearch/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f$releasever&arch=$basearch
enabled=1
gpgcheck=0

El archivo completo se deberá ver así:

[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
metadata_expire=1800
installonly_limit=2

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

[base-local]
name=Fedora $releasever - $basearch
failovermethod=priority
baseurl=http://192.168.0.100/yum/base/$releasever/$basearch
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
enabled=1
gpgcheck=0

[updates-local]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
baseurl=http://192.168.0.100/yum/updates/$releasever/$basearch/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f$releasever&arch=$basearch
enabled=1
gpgcheck=0

Ahora, cada vez que se use yum y el repositorio local sirva los paquetes solicitados, los paquetes se descargarán y se instalarán desde el repositorio local, lógicamente.


Como montar una imagen ISO

Primero deberá crear un directorio donde montar la imagen. Supongamos que usted tiene la imagen en /home/username/Download/Fedora-9-i386-DVD.iso y vea las siguientes instrucciones:

cd /mnt
mkdir iso
mount /home/username/Download/Fedora-9-i386-DVD.iso -r -t iso9660 -o loop /mnt/iso

una alternativa puede ser tambien la siguiente, ir primero al directorio donde esta la imagen y luego montarla

mkdir /mnt/iso
cd /home/username/Download/
mount Fedora-9-i386-DVD.iso -r -t iso9660 -o loop /mnt/iso

Cuando haya terminado el proceso de copia, puede desmontar esta imagen usando el siguiente comando:

cd /
umount /mnt/iso

No comments: