Nota

Usa DNF su Oracle Linux

Introduzione

Oracle Linux fornisce la utility dnf, basata su Dandified Yum (DNF), come software client per l'installazione e la gestione dei pacchetti di sistema. Questi pacchetti possono provenire da Unbreakable Linux Network (ULN) o da un server yum Oracle Linux. I pacchetti software vengono installati su un sistema utilizzando comandi dnf standard e dipendono dal sistema che ha abilitato le sottoscrizioni dei canali ULN o i repository yum appropriati. Durante l'installazione o l'aggiornamento dei pacchetti, dnf gestisce automaticamente le dipendenze e i requisiti dei pacchetti.

DNF migliora significativamente funzionalità e prestazioni e offre molte nuove funzionalità, tra cui contenuti modulari e un'API più stabile e documentata, rispetto al comando tradizionale di yum.

Obiettivi

In questo tutorial, imparerai come:

Prerequisiti

Implementa Oracle Linux

Nota: se è in esecuzione nella propria tenancy, leggere il progetto linux-virt-labs GitHub README.md e completare i prerequisiti prima di distribuire l'ambiente di laboratorio.

  1. Aprire un terminale sul Luna Desktop.

  2. Duplicare il progetto linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
  3. Passare alla directory di lavoro.

    cd linux-virt-labs/ol
  4. Installare le raccolte richieste.

    ansible-galaxy collection install -r requirements.yml
  5. Implementare l'ambiente di laboratorio.

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

    L'ambiente di esercitazione pratica gratuito richiede l'aggiunta della variabile local_python_interpreter, che imposta ansible_python_interpreter per le riproduzioni eseguite su localhost. Questa variabile è necessaria perché l'ambiente installa il pacchetto RPM per l'SDK Oracle Cloud Infrastructure per Python, situato sotto i moduli python3.6.

    La forma di distribuzione predefinita utilizza la CPU AMD e Oracle Linux 8. Per utilizzare una CPU Intel o Oracle Linux 9 o 10, aggiungere -e instance_shape="VM.Standard3.Flex" o impostare -e os_version="10", -e os_version="9" o -e os_version="8" nel comando di distribuzione.

    Importante: attendere che il playbook venga eseguito correttamente e raggiungere il task di sospensione. In questa fase del playbook, l'installazione di Oracle Linux è completa e le istanze sono pronte. Prendi nota del gioco precedente, che stampa gli indirizzi IP pubblici e privati dei nodi che distribuisce e qualsiasi altra informazione di distribuzione necessaria durante l'esecuzione del laboratorio.

Utilizzo dei repository DNF

  1. Aprire un terminale e connettersi tramite SSH all'istanza ol-node-01.

    ssh oracle@<ip_address_of_instance>
  2. Recupera una lista di repository abilitati.

    dnf repolist

    DNF cerca nella directory /etc/yum.repos.d i file che terminano in .repo. È possibile passare l'opzione all per visualizzare un elenco dei repository abilitati e disabilitati. Un file di repository può definire uno o più repository e considerare il repository abilitato quando enabled=1 e disabilitato quando enabled=0.

  3. Abilitare un repository.

    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. Disabilitare un repository.

    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. Installare un repository.

    Oracle Linux fornisce repository predefiniti per vari prodotti in formato package. È possibile cercare questi e quindi installarli e abilitarli.

    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

    Anche se non preferito, è anche possibile installare i repository da:

    1. Creazione diretta di un nuovo file .repo in /etc/yum.repos.d
    2. Utilizzo di dnf config-manager --add-repo <repo_file>, che consente l'installazione di un file di repository memorizzato localmente o da un URL
  6. Rimuovere la cache DNF.

    Per facilitare le prestazioni, DNF inserisce i dati nella cache in /var/cache/dnf. A volte i dati inseriti nella cache potrebbero diventare obsoleti e causare l'errore dei comandi dnf. Per risolvere il problema, è possibile rimuovere tutti gli elementi inseriti nella cache.

    dnf clean all

    DNF ricrea automaticamente questa cache nel tempo durante l'esecuzione di vari comandi. Per risolvere un errore del comando, è possibile cancellare la cache e riprovare a eseguire il comando non riuscito.

Gestisci pacchetti e moduli

Nota per Oracle Linux 10: la modularità DNF (moduli e flussi) non è disponibile su Oracle Linux 10. È possibile installare pacchetti standard dal repository AppStream, ma non è possibile abilitare o installare moduli o flussi come nelle release precedenti.

Nei passaggi forniti, in cui viene utilizzata la modularità DNF, le istruzioni si applicano solo a Oracle Linux 8 e Oracle Linux 9.

  1. Recupera un elenco di pacchetti disponibili dai repository abilitati.

    dnf list

    È possibile limitare l'output restituito utilizzando le opzioni installed o available e persino richiedendo un nome di pacchetto specifico come dnf list available git.

  2. Elencare i moduli disponibili.

    dnf module list

    L'output mostra i moduli disponibili per il sistema, i flussi associati e i profili in cui:

    • Name: nome modulo
    • Stream: versione Stream
    • Profiles: profili disponibili e relativo stato
      • common: distribuzione avanzata pronta per la produzione ed è il profilo predefinito
      • development: installa i pacchetti necessari per apportare modifiche al modulo.
      • minimal: installa il set più piccolo di pacchetti che forniscono un'applicazione funzionante

    Utilizzare il suggerimento alla fine dell'output per determinare i flussi e i profili abilitati, disabilitati, installati o predefiniti.

    Analogamente ai pacchetti, è possibile passare un nome di modulo all'opzione list per visualizzare lo stato solo del modulo.

  3. Ottenere informazioni su un pacchetto o modulo.

    dnf info zsh

    In questo caso, zsh è il nome del pacchetto. Lo stesso vale per i moduli, ma si aggiunge il comando module e si aggiunge il modulo specifico, ad esempio dnf module info php. Se sono necessarie informazioni su un determinato flusso di moduli, passare --profile insieme a module:stream anziché al nome del modulo.

    dnf module info --profile php:8.2
  4. Cercare un pacchetto disponibile o installato.

    dnf search php
  5. Cercare il pacchetto che fornisce un nome di file o un comando specifico.

    Il comando provides, con alias whatprovides, trova il pacchetto corrispondente al nome del file. Se non si fornisce un percorso completo, DNF aggiunge al nome del file /usr/sbin e /usr/bin. Per scopi precedenti, aggiunge anche /sbin e /bin.

    dnf provides sudo
  6. Installare un pacchetto.

    sudo dnf install tmux

    Rispondere a y per confermare l'installazione del pacchetto. Evitare questo passaggio aggiuntivo in futuro passando l'opzione -y. DNF, per impostazione predefinita, installa solo i pacchetti dai repository abilitati. Tuttavia, è possibile ignorare questo comportamento predefinito passando l'opzione --enablerepo=<repo name>.

  7. Reinstallare un pacchetto.

    sudo dnf reinstall -y tmux

    Questo comando esegue essenzialmente un dnf remove, quindi un dnf install. La differenza fondamentale è che l'utilizzo della reinstallazione mantiene qualsiasi configurazione personalizzata dei file associati al pacchetto.

  8. Abilitare un modulo.

    Prima di installare i pacchetti da un modulo, è necessario abilitarli.

    Oracle Linux 9:

    sudo dnf module -y enable nginx:1.22

    Oracle Linux 8:

    sudo dnf module -y enable nginx
  9. Installare un modulo.

    Oracle Linux 9:

    sudo dnf module install -y nginx:1.22

    Oracle Linux 8:

    sudo dnf module install -y nginx:1.14

    Dopo aver installato i pacchetti, l'esecuzione di sudo dnf module list nginx mostra un file [i] accanto al profilo 1.22 del flusso common [d].

  10. Rimuovere un pacchetto o un modulo.

    sudo dnf remove -y tmux

    Analogamente, è possibile rimuovere un modulo utilizzando la stessa sintassi sostituendo il nome del pacchetto con module:stream/profile.

  11. Passare a un modulo.

    Il passaggio a flussi di moduli comporta l'aggiornamento o il downgrade del contenuto a una versione diversa dalla versione corrente del sistema. Gestisce anche l'installazione di dipendenze aggiuntive o la rimozione di pacchetti che non sono più necessari.

    sudo dnf module -y switch-to nginx:1.24/common
  12. Disabilitare un modulo.

    sudo dnf module -y disable nginx

    Disabilitando un modulo, si garantisce che la rimozione dei profili installati, tutti i flussi di moduli correlati non siano più disponibili e il servizio RPMS modulare non faccia parte del set di pacchetti. Se DNF rileva eventuali conflitti, l'operazione viene rifiutata. Un motivo per disabilitare un modulo è che nel repository e nell'appstream predefiniti esistono pacchetti più recenti.

  13. Reimpostare un modulo.

    Questa operazione imposta lo stato del modulo in modo che non sia più abilitato o disabilitato. DNF rimuove tutti i profili e sono disponibili solo i package del profilo predefinito.

    sudo dnf module -y reset nginx

Installa gli aggiornamenti della sicurezza

  1. Elenca tutti gli errori disponibili.

    dnf updateinfo list

    L'output mostra i repository abilitati seguiti da ogni aggiornamento. DNF ordina gli errori disponibili in ordine dei loro ID e li identifica ulteriormente in base al loro tipo.

    • Severity/Sec: patch priorità/sicurezza
    • bugfix: correzione bug
    • enhancement: miglioramento delle funzioni

    È possibile aggiungere al comando cves, bugfix o security per limitare l'output solo al tipo di errori specifico specificato. È anche possibile passare --installed per ottenere un elenco di tali correzioni di sicurezza installate sull'host.

  2. Mostra un riepilogo degli errori disponibili.

    dnf updateinfo summary
  3. Ottenere una lista di upgrade della sicurezza in base alla severità.

    È possibile passare l'opzione --sec-severity Critico, Importante, Moderato o Basso.

    dnf updateinfo list --sec-severity=Important

    DNF consente di passare altre opzioni al comando list. È possibile utilizzare --advisory <Advisory ID> per ottenere un avviso specifico o --cve <CVD ID per ottenere un CVE particolare. Utilizzando il comando info anziché list e le opzioni esatte, vengono fornite informazioni dettagliate sull'advisory o sull'ambiente CVE specifico.

  4. Aggiornare ogni pacchetto alla versione più recente.

    sudo dnf upgrade -y

    Facoltativamente, è possibile escludere un pacchetto specifico dall'aggiornamento con l'opzione -x seguita dal nome del pacchetto. Mentre Oracle Linux consiglia di applicare tutti gli errori, il comando upgrade accetta le seguenti opzioni:

    • --cve: aggiorna un singolo ID CVE
    • --advisory: aggiornamento di un singolo ID consultivo
    • --security: aggiorna tutti gli errori relativi alla sicurezza

    In alternativa, un utente può eseguire sudo dnf upgrade-minimal per applicare solo gli aggiornamenti ai pacchetti che forniscono una correzione di bug, un miglioramento o una correzione per un problema di sicurezza.

    Importante: dopo aver eseguito eventuali aggiornamenti del kernel, assicurarsi di effettuare il reboot del sistema. Se non è possibile eseguire il reboot di un sistema, si consiglia di utilizzare Oracle Ksplice per applicare le patch del kernel.

Gestisci gruppi di pacchetti

DNF consente l'installazione, l'aggiornamento o la rimozione dei gruppi di pacchetti. Questi gruppi sono una raccolta di pacchetti dipendenti che hanno uno scopo comune.

  1. Elenca i gruppi disponibili.

    dnf group list
  2. Ottenere un elenco di gruppi che un gruppo contiene.

    dnf group info "Server with GUI"

    Il server con interfaccia utente grafica installa il desktop grafico GNOME.

  3. Mostrare i singoli pacchetti contenuti da un gruppo.

    dnf group info Core
  4. Installare il gruppo.

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

    L'opzione --assumeno risponderà automaticamente a no e salterà l'installazione per risparmiare tempo in questa esercitazione. Lasciare questa opzione fuori dal comando e sostituirla con l'opzione -y per installarla automaticamente. DNF fornisce i comandi dnf group update e dnf group remove per aggiornare e rimuovere i gruppi.

Utilizzare la funzione Cronologia DNF

La funzione Cronologia DNF mostra tutte le azioni eseguite dal comando dnf. La funzione Cronologia consente l'annullamento, il ripristino e il rollback di una transazione DNF specifica. Oltre alla cronologia DNF, le installazioni dei pacchetti, gli aggiornamenti e le rimozioni vengono registrati nel file /var/log/dnf.log.

  1. Elenca tutte le transazioni DNF.

    dnf history

    È possibile ottenere informazioni relative a una delle transazioni eseguendo dnf history info <transaction ID>.

  2. Eseguire il rollback di una transazione specifica.

    L'opzione rollback annullerà tutte le transazioni dopo il valore <transaction ID> specificato. Se si desidera stornare una sola transazione, utilizzare invece undo.

    sudo dnf history rollback <transaction ID>

    Il comando DNF history rollback incrementa l'ID transazione e registra il rollback come transazione univoca.

  3. Ripetere una transazione specifica.

    È possibile redo la transazione specifica e ripetere ciascuna delle relative fasi.

    sudo dnf history redo <transaction ID>

Automatizza applicazione patch

Un'alternativa all'esecuzione manuale di dnf upgrade consiste nell'utilizzare lo strumento automatico DNF. Questo strumento fornisce notifiche automatiche degli aggiornamenti, li scarica e installa automaticamente i pacchetti utilizzando i timer systemd.

  1. Installare il pacchetto richiesto e attivare il timer.

    sudo dnf install dnf-automatic -y
    sudo systemctl enable --now dnf-automatic.timer
  2. Visualizzare la configurazione predefinita upgrade_type.

    Il file di configurazione per DNF Automatic Tool è /etc/dnf/automatic.conf. Per impostazione predefinita, l'aggiornamento automatico si applica a tutti gli aggiornamenti disponibili. È possibile modificare il parametro upgrade_type in security per utilizzare solo gli aggiornamenti di sicurezza.

    grep upgrade_type /etc/dnf/automatic.conf

Passi successivi

In questa esercitazione viene descritto come gestire i pacchetti software nel sistema Oracle Linux e assicurarsi di mantenerli aggiornati con le correzioni di sicurezza più recenti. Quindi aggiorna i tuoi sistemi e consulta la sezione Collegamenti correlati per ulteriori dettagli e corsi di formazione su Oracle Linux.

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare Oracle Help Center.