GentooRsyncMirror

De Gentoo Linux Wiki

Este articulo es parte de las series de HOWTO.
Kernel & Hardware Red y Servicios Portage Relacionado con el Sistema Servidor X Juegos Misceláneos

Tabla de contenidos

[editar] Introducción

En este wiki se mostrará el modo de crear un repositorio local de rsync para Gentoo, algo bastante útil si se usan varias Gentoo's en la subred de la empresa. Además de un servidor Rsync de Gentoo, también se mostrará la configuración necesaria en los demás equipos de la subred, añadiendo la posibilidad de necesitar sincronización con una rama desarrollada por la empresa además de con la rama oficial.

[editar] Gentoo Rsync Mirror

Primero, necesitamos instalar el rsync (si no lo tenemos ya) mediante

Código: Console
 # emerge rsync 

y editar el fichero /etc/conf.d/rsyncd para dejarlo de forma parecida a

Archivo: /etc/conf.d/rsyncd
 RSYNC_OPTS="--config /etc/rsync/rsyncd.conf --address rsync.aplica.intra" 

aunque esto es algo de costumbres, yo prefiero tener los ficheros de configuración en directorios separados (en lugar de todos en /etc), además establecemos la dirección que tendrá el servidor, en nuestro caso rsync.aplica.intra.

El siguiente paso es editar la configuración del rsync, almacenada como indicamos antes en /etc/rsync/rsyncd.conf y que contendrá lo siguiente en nuestro caso:

Archivo: /etc/rsync/rsyncd.conf
# /etc/rsyncd.conf

# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help

# This line is required by the /etc/init.d/rsyncd script
uid = nobody
gid = nobody
use chroot = yes
read only = yes

# Vete de aqui forastero
hosts allow=192.168.0.0/255.255.0.0
hosts deny=*

max connections = 3
motd file = /etc/rsync/msg.motd

pid file = /var/run/rsyncd.pid
use chroot = yes
read only = yes

# Simple example for enabling your own local rsync server
[gentoo]
        path = /usr/portage
        comment = Gentoo Portage tree
        exclude = /distfiles /packages

Tras las directivas de configuración del principio y la indicación del fichero motd que contiene el mensaje que se mostrará al que se sincronice, se especifican los "puertos" de sincronización que ofrecemos, en nuestro caso gentoo . La configuración de cada puerto contiene un directorio a sincronizar, un comentario y ficheros que se van a excluir, los cuales son los de los directorios de distfiles y packages .

[editar] Actualizando el portage ofrecido por el servidor

El servidor debe actualizar diariamente su árbol de portage para cuando se sincronicen los demás equipos. Una sincronización de más de una vez al dia no la considero necesaria, además, al hacer emerge --sync desaconsejan la actualización excesiva, ya que se pueden saturar sus servidores (que es uno de los objetivos, junto con la velocidad, por los que se crea este "mirror"). Para la actualización automática, basta con encargarselo a cualquier servicio de cron

Código: Console
# emerge vixie-cron 
...
# rc-update add vixie-cron default
 * vixie-cron added to runlevel default
# /etc/init.d/vixie-cron start
 * Starting vixie-cron ... 
# echo "emerge --sync" > /etc/cron.daily/portage.cron
# chmod +x /etc/cron.daily/portage.cron

Una vez está todo montado, basta con añadir

 SYNC="rsync://rsync.aplica.intra/rsync" 

en el fichero make.conf de la máquina que deseemos sincronizar contra nuestro servidor.

[editar] Rama de Portage de la empresa

Si nuestra empresa desarrolla su propia rama del árbol de Portage, con ebuilds creados para la instalación de software propio o con modificaciones de ebuilds que se ajustan a nuestras necesidades es posible que necesitemos un mirror con el que los equipos de los desarrolladores puedan sincronizarse. Esto se hace de forma similar a la anterior, aunque las ramas no oficiales tienen algunos cambios a la hora de la sincronización y configuración. Empezaremos con el fichero de configuración del rsync, al que debemos de añadir

Archivo: /etc/rsync/rsyncd.conf
...
[portage_aplica]
        path = /usr/local/portage_overlay
        comment = Gentoo Portage for the Aplica people
        exclude = /distfiles /packages *svn*

con lo que añadimos el puerto de sincronización portage_aplica y lo configuramos como en el primer caso excluyendo adicionalmente todos los ficheros del subversion al tratarse de la rama de desarrollo de la empresa (Aplica monta el sistema de instalación sobre Gentoo y no hay necesidad de que las sincronizaciones envien también información del subversión).

[editar] Configuración del cliente

Una vez rellenado el directorio con los ebuilds dados, pasamos a configurar los clientes para que se sincronicen correctamente, para eso se usa el layman , un programa para manejar ramas no oficiales de Gentoo.

Código: Console
 # emerge layman 

y hacemos caso del comentario de postinstalación

Código: Console
 # echo "source /usr/portage/local/layman/make.conf" >> /etc/make.conf 

Tras lo cual tenemos que indicarle al layman que tenemos una rama, para lo cual tenemos que editar primero el fichero de configuración del layman

Archivo: /etc/layman/layman.conf
# Configuracion estándar del layman
...
# Overlays, añadimos un fichero propio junto a la lista global de overlays
overlays  : http://www.gentoo.org/proj/en/overlays/layman-global.txt
            file:///usr/portage/local/layman/lista.xml

Un overlay no es otra cosa que una rama no oficia de Portage. En el fichero que añadimos (/usr/portage/local/layman/lista.xml) lo único que debemos poner es una descripción de nuestro mirror, de la forma:

Archivo: /usr/portage/local/layman/lista.xml
<?xml version="1.0" ?>
<layman>
  <overlay
      type = "rsync"
      src  = "rsync://rsync.aplica.intra/portage_aplica"
      contact = "pepito@correo.com"
      name = "aplica">
    <link> http://gestion.aplica.intra </link>
    <description>Rama de Portage de Aplica</description>
  </overlay>
</layman>

Tras lo cual, al hacer un

Código: Console
 # layman -L 
veremos nuestro mirror (de nombre "aplica") y podremos añadirlo mediante
Código: Console
 # layman -a aplica 

Una vez añadido, cada vez que queramos sincronizarnos con nuestra rama interna bastará con poner

Código: Console
 # layman -S 

¡Y eso es todo!

Herramientas personales