Note:

Uso de DNF en Oracle Linux

Introducción

Oracle Linux proporciona la utilidad dnf, basada en Dandified Yum (DNF), como el software de cliente para instalar y gestionar paquetes del sistema. Estos paquetes pueden provenir de Unbreakable Linux Network (ULN) o un servidor yum de Oracle Linux. Los paquetes de software se instalan en un sistema mediante comandos dnf estándar y dependen de que el sistema haya activado las suscripciones de canal ULN o los repositorios de yum adecuados. Al instalar o actualizar paquetes, dnf maneja automáticamente las dependencias y los requisitos de los paquetes.

DNF mejora significativamente la funcionalidad y el rendimiento y trae muchas nuevas características, incluyendo contenido modular y una API más estable y documentada, en comparación con el comando tradicional de yum.

Objetivos

En este tutorial, aprenderá a:

Requisitos

Despliegue de Oracle Linux

Nota: Si se ejecuta en su propio arrendamiento, lea el proyecto linux-virt-labs GitHub README.md y complete los requisitos antes de desplegar el entorno de prácticas.

  1. Abra un terminal en Luna Desktop.

  2. Clone el proyecto linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
  3. Cambie al directorio de trabajo.

    cd linux-virt-labs/ol
  4. Instale las recopilaciones necesarias.

    ansible-galaxy collection install -r requirements.yml
  5. Despliegue el entorno de prácticas.

    ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6"

    El entorno de prácticas libres necesita la variable adicional local_python_interpreter, que define ansible_python_interpreter para las reproducciones que se ejecutan en localhost. Esta variable es necesaria porque el entorno instala el paquete RPM para el SDK para Python de Oracle Cloud Infrastructure, que se encuentra en los módulos python3.6.

    La unidad de despliegue por defecto utiliza la CPU AMD y Oracle Linux 8. Para utilizar una CPU Intel u Oracle Linux 9 u 10, agregue -e instance_shape="VM.Standard3.Flex" o defina -e os_version="10", -e os_version="9" o -e os_version="8" en el comando de despliegue.

    Importante: Espere a que el cuaderno de estrategias se ejecute correctamente y alcance la tarea de pausa. En esta etapa del manual, se ha completado la instalación de Oracle Linux y las instancias están listas. Tome nota de la reproducción anterior, que imprime las direcciones IP públicas y privadas de los nodos que despliega y cualquier otra información de despliegue necesaria al ejecutar el ejercicio práctico.

Trabajar con repositorios DNF

  1. Abra un terminal y conéctese mediante SSH a la instancia ol-node-01.

    ssh oracle@<ip_address_of_instance>
  2. Obtener una lista de repositorios activados.

    dnf repolist

    DNF busca en el directorio /etc/yum.repos.d los archivos que terminan en .repo. Puede pasar la opción all para ver una lista de los repositorios activados y desactivados. Un archivo de repositorio puede definir uno o más repositorios y considerar el repositorio activado cuando enabled=1 y desactivado cuando enabled=0.

  3. Active un repositorio.

    Oracle Linux 10:

    sudo dnf config-manager --enable ol10_codeready_builder

    Oracle Linux 9:

    sudo dnf config-manager --enable ol9_codeready_builder

    Oracle Linux 8:

    sudo dnf config-manager --enable ol8_codeready_builder
  4. Desactive un repositorio.

    Oracle Linux 10:

    sudo dnf config-manager --disable ol10_codeready_builder

    Oracle Linux 9:

    sudo dnf config-manager --disable ol9_codeready_builder

    Oracle Linux 8:

    sudo dnf config-manager --disable ol8_codeready_builder
  5. Instale un repositorio.

    Oracle Linux envía repositorios predefinidos para varios productos en formato de paquete. Puede buscarlos y, a continuación, instalarlos y activarlos.

    dnf search oracle*release*

    Oracle Linux 10:

    sudo dnf install -y oracle-instantclient-release-el10

    Oracle Linux 9:

    sudo dnf install -y oracle-instantclient-release-el9

    Oracle Linux 8:

    sudo dnf install -y oracle-instantclient-release-el8

    Aunque no se prefiere, también puede instalar repositorios mediante:

    1. Creación directa de un nuevo archivo .repo en /etc/yum.repos.d
    2. Uso de dnf config-manager --add-repo <repo_file>, que permite instalar un archivo de repositorio almacenado localmente o desde una URL
  6. Elimine la caché DNF.

    Para ayudar con el rendimiento, DNF almacena en caché los datos en /var/cache/dnf. Hay veces que estos datos almacenados en caché pueden quedar obsoletos y provocar el fallo de los comandos dnf. Para solucionar este problema, puede eliminar todos los elementos almacenados en caché.

    dnf clean all

    DNF reconstruye automáticamente esta caché a lo largo del tiempo a medida que ejecuta varios comandos. Para solucionar un fallo de un comando, puede borrar la caché y, a continuación, volver a intentar el comando con fallos.

Gestión de paquetes y módulos

Nota para Oracle Linux 10: la modularidad DNF (módulos y flujos) no está disponible en Oracle Linux 10. Puede instalar paquetes estándar desde el repositorio AppStream, pero no puede activar ni instalar módulos o flujos como en versiones anteriores.

En los pasos proporcionados, donde se utiliza la modularidad DNF, las instrucciones solo se aplican a Oracle Linux 8 y Oracle Linux 9.

  1. Obtenga una lista de los paquetes disponibles de los repositorios activados.

    dnf list

    Puede limitar la salida devuelta mediante las opciones installed o available e incluso solicitando un nombre de paquete específico, como dnf list available git.

  2. Muestre los módulos disponibles.

    dnf module list

    La salida muestra los módulos disponibles para el sistema, los flujos asociados y los perfiles en los que:

    • Name: nombre de módulo
    • Stream: versión de flujo
    • Profiles: perfiles disponibles y su estado
      • common: despliegue reforzado listo para producción y es el perfil por defecto
      • development: instala los paquetes necesarios para realizar modificaciones en el módulo
      • minimal: instala el juego más pequeño de paquetes que proporcionan una aplicación de trabajo

    Utilice la Indicación al final de la salida para determinar qué flujos y perfiles están activados, desactivados, instalados o default.

    De forma similar a los paquetes, puede transferir un nombre de módulo a la opción list para ver el estado de ese módulo.

  3. Obtener información sobre un paquete o módulo.

    dnf info zsh

    En este caso, zsh es el nombre del paquete. Lo mismo ocurre con los módulos, pero agrega el comando module y agrega el módulo específico, como dnf module info php. Si necesita información sobre un flujo de módulo determinado, transfiera --profile junto con el module:stream en lugar del nombre del módulo.

    dnf module info --profile php:8.2
  4. Busque un paquete disponible o instalado.

    dnf search php
  5. Busque el paquete que proporciona un nombre de archivo o un comando específicos.

    El comando provides, con un alias de whatprovides, busca el paquete que coincide con el nombre de archivo. Si no proporciona una ruta de acceso completa, DNF agrega /usr/sbin y /usr/bin al nombre de archivo. Con fines heredados, también agrega /sbin y /bin.

    dnf provides sudo
  6. Instale un software.

    sudo dnf install tmux

    Responda y para confirmar la instalación del paquete. Evite este paso adicional en el futuro pasando la opción -y. DNF, por defecto, sólo instala paquetes de repositorios activados. Sin embargo, puede omitir ese comportamiento predeterminado transfiriendo la opción --enablerepo=<repo name>.

  7. Vuelva a instalar un paquete.

    sudo dnf reinstall -y tmux

    Este comando realiza esencialmente un dnf remove y, a continuación, un dnf install. La diferencia fundamental es que el uso de la reinstalación mantiene cualquier configuración personalizada de archivos asociados con el paquete.

  8. Activar un módulo.

    Antes de instalar paquetes desde un módulo, debe activarlo.

    Oracle Linux 9:

    sudo dnf module -y enable nginx:1.22

    Oracle Linux 8:

    sudo dnf module -y enable nginx
  9. Instalar un módulo.

    Oracle Linux 9:

    sudo dnf module install -y nginx:1.22

    Oracle Linux 8:

    sudo dnf module install -y nginx:1.14

    Después de instalar los paquetes, al ejecutar sudo dnf module list nginx, se muestra un [i] junto al perfil common [d] del flujo 1.22.

  10. Elimine un paquete o módulo.

    sudo dnf remove -y tmux

    De manera similar, puede eliminar un módulo con la misma sintaxis mediante la sustitución del nombre del paquete por module:stream/profile.

  11. Cambiar un módulo.

    El cambio de flujos de módulo hace que el contenido se actualice o se reduzca a una versión diferente de la versión actual del sistema. También gestiona la instalación de dependencias adicionales o la eliminación de paquetes que ya no son necesarios.

    sudo dnf module -y switch-to nginx:1.24/common
  12. Desactivar un módulo seleccionándolo.

    sudo dnf module -y disable nginx

    Al desactivar un módulo, se garantiza la eliminación de los perfiles instalados, que todos los flujos de módulos relacionados dejen de estar disponibles y que el RPMS modular no forme parte del conjunto de paquetes. Si DNF detecta cualquier conflicto, se rechaza la operación. Un motivo para desactivar un módulo es que existen paquetes más recientes en el repositorio y el flujo de aplicaciones por defecto.

  13. Restablezca un módulo.

    Esta operación define el estado del módulo para que ya no esté activado ni desactivado. DNF elimina todos los perfiles y sólo los paquetes del perfil predeterminado están disponibles.

    sudo dnf module -y reset nginx

Instalar actualizaciones de seguridad

  1. Enumerar todos los errores disponibles.

    dnf updateinfo list

    La salida muestra los repositorios activados seguidos de cada actualización. DNF ordena los errores disponibles en orden de sus ID y los identifica más por su tipo.

    • Severity/Sec : parche de prioridad/seguridad
    • bugfix : corrección de errores
    • enhancement: mejora de funciones

    Puede agregar cves, bugfix o security al comando para limitar la salida a ese tipo de error específico. También puede transferir --installed para obtener una lista de las correcciones de seguridad instaladas en el host.

  2. Mostrar un resumen de los errores disponibles.

    dnf updateinfo summary
  3. Obtenga una lista de las actualizaciones de seguridad en función de la gravedad.

    Puede transferir Crítico, Importante, Moderado o Bajo a la opción --sec-severity.

    dnf updateinfo list --sec-severity=Important

    DNF permite transferir otras opciones al comando list. Puede utilizar --advisory <Advisory ID> para obtener un asesor específico o --cve <CVD ID para obtener un CVE concreto. El uso del comando info en lugar de list y las opciones exactas proporcionan información detallada sobre el asesor o CVE específicos.

  4. Actualice cada paquete a su última versión.

    sudo dnf upgrade -y

    Opcionalmente, puede excluir un paquete específico de la actualización con la opción -x seguida del nombre del paquete. Aunque Oracle Linux recomienda aplicar todos los errores, el comando upgrade toma las siguientes opciones:

    • --cve: actualiza un único ID de CVE
    • --advisory: actualizar un único ID de asesor
    • --security: actualiza todos los errores relacionados con la seguridad

    Como alternativa, un usuario puede ejecutar sudo dnf upgrade-minimal para aplicar únicamente actualizaciones a los paquetes que proporcionan una corrección de bugs, una mejora o una corrección para un problema de seguridad.

    Importante: Después de actualizar el núcleo, asegúrese de reiniciar el sistema. Si ejecuta un sistema en el que no es posible reiniciar, se recomienda utilizar Oracle Ksplice para aplicar parches de núcleo.

Gestionar grupos de paquetes

DNF permite la instalación, actualización o eliminación de grupos de paquetes. Estos grupos son una recopilación de paquetes dependientes que tienen un propósito común.

  1. Listado de los grupos disponibles.

    dnf group list
  2. Obtener una lista de los grupos que contiene un grupo.

    dnf group info "Server with GUI"

    El Server with GUI instala el escritorio gráfico de GNOME.

  3. Mostrar los paquetes individuales que contiene un grupo.

    dnf group info Core
  4. Instale el grupo.

    sudo dnf group install "Server with GUI" --assumeno

    La opción --assumeno responderá automáticamente no y omitirá la instalación para ahorrar tiempo en este tutorial. Deje esta opción fuera del comando y sustitúyala por la opción -y para instalarla automáticamente. DNF proporciona los comandos dnf group update y dnf group remove para actualizar y eliminar grupos.

Uso de la Función Historial de DNF

La función de historial de DNF muestra todas las acciones realizadas por el comando dnf. La función de historial permite deshacer, rehacer y deshacer una transacción DNF específica. Además del historial de DNF, las instalaciones, actualizaciones y eliminaciones de paquetes se registran en el archivo /var/log/dnf.log.

  1. Enumere todas las transacciones de DNF.

    dnf history

    Puede obtener información relacionada con una de las transacciones ejecutando dnf history info <transaction ID>.

  2. Realizar un rollback de una transacción específica.

    La opción rollback deshará todas las transacciones después del <transaction ID> especificado. Si solo desea revertir una sola transacción, utilice undo en su lugar.

    sudo dnf history rollback <transaction ID>

    El comando DNF history rollback incrementa el ID de transacción y registra el rollback como una transacción única.

  3. Repita una transacción específica.

    Puede redo la transacción específica y repetir cada uno de sus pasos.

    sudo dnf history redo <transaction ID>

Automatizar la aplicación de parches

Una alternativa a la ejecución manual de dnf upgrade es utilizar la herramienta automática DNF. Esta herramienta proporciona notificaciones automáticas de actualizaciones, las descarga e instala los paquetes automáticamente mediante temporizadores systemd.

  1. Instale el paquete requerido y active el temporizador.

    sudo dnf install dnf-automatic -y
    sudo systemctl enable --now dnf-automatic.timer
  2. Visualice la configuración predeterminada de upgrade_type.

    El archivo de configuración de la herramienta automática DNF es /etc/dnf/automatic.conf. Por defecto, la actualización automática se aplica a todas las actualizaciones disponibles. Puede cambiar el parámetro upgrade_type a security para que solo utilice los cambios de versión de seguridad.

    grep upgrade_type /etc/dnf/automatic.conf

Pasos Siguientes

En este tutorial se explica cómo gestionar paquetes de software en el sistema Oracle Linux y asegurarse de mantenerlo actualizado con las últimas correcciones de seguridad. Por lo tanto, actualice sus sistemas y, a continuación, consulte la sección Enlaces relacionados para obtener más información y formación sobre Oracle Linux.

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre el producto, visite Oracle Help Center.