Para ahorrarnos ancho de banda es conveniente crear repositorios locales de nuestras distribuciones, principalmente de las actualizaciones bases. O por que no tener un espejo de los repositorios oficiales.
En este artículo intentaré darle una pincelada de un método valido para este propósito sin entrar en muchos detalles. Para automatizarlo deberíamos de crear scripts y lo agregamos al cron para que se ejecuten a la hora que nos convenga.
Para crear repositorios necesitaremos la herramienta createrepo
En este artículo intentaré darle una pincelada de un método valido para este propósito sin entrar en muchos detalles. Para automatizarlo deberíamos de crear scripts y lo agregamos al cron para que se ejecuten a la hora que nos convenga.
Para crear repositorios necesitaremos la herramienta createrepo
yum install createrepo yum-utils
El repositorio, para que puedan ser accesibles, debería estar disponible por red, http, ftp, etc. En este ejemplo lo haremos publico por http.
Instalamos Apache
Instalamos Apache
yum install httpd
Configuramos Apache para que inicie automáticamente al iniciar el sistema y iniciamos
chkconfig httpd on
service httpd start
Preparamos nuestro repositorio. Yo acostumbro alojarlo en /home/repo/REPOSITORIO, de esta manera puedo crear un enlace simbolico /var/www/repo/REPOSITORIO y /var/ftp/pub/repo/REPOSITORIO que apunten al primero.
[danispiri@repo /]$ ll /var/www/repo/
total 0
lrwxrwxrwx 1 danispiri danispiri 16 oct 15 2010 adobe -> /home/repo/adobe
lrwxrwxrwx 1 danispiri danispiri 20 jul 21 2010 alldistro -> /home/repo/alldistro
lrwxrwxrwx 1 danispiri danispiri 20 jul 21 2010 al-server -> /home/repo/al-server
lrwxrwxrwx 1 danispiri danispiri 17 jul 21 2010 atrpms -> /home/repo/atrpms
lrwxrwxrwx 1 danispiri danispiri 17 jul 21 2010 centos -> /home/repo/centos
lrwxrwxrwx 1 danispiri danispiri 17 oct 15 2010 elrepo -> /home/repo/elrepo
lrwxrwxrwx 1 danispiri danispiri 15 jul 21 2010 epel -> /home/repo/epel
lrwxrwxrwx 1 danispiri danispiri 21 sep 14 2010 jpackage50 -> /home/repo/jpackage50
lrwxrwxrwx 1 danispiri danispiri 21 jul 21 2010 kbs-centos -> /home/repo/kbs-centos
lrwxrwxrwx 1 danispiri danispiri 17 sep 14 2010 pgdg84 -> /home/repo/pgdg84
lrwxrwxrwx 1 danispiri danispiri 19 jul 21 2010 rpmforge -> /home/repo/rpmforge
lrwxrwxrwx 1 danispiri danispiri 20 oct 15 2010 rpmfusion -> /home/repo/rpmfusion
A fin de ejemplo crearemos el repositorio centos que estará disponible por http
mkdir -p /home/repo/centos
mkdir /var/www/repo
ln -s /home/repo/centos /var/www/repo/centos
Creamos un directorio virtual en Apache para repo
touch /etc/httpd/conf.d/repo.conf
Editamos repo.conf de tal manera que quede como sigue:
Alias /repo /var/www/repo <Directory /var/www/repo> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>
Configuramos SELinux para nuestro directorio virtual
chcon -RLt httpd_sys_content_t /var/www/repo
Dependiendo del método que utilicemos para configurar nuestro firewall, debemos permitir el acceso al puerto 80 a nuestro servidor.
iptables -A INPUT -m tcp -p tcp --dport 80 -j ACCEPT
En cada cliente tendríamos que configurar los repositorios que estamos creando para que puedan acceder a él, esto lo podemos hacer modificando /etc/yum.conf, creando un nuevo fichero de configuración /etc/yum.repos.d/centos-local.repo o incluso modificando el mismo fichero /etc/yum.repos.d/CentOS-Base.repo
Por ejemplo creamos centos-local.repo
Por ejemplo creamos centos-local.repo
touch /etc/yum.repos.d/centos-local.repo
Lo editamos de tal manera que quede como sigue (cambie repo.danispiri.blogspot.com por su host o IP de su servidor):
[centos-local] name=CentOS-$releasever - Local baseurl=http://repo.danispiri.blogspot.com/repo/centos/$releasever/local/ enabled=1 gpgcheck=0
También deberá actualizar el servidor, por lo tanto sería conveniente que configure también con el fichero centos-local.repo
Ahora solo resta descargar los paquetes y construir el repositorio con createrepo.
Un método para mantener un repositorio mínimo de solo las actualizaciones y paquetes necesarios es tener instalado en el servidor la cantidad de paquetes necesarios, ir descargando las actualizaciones periódicamente, copiarlas al depósito y construirlas.
Para éste método necesitaremos el plugin para yum que permite solo descargar rpms sin instalarlos
Ahora solo resta descargar los paquetes y construir el repositorio con createrepo.
Un método para mantener un repositorio mínimo de solo las actualizaciones y paquetes necesarios es tener instalado en el servidor la cantidad de paquetes necesarios, ir descargando las actualizaciones periódicamente, copiarlas al depósito y construirlas.
Para éste método necesitaremos el plugin para yum que permite solo descargar rpms sin instalarlos
yum install yum-plugin-downloadonly
Este método, aunque nos ahorra mucho espacio, es solo adecuado en caso de que dispongamos de configuranciones estándar en todos los clientes, misma distribución, misma versión, misma arquitectura, mismos software. Aunque esto se puede remediar con algunos trucos que no veremos en esta ocación.
Un ejemplo de un script sencillo para CentOS sería:
Un ejemplo de un script sencillo para CentOS sería:
#!/bin/bash ## http://danispiri.blogspot.com releasever=`cat /etc/redhat-release | cut -d \ -f3 | cut -d . -f1` if [ $releasever == release ] ; then releasever=`cat /etc/redhat-release | cut -d \ -f4 | cut -d . -f1` fi basearch=`uname -m` repodir=/home/repo/centos/$releasever ## Descargamos actualizaciones mkdir -p $repodir/local/RPMS yum clean all yum -y --skip-broken --downloadonly --downloaddir=$repodir/local/RPMS update ## Construimos el repositorio createrepo --update $repodir/local mkdir -p /var/www/repo ln -ns /home/repo/centos /var/www/repo/centos chcon -RLt httpd_sys_content_t /var/www/repo yum clean all yum -y --skip-broken update
Agregamos una tarea al cron para que se ejecute automáticamente. A este script lo podemos llamar repolocal.sh y colocarlo en /etc/cron.daily o mejor colocarlo en donde nos parezca mas convenientes y crear en /etc/cron.d un fichero por ejemplo sincronizar
touch /etc/cron.d/sincronizar
que contenga lo siguiente (suponiendo que llamamos repolocal.sh al script y lo colocamos en /home/repo/scripts):
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=danispiri # Descargar 15 5 * * * root sh /home/repo/scripts/repolocal.sh
Cambiamos los permisos de repolocal.sh para que pueda ejecutarse
chmod +x /home/repo/scripts/repolocal.sh
Fijese que este método es básico pero funcional, mas adelante veremos como crear un espejo de los repositorios oficiales para las arquitecturas i386 y x86_64.
HOLA