Uno de los cambios más radicales en CentOS 8 ha sido la sustitución del gestor de paquetes YUM por DNF, en la mayoría de los sitios comentan que la transición es casi trivial, pero esto no es del todo cierto, en este post veremos algunas consideraciones sobre este cambio.
Primero veamos las 3 razones que se esgrimen para haber levado a cabo este cambio:
- La documentación de yum es casi inexistente para ampliar su funcionalidad
- YUM no soporta Python 3
- El gestor de dependencias utilizado por DNF es más estándar, ya vine siendo utilizado por SUSE hace mucho tiempo dentro de zypper.
Ahora bien, pese a que la sintaxis es básicamente la misma el manejo de repositorios no lo es tanto, se van a poder agregar como se hacía con YUM, incluso dejando en el mismo directorio los archivos .repo pero algunas cosas cambian, en mi caso pondré las diferencias para trabajar con algunas librerías de PHP. Por ejemplo, en vez de habilitar diferentes repos para una u otra versión ahora se habilita un módulo para la versión de PHP y las librerías se instalan utilizando ese modulo.
dnf module -y install php:remi-7.4
Para instalar repositorios podemos hacerlo de la siguiente manera si es un archivo .repo
dnf -y install dnf-plugins-core dnf config-manager --add-repo https://xxxxxx/xxxxxx.repo
O si viene dentro de un .rpm
dnf -y install https://xxxxxx/xxxxxx.rpm
Una de las diferencias que he notado es que con este sistema de módulos algunos repos no vienen activos por defecto, con lo cual no se resuelven correctamente las dependencias, por ejemplo, dan problemas las librerías de mongodb e imagick, para instalarlas es necesario especificar el repo de sus dependencias, un paso más que no teníamos con YUM.
dnf --enablerepo=PowerTools -y install tinyxml2 dnf -y install mediainfo php-pecl-imagick dnf --enablerepo=remi -y install libbson mongo-c-driver dnf -y install php-pecl-mongodb
Los errores de no hacerlo así serían los siguientes
Problem 1: cannot install the best candidate for the job - nothing provides libbson(x86-64) >= 1.16.1 needed by php-pecl-mongodb-1.7.1-1.el8.remi.7.4.x86_64 - nothing provides mongo-c-driver-libs(x86-64) >= 1.16.1 needed by php-pecl-mongodb-1.7.1-1.el8.remi.7.4.x86_64 Problem 2: package mediainfo-19.09-1.el8.x86_64 requires libmediainfo.so.0()(64bit), but none of the providers can be installed - conflicting requests - nothing provides libtinyxml2.so.6()(64bit) needed by libmediainfo-19.09-1.el8.x86_64
Fuente obtenida de: https://scriptinside.blogspot.com/2020/02/centos-8-ahora-viene-con-dnf.html