Network filesystems & file services.
Actualizar paquetes desde la red, un repositorio o el sistema de archivos local.
NOTAS SOLAMENTE
Configuración de repositorios para yum
La configuración de yum se realiza a través del fichero /etc/yum.conf
No suele ser normal que tengamos que tocar la configuración de este fichero salvo la configuración de los repositorios que se realiza en ficheros individuales en un directorio tal como nos indica al final de yum.conf
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
Todo esto viene para que te acuerdes de que para obtener la ayuda de man para configurar estos ficheros deberás buscarla con man yum.conf
. Puede serte muy importante en el examen.
Un vistazo a una instalación de Centos 7 nos mostrará una serie de fichero de configuración de repositorios
[~]# ll -lh /etc/yum.repos.d/
1,7K dic 9 09:59 CentOS-Base.repo
1,3K dic 9 09:59 CentOS-CR.repo
649 dic 9 09:59 CentOS-Debuginfo.repo
290 dic 9 09:59 CentOS-fasttrack.repo
630 dic 9 09:59 CentOS-Media.repo
1,3K dic 9 09:59 CentOS-Sources.repo
2,0K dic 9 09:59 CentOS-Vault.repo
Cada uno de ellos puede incluir uno o más repositorios. Deben acabar en .repo si no el sistemas los obvia (ya sabemos una forma de desactivarlos). Si echamos un ojo a uno. p.e. "Centos-Base.repo" nos encontramos con varias secciones que definen repositorios. Por ejemplo:
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Una breve descripción de las opciones más importantes.
- [base] El identificador para esta sección de repositorio
- name El nombre del repositorio (tal como lo mostrará
yum
- baseurl Excluyente con la siguiente. Dirección "directa" del repositorio. Puede ser http, https, ftp, fs local,...
- mirrorlist Apunta a un archivo que contiene una lista de baseurls. Al usar un archivo con varias nos aseguramos que si una falla puede acceder a otras.
- gpgcheck (0/1) Si va a chequear la clave gpg del repositorio (para verificar que es el "auténtico")
- gpgkey La clave de seguridad del repositorio que normalmente tendremos en local de la primera vez que se usa el repositorio.
- enable (0/1) En este caso no aparece pero se usa mucho para activar o desactivar este repositorio. Por defecto es activado (otra forma de desactivar un repositorio).
(Solo curiosidad). Te preguntarás de donde o#.&%s saca el valor de las variables "$releasever", $basearch, $infra, ... Pues el fichero yum.conf tiene una variable que apunta a un paquete "distroverpkg=centos-release". De dicho paquete centos-release (sería redhat-release para un RHEL) se obtienen las variables
[]# rpm -qa | grep centos-release
centos-release-7-2.1511.el7.centos.2.10.x86_64
O bien con yum info
[]# yum info centos-release
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.heanet.ie
* extras: ftp.heanet.ie
* updates: ftp.heanet.ie
Installed Packages
Name : centos-release
Arch : x86_64
Version : 7
Release : 2.1511.el7.centos.2.10
Size : 35 k
Repo : installed
From repo : base
Summary : CentOS Linux release file
License : GPLv2
Description : CentOS Linux release files
- $releasever = 7.2.1511
- $basearch = x86_64
- $infra = Este parece que no se usa de momento.
En este caso caso nuestro "mirrorlist" sería
mirrorlist=http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=
Si listamos los repositorios con yum nos mostrará los configurados entre ellos el que acabamos de ver:
[]# yum repolist
Complementos cargados:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.heanet.ie
* extras: ftp.heanet.ie
* updates: ftp.heanet.ie
id del repositorio nombre del repositorio estado
base/7/x86_64 CentOS-7 - Base 9.007
extras/7/x86_64 CentOS-7 - Extras 191
updates/7/x86_64 CentOS-7 - Updates 369
repolist: 9.567
Esto es lo mínimo a saber para moverte por la configuración de repositorios. Posteriormente modificaremos alguno para apuntar a una ruta de un Apache "nuestro".
Configuración de Apache para servir directorios navegables.
Esta titulo tan raro de esta sección es ciertamente aclarativo. Para poder servidor un repositorio desde un servidor necesitamos:
- Un servidor http con una configuración adecuada. Apache en este caso pero podría ser otro
- Directorios con los paquetes en el formato adecuado y una BBDD asociada.
- La utilidad para crear / actualizar la BBDD del repositorio,
createrepo
.
Inicialmente vamos a preparar un Apache que nos sirva un directorio "browseable"
Instalación de Apache y preparación de la ruta.
Instalamos Apache y un navegador local para hacer pruebas. Activamos e iniciamos Apache (el puerto en el FW lo habilita ya el instalador).
yum install httpd lynx
systemctl enable httpd
systemctl start httpd
Creamos un directorio en la ruta por defecto que usa Apache para hacerlo más sencillo. La estructura del directorio será conforme a Version / Release para poder crear más repositorios posteriormente con la misma sintaxis.
mkdir -p /var/www/html/repos/centos/7/2/
Normalmente no será necesario hacer nada más ya que en la configuración por defecto de Apache en Centos 7 dejará navegar por dichas rutas -> http://host/repos/... En el examen no tendremos un navegador así que para probarlo usamos lynx que digo yo para algo lo hemos instalado.
lynx http://localhost/repos
Esto nos informará del directorio que estamos usando y nos dejará movernos por estos. Si da algún tipo de error algo está mal.
Obtención de los paquetes.
Para obtener los paquetes tenemos varias opciones. Un par de ellas que combinadas son las mejores probablemente. Copiar los paquetes de una ISO y/o sincronizarlos con un repositorio.
Copia de paquetes de la ISO de Centos en la versión correspondiente.
Esto es tan sencillo como bajar la ISO adecuada de los repositorios correspondientes, montarla y copiar los ficheros.
mkdir -p /var/www/html/repos/centos/7.2.1511/os/x86_64/
mount -t iso9660 CentOS-7-x86_64-DVD-1511.iso /media/
cp -R /media/* /var/www/html/repos/centos/7.2.1511/os/x86_64/
¿Por que hemos creado directorios adicionales? Para no limitarlos. Si navegamos por los mirror de Centos vemos que el equivalente a la ISO base cuando bajas un DVD es ese mismo directorio "../os/x86_64". Podemos tener solo este repositorio pero si queremos crear el resto de repositorios adicionales que no incluye el DVD base como extras, updates, cloud,... también podremos hacerlo. Podríamos no haberlo hecho y servir el "base" directamente en "../7.2.1511/". Sería correcto pero nos limitaríamos.
Podemos irnos a la sección "Pruebas de repositorio local" para ir probándolo.
Sincronización desde un repositorio
PENDIENTE VERIFICAR No funciona desde mv externa... http://www.digitesters.com/create-a-local-centos-mirror-and-use-with-nfs/
Si buscamos en el internete Mirrors de Centos veremos que en el listado aparecen muchos que además de servir por http/https y/ ftp tambien nos facilitan una "dirección" rsync. Usaremos esa dirección para soncronizar con nuestro repositorio.
rsync -avzn rsync://mirror.in2p3.fr/ftp/linux/CentOS/7.2.1511/os/x86_64/ /var/www/html/repos/centos/7.2.1511/os/x86_64/
La -n es para que solo informe de los ficheros que cambian
Podemos verificarlo previamente y posteriormente du -sch /var/www/html/repos/centos/7/2/os/x86_64/ 4.2G /var/www/html/repos/centos/7/2/os/x86_64/ 4.2G total
Pruebas de repositorio local
Para probar nuestro repositorio en red local lo mejor es desactivar el resto. Lo más rápido es renombrar los ficheros (.repo.NO p.e.) o los moverlos a un directorio de Backup. Creamos un fichero p.e. CentOS-Base-local.repo con una configuración nuestra que apunte a nuestro servidor de Apache.
[base_local]
name=CentOS-7.2 Base -LOCAL-
baseurl=http://localhost/repos/centos/7.2.1511/os/x86_64/
gpgcheck=0
Sin complicaciones como variables y sin gpg key (podemos apuntar esta igual a local como estaba en los otros ficheros repo). Lo probamos ahora de forma sencilla con yum repolist
[]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
base_local CentOS-7.2 Base -LOCAL- 3,723
repolist: 3,723
Lo importante es que nos liste el nuestro repositorio y SOBRE TODO el número de paquetes. Si no conecta a nuestro repositorio nos pondrá 0 paquetes. Podemos probar a instalar un paquete que no tengamos, p.e.:
yum install git
Veremos que el nos resuelve dependencias y nos informa que el repositorio de instalación es el nuestro "base_local". Si lo instalamos y hacemos un "yum info git" nos informará que está instalado desde nuestro repositorio.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx APUNTES REVISAR y BORRAR XXXXXXXXXXXXXXX
Creamos fichero de configuración en /var/www/html/ (a la aútra de repos): index.html Y espscificamos en este en formato texto la ubicación del repo. Es algo solo informativo y para que funcione un lynx http://localhost
Crear repositorios locales
Para crear repositorios se usar createrepo
yum install createrepo
Ejemplo (no se hace esto???) createrepo /var/www/html/repos/centos/6/7/
Si echamos un ojo a la página de mirror de centos "https://www.centos.org/download/mirrors/" podemos ver que muchos repositorios incluyen además de una dirección http/ftp otra con rsync. Lo que vamos a hacer es hacer una sincronización en un directorio local:
rsync -avz rsync://mirror.xxxx.zzzz.com/centos/6.7/os/x86_64/ /var/www/html/repos/centos/6/7/
Esto realmente e genial. Se puede empezar probablemente copiando la ISO en dicho directorio. Realmente esto no creo entre en el examen pero...
Seguimos, creando el repositorio (actualizandolo mejo)
createrepo --update /var/www/html/repos/centos/6/7/
Esto es necesario para actualizar la BBDD de paquetes que incluiye
Ayudas.
man yum.conf y buscas por "name=" para ir directo a la sección de definiciones de repos.