yum-plugin-priorities

Muchos encuentran que el plugin priorities es una herramienta útil, siempre que sea adecuadamente configurado, y al usarlo se comprenda su funcionalidad, y se reconozcan sus limitaciones y problemas potenciales. Puede ser usado en conjunto con las opciones 'exclude' y/o 'includepkg', así como con la opción 'enabled=0' para deshabilitar por defecto un repositorio. Esto puede permitirle elegir qué paquetes de un repositorio menos importante podrán sustituir a aquellos de uno más importante.

1. Nomenclatura

Nota: Este plugin ha tenido al menos dos nombres diferentes en el transcurso del tiempo. Actualmente su nombre es yum-priorities en CentOS-5, pero se llamó yum-plugin-priorities en CentOS-4. Funciona en forma substancialmente similar en estas dos versiones mayores de CentOS.

2. Utilización

El plugin priorities puede ser usado para imponer la protección ordenada de los repositorios, asociando prioridades a los repositorios. Los paquetes de repositorios con una menor prioridad nunca serán usados para actualizar paquetes que fueran instalados desde un repositorio de prioridad más alta. Las prioridades también se ponen en vigor cuando se instala un paquete nuevo: si un paquete está en más de un repositorio, será instalado desde el repositorio de más alta prioridad. Este plugin es especialmente útil para cualquiera que use uno o más repositorios de teceros, ya que estos repositorios pueden actualizar archivos de sistema, lo que puede potencialmente comprometer la estabilidad de su instalación CentOS.

Para poder utilizar este plugin, se deben habilitar los plugins en el archivo /etc/yum.conf; ver Plugins de Yum para mayores detalles.

3. Instalación

Puede ser instalado con este comando:

CentOS-4:

yum install yum-plugin-priorities

CentOS-5:

yum install yum-priorities

El plugin priorities está disponible en dos lugares:

Luego de instalar el plugin, verifique que esté habilitado cuando decida usar un archivo. Puede hacer esto editando el archivo /etc/yum/pluginconf.d/priorities.conf, y asegurando que contenga las siguientes líneas:

[main]
enabled=1

4. Descripción de funciones

<!> Por supuesto, una página man es más autorizada que un artículo de wiki.

Algunos paquetes especifican obsoletes (vuelve obsoleto a...) en sus metadatos. Esta propiedad de un paquete especifica qué otros paquetes antiguos con un nombre diferente son reemplazados por este paquete. Esto puede interferir con la protección por prioridades de los paquetes. Esto ocurriría, por ejemplo, si un paquete de un repositorio con baja prioridad contuviera un obsoletes: para un paquete de un repositorio de alta prioridad.

Como ejemplo, si el paquete gconfmm2 fuera instalado desde un repositorio de alta prioridad, y otro paquete (digamos, gconfmm20) dijera reemplazar al paquete obsoleto gconfmm2, entonces yum reemplazaría al paquete gconfmm2 con gconfmm20. Para estas actualizaciones, el plugin puede resolver si realizar o no las transiciones deseadas mediante una regla fija, agregando la siguiente línea a la sección main del archivo /etc/yum/pluginconf.d/priorities.conf:

check_obsoletes=1

Esta es una regla mecánica, que no puede tener conocimiento de cómo realizar análisis ni comprender el proceso de administrar una distribución a través del tiempo, y potencialmente es perjudicial para la buena higiene del sistema. Habilitar ciegamente cualquier conjunto de reglas de priorities equivale a confiar en un piloto automático, incapaz de reaccionar al crecimiento de la distribución. Sin embargo, puede evitar, si se usa adecuada y meditadamente, que un repositorio de terceros reemplace un paquete esencial con un nombre diferente, mediante el uso de obsoletes.

5. Configuración Específica

Con el plugin habilitado, podemos agregar prioridades a los repositorios añadiendo la línea:

priority=N

a la entrada de un repositorio, donde N es un entero de 1 a 99. La prioridad por defecto para los repositorios es 99. Los repositorios con la prioridad numérica más baja tienen la prioridad más alta. Por lo común, es mejor darles muy alta prioridad al menos a los repositorios de Centos base y update. En el siguiente ejemplo del archivo CentOS-Base.repo, los repositorios base y update reciben la prioridad más alta posible (1):

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
priority=1

#released updates 
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
priority=1

#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
priority=1

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
priority=1

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
priority=2

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
priority=2

Nota: El ejemplo más arriba es para CentOS-4. Para CentOS 5,el nombre de archivo RPM-GPG-KEY-centos4 (en la línea gpgkey) debe cambiarse por RPM-GPG-KEY-CentOS-5.

Luego de hacer estos cambios al archivo CentOS-Base.repo, yum nunca actualizará paquetes de los repositorios base y update con paquetes de repositorios con prioridades menores. Esto puede causar que actualizaciones de seguridad, y actualizaciones respin de versión "punto", sean silenciosamente suprimidas, y exponer su sistema a potenciales daños. Vea las advertencias en el encabezado de este artículo.

6. Misceláneas

Algunos ajustes recomendados son:

[base], [addons], [updates], [extras] ... priority=1 

[centosplus],[contrib] ... priority=2

Repositorios de terceros ... priority=N  (donde N es > 10 y basado en nuestra preferencia)

Podemos obtener la lista de repositorios conocidos por nuestro sistema con el comando yum repolist all. Sin embargo, esto no muestra las asignaciones de prioridad. Para esto aplique la línea de comando siguiente. Si no se define ningún número, el valor por defecto es la prioridad más baja (99).

cat /etc/yum.repos.d/*.repo | sed -n -e "/^\[/h; /priority *=/{ G; s/\n/ /; s/ity=/ity = /; p }"  | sort -k3n

7. Nota de advertencia

<!> Nota: Por favor, tenga en cuenta lo que dijo el mantenedor de yum, Seth Vidal,sobre 'yum priorities' en Septiembre de 2009:

Vaya, espero que los usuarios no ajusten las prioridades de yum. Hay tantas cosas de las prioridades
que me dan escalofríos. Podría ser que me recuerdan al 'pinning' de apt y eso me da ganas de aullar.

/!\ Este asunto se discutió en mayor profundidad en la lista de correo a partir de aquí. El artículo Repositorios mencionado en ese hilo, que discute las opciones exclude e includepkg para yum, es el mejor lugar para comenzar a entender priorities.

La principal preocupación es que priorities no tiene ninguna delicadeza al remover paquetes del conjunto de la transacción. Hace difícil determinar qué paquetes serán ignorados y por qué. Aun así, es muy flexible y puede ser muy útil al proveer la mayor lista posible de paquetes disponibles.

es/PackageManagement/Yum/Priorities (last edited 2010-03-20 21:47:22 by EduardoGrosclaude)