Gestione dei pacchetti Ubuntu: foglio di riferimento per APT e dpkg

Comandi essenziali di APT e dpkg per i pacchetti Ubuntu

Il sistema di gestione dei pacchetti di Ubuntu è la colonna vertebrale dell’installazione e della manutenzione del software, rendendolo una conoscenza essenziale per ogni utente Linux o amministratore di sistema.

tetris Questa immagine è generata dal modello AI Flux 1 dev.

Cosa è la gestione dei pacchetti APT?

APT (Advanced Package Tool) è il sistema principale di gestione dei pacchetti di Ubuntu, ereditato da Debian. È uno strumento potente a riga di comando per installare, aggiornare e rimuovere pacchetti software. APT gestisce automaticamente la risoluzione delle dipendenze, si connette ai repository ufficiali di Ubuntu e rappresenta il metodo tradizionale per gestire i pacchetti del sistema su distribuzioni Ubuntu e basate su Debian. Se sei nuovo su Ubuntu, consulta la nostra guida su come installare Ubuntu 24.04 e strumenti utili per iniziare con un sistema correttamente configurato.

Caratteristiche principali:

  • Nativo di Ubuntu/Debian: Integrale, non necessita di installazione aggiuntiva
  • Librerie condivise: Utilizzo efficiente del disco grazie alle dipendenze condivise del sistema
  • Aggiornamenti manuali: Controlli tu quando i pacchetti vengono aggiornati
  • Nessun sandboxing: I pacchetti hanno accesso completo al sistema (adatto per gli strumenti del sistema)
  • Leggero: Nessun demone in background, funziona solo quando richiamato
  • Ecosistema maturo: Decenni di sviluppo, estremamente stabile

Confronto tra Gestori di Pacchetti

Ubuntu supporta diversi sistemi di gestione dei pacchetti. Ecco come le principali operazioni si confrontano:

Operazione APT Snap Flatpak
Cerca apt search keyword snap find keyword flatpak search keyword
Installa sudo apt install package sudo snap install package flatpak install flathub app.id
Elenca installati apt list --installed snap list flatpak list --app
Mostra informazioni apt show package snap info package flatpak info app.id
Aggiorna tutto sudo apt update && sudo apt upgrade sudo snap refresh flatpak update
Aggiorna singolo sudo apt install --only-upgrade pkg sudo snap refresh package flatpak update app.id
Rimuovi sudo apt remove package sudo snap remove package flatpak uninstall app.id
Pulizia sudo apt autoremove snap remove --revision=N flatpak uninstall --unused
Repository /etc/apt/sources.list Snap Store (integrato) Aggiungi con flatpak remote-add

Confronto rapido delle funzionalità

Funzionalità APT Snap Flatpak
Aggiornamenti automatici No No
Sandboxing No
Dipendenze Librerie del sistema Incluse Runtime condivisi
Dimensione del pacchetto Piccola (5-50MB) Grande (50-500MB) Media (20-200MB)
Richiede root No (installazione utente)
Velocità di avvio Veloce Più lenta Veloce
Migliore per Pacchetti del sistema App universali App desktop

Informazioni su questa guida

Questa guida si concentra su APT (apt/apt-get/dpkg) - il sistema tradizionale di gestione dei pacchetti di Ubuntu. APT è essenziale per gestire i pacchetti del sistema, le librerie e i servizi su sistemi Ubuntu e basati su Debian.

Per altri gestori di pacchetti:

Ogni gestore di pacchetti ha i propri vantaggi. Utilizza APT per i pacchetti del sistema e le dipendenze, Snap per la compatibilità tra versioni e aggiornamenti automatici, e Flatpak per le app desktop con permessi granulari.


Gestione dei Pacchetti APT - Guida Dettagliata

Comprendere APT vs apt-get

APT (apt) - Scelta Moderna

Introdotta in Ubuntu 14.04, apt combina funzionalità da apt-get e apt-cache con un’esperienza utente migliorata:

Vantaggi:

  • Barre di progresso e output colorato
  • Comandi più intuitivi
  • Output più pulito per la leggibilità umana
  • Combina funzionalità di diversi strumenti

Quando utilizzarlo: Operazioni interattive quotidiane a riga di comando

apt-get - Scelta Tradizionale

Lo strumento originale di gestione dei pacchetti, ancora ampiamente utilizzato:

Vantaggi:

  • API più stabile (migliore per gli script)
  • Compatibilità all’indietro
  • Formato di output prevedibile
  • Controllo più fine-grained

Quando utilizzarlo: Script shell, automazione, sistemi legacy

Consiglio Pro: Per una navigazione più rapida del terminale e un’efficienza del flusso di lavoro, consulta la nostra guida alle scorciatoie del tastierino per Ubuntu per migliorare la tua produttività durante la gestione dei pacchetti.

Comandi Essenziali per la Gestione dei Pacchetti

Aggiornare gli Elenchi dei Pacchetti

Aggiorna sempre gli elenchi dei pacchetti prima di installare o aggiornare:

# Aggiorna l'indice dei pacchetti
sudo apt update

# O con apt-get
sudo apt-get update

Questo comando aggiorna il database locale con informazioni sui pacchetti disponibili e sulle loro versioni dai repository configurati.

Installare Pacchetti

Installazione base:

# Installa un singolo pacchetto
sudo apt install package-name

# Installa più pacchetti
sudo apt install package1 package2 package3

# Installa una versione specifica
sudo apt install package-name=version-number

Esempi:

# Installa il server web Nginx
sudo apt install nginx

# Installa Python e pip
sudo apt install python3 python3-pip

# Installa gli strumenti essenziali per la compilazione
sudo apt install build-essential

# Installa strumenti di monitoraggio del sistema
sudo apt install htop

Per esigenze di monitoraggio specializzate, ad esempio il tracciamento delle prestazioni della GPU su sistemi con schede NVIDIA, consulta la nostra guida su applicazioni di monitoraggio della GPU in Linux/Ubuntu.

Installare senza promemoria (utile per gli script):

sudo apt install -y package-name

# O
sudo DEBIAN_FRONTEND=noninteractive apt install -y package-name

Installare da un file .deb:

# Metodo 1: Utilizzando apt (consigliato, gestisce le dipendenze)
sudo apt install ./package.deb

# Metodo 2: Utilizzando dpkg
sudo dpkg -i package.deb
sudo apt install -f  # Risolvi dipendenze mancanti

Nota: Quando si lavora con file .deb scaricati, potresti voler utilizzare un gestore di file con un menu contestuale buono. Consulta il nostro confronto tra gestori di file per Ubuntu 24.04 (Nautilus vs Nemo vs Dolphin vs Caja) per trovare uno che si adatti al tuo flusso di lavoro.

Aggiornare i Pacchetti

Aggiornare i pacchetti installati:

# Aggiorna tutti i pacchetti (sicuro, non rimuove i pacchetti)
sudo apt upgrade

# Aggiorna un pacchetto specifico
sudo apt install --only-upgrade package-name

# Aggiornamento completo (potrebbe rimuovere i pacchetti per risolvere le dipendenze)
sudo apt full-upgrade

# Aggiornamento della distribuzione (per gli aggiornamenti di versione principale)
sudo apt dist-upgrade

Sequenza completa di aggiornamento:

# Procedura di aggiornamento consigliata
sudo apt update
sudo apt upgrade -y
sudo apt autoremove
sudo apt autoclean

Aggiornamento della versione di Ubuntu:

# Per l'aggiornamento da LTS a LTS successivo
sudo do-release-upgrade

# Per qualsiasi aggiornamento di versione
sudo do-release-upgrade -d

Elenco dei Pacchetti

Elenco dei pacchetti installati:

# Tutti i pacchetti installati
apt list --installed

# Con filtro grep
apt list --installed | grep package-name

# Conta i pacchetti installati
apt list --installed | wc -l

# Utilizzando dpkg
dpkg -l
dpkg --list
dpkg -l | grep package-name

Elenco dei pacchetti aggiornabili:

# Mostra i pacchetti con aggiornamenti disponibili
apt list --upgradable

# Simulazione dettagliata dell'aggiornamento
apt list --upgradable -a

Elenco di tutti i pacchetti disponibili:

# Tutti i pacchetti nei repository
apt list

# Elenco da un repository specifico
apt list | grep "source-name"

Ricerca di Pacchetti

Ricerca di nomi e descrizioni dei pacchetti:

# Ricerca con apt
apt search keyword

# Ricerca non sensibile al caso
apt search -i keyword

# Mostra solo i nomi dei pacchetti
apt-cache search keyword

# Ricerca solo i nomi dei pacchetti (più veloce)
apt-cache search --names-only keyword

Esempi:

# Ricerca per editor
apt search text editor

# Ricerca per database
apt search database

# Ricerca per pacchetti Python
apt search python | grep python3

Visualizzazione delle Informazioni sui Pacchetti

Informazioni dettagliate sui pacchetti:

# Mostra dettagli del pacchetto
apt show package-name

# Utilizzando apt-cache
apt-cache show package-name

# Mostra le dipendenze del pacchetto
apt-cache depends package-name

# Mostra le dipendenze inverse
apt-cache rdepends package-name

# Controlla la politica e le versioni del pacchetto
apt-cache policy package-name

# Mostra le statistiche del pacchetto
apt-cache stats

Controlla se il pacchetto è installato:

# Metodo 1
dpkg -s package-name

# Metodo 2
dpkg -l package-name

# Metodo 3
apt list --installed package-name

# Metodo 4 (codice di uscita 0 se installato)
dpkg-query -W package-name

Rimozione dei Pacchetti

Rimuovi i pacchetti:

# Rimuovi il pacchetto (mantiene i file di configurazione)
sudo apt remove package-name

# Rimuovi il pacchetto e i file di configurazione (pulizia)
sudo apt purge package-name

# Rimuovi con le dipendenze
sudo apt autoremove package-name

# Rimuovi completamente il pacchetto e le configurazioni
sudo apt purge package-name && sudo apt autoremove

Pulizia del sistema:

# Rimuovi le dipendenze non utilizzate
sudo apt autoremove

# Rimuovi con pulizia
sudo apt autoremove --purge

# Elimina i file dei pacchetti scaricati
sudo apt clean

# Elimina le vecchie versioni dei pacchetti
sudo apt autoclean

Controlla l’utilizzo del disco:

# Controlla la dimensione del cache
du -sh /var/cache/apt/archives

# Controlla la dimensione totale dei pacchetti
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n

Blocco dei Pacchetti (Prevenire gli Aggiornamenti)

Blocca i pacchetti:

# Blocca il pacchetto alla versione corrente
sudo apt-mark hold package-name

# Sblocca il pacchetto
sudo apt-mark unhold package-name

# Mostra i pacchetti bloccati
apt-mark showhold

# Blocca più pacchetti
sudo apt-mark hold package1 package2 package3

Utilizzo: Impedire che determinate versioni di software vengano aggiornate automaticamente.

Utilizzo di dpkg - Strumento di Gestione dei Pacchetti di Livello Basso

dpkg è il gestore di pacchetti sottostante che APT utilizza:

Comandi base di dpkg:

# Installa il pacchetto
sudo dpkg -i package.deb

# Rimuovi il pacchetto
sudo dpkg -r package-name

# Pulisci il pacchetto
sudo dpkg -P package-name

# Elenco dei pacchetti installati
dpkg -l

# Elenco dei file nel pacchetto
dpkg -L package-name

# Trova quale pacchetto possiede un file
dpkg -S /path/to/file

# Controlla lo stato del pacchetto
dpkg -s package-name

# Reconfigura il pacchetto
sudo dpkg-reconfigure package-name

# Verifica l'integrità del pacchetto
dpkg -V package-name

Risolvere pacchetti danneggiati:

# Reconfigura i pacchetti danneggiati
sudo dpkg --configure -a

# Risolvi dipendenze mancanti
sudo apt install -f

# Forza reinstallazione
sudo apt install --reinstall package-name

Gestione dei Repository

Visualizzazione dei Repository

Controlla i repository configurati:

# Visualizza la lista delle fonti
cat /etc/apt/sources.list

# Visualizza le fonti aggiuntive
ls /etc/apt/sources.list.d/

# Visualizza tutti i repository abilitati
grep -r --include '*.list' '^deb ' /etc/apt/

Aggiungere Repository

Aggiungi un PPA (Personal Package Archive):

# Aggiungi il repository PPA
sudo add-apt-repository ppa:user/ppa-name
sudo apt update

# Esempio: Aggiungi il PPA Git
sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt install git

Aggiungi un repository manualmente:

# Aggiungi il repository alla sources.list
echo "deb http://repository-url distribution component" | sudo tee -a /etc/apt/sources.list.d/custom.list

# Aggiungi la chiave GPG
wget -qO - https://example.com/key.gpg | sudo apt-key add -

# Aggiorna gli elenchi dei pacchetti
sudo apt update

Gestione moderna delle chiavi (Ubuntu 22.04+):

# Scarica e aggiungi la chiave al keyring
wget -qO - https://example.com/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/custom.gpg

# Aggiungi il repository firmato
echo "deb [signed-by=/etc/apt/keyrings/custom.gpg] http://repo-url dist component" | sudo tee /etc/apt/sources.list.d/custom.list

Rimozione dei Repository

# Rimuovi il PPA
sudo add-apt-repository --remove ppa:user/ppa-name

# O elimina il file della lista
sudo rm /etc/apt/sources.list.d/ppa-name.list

# Aggiorna
sudo apt update

Gestori di Pacchetti Alternativi

Ubuntu supporta anche Snap e Flatpak per il packaging universale delle applicazioni:

  • Snap: Consulta la nostra guida completa su Snap Package Manager per informazioni dettagliate sull’installazione, utilizzo, canali, confinamento e risoluzione dei problemi.

  • Flatpak: Consulta la nostra guida completa su Flatpak Package Manager per informazioni dettagliate sull’installazione, Flathub, permessi, runtime e gestione.

Gestione dei Pacchetti Avanzata

Simulare Operazioni (Run Dry)

# Simulazione di installazione
apt install -s package-name

# Simulazione di aggiornamento
apt upgrade -s

# Mostra cosa verrebbe installato
apt-cache showpkg package-name

Scaricare Pacchetti Senza Installarli

# Scarica solo il pacchetto
apt download package-name

# Scarica con le dipendenze
apt install --download-only package-name

# Scarica in una directory specifica
cd /path/to/dir
apt download package-name

Trovare i File dei Pacchetti

# Quale pacchetto fornisce un file
dpkg -S /path/to/file

# Cerca file nei pacchetti (inclusi quelli non installati)
apt-file search filename

# Installa apt-file prima
sudo apt install apt-file
sudo apt-file update

Blocco dei Pacchetti

Crea /etc/apt/preferences per controllare le versioni dei pacchetti:

# Blocca il pacchetto a una versione specifica
sudo nano /etc/apt/preferences

Aggiungi:

Package: package-name
Pin: version 1.2.3*
Pin-Priority: 1001

Controllare le Vulnerabilità dei Pacchetti

# Controlla gli aggiornamenti di sicurezza
sudo apt list --upgradable | grep security

# Controlla un pacchetto specifico per i CVE
apt-cache policy package-name

Risoluzione dei Problemi Comuni

Risolvere Pacchetti Danneggiati

# Metodo 1: Risolvi le dipendenze
sudo apt install -f

# Metodo 2: Reconfigura i pacchetti
sudo dpkg --configure -a

# Metodo 3: Pulisci e aggiorna
sudo apt clean
sudo apt update
sudo apt upgrade

# Metodo 4: Risolvi forzatamente
sudo apt --fix-broken install

Risolvere l’errore “Database Bloccato”

# Rimuovi i file di blocco (solo se non c'è un processo apt in esecuzione!)
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock
sudo dpkg --configure -a

Controlla prima i processi in esecuzione:

ps aux | grep -i apt
sudo lsof /var/lib/dpkg/lock-frontend

Errore di Mismatch della Somma di Controllo

# Pulisci il cache e riprova
sudo apt clean
sudo rm -rf /var/lib/apt/lists/*
sudo apt update

Errori GPG/Chiave

# Reaggiungi la chiave
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEY_ID

# O scarica la chiave
wget -qO - https://repo-url/key.gpg | sudo apt-key add -

# Approccio moderno (Ubuntu 22.04+)
wget -qO - https://repo-url/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/repo.gpg

Dipendenze Non Soddisfatte

# Prova con aptitude (risolutore di dipendenze migliore)
sudo apt install aptitude
sudo aptitude install package-name

# O risoluzione manuale
sudo apt install package-name package-dependency

Repository Non Trovato (404)

# Aggiorna al repository corretto
sudo nano /etc/apt/sources.list

# Cambia il nome della versione vecchia a quella corrente
# O rimuovi il PPA obsoleto
sudo add-apt-repository --remove ppa:name/ppa

Linee Guida per la Gestione dei Pacchetti

Manutenzione Regolare

Routine settimanale:

#!/bin/bash
# Script di aggiornamento del sistema

echo "Aggiornamento degli elenchi dei pacchetti..."
sudo apt update

echo "Aggiornamento dei pacchetti..."
sudo apt upgrade -y

echo "Rimozione di pacchetti non utilizzati..."
sudo apt autoremove -y

echo "Pulizia del cache dei pacchetti..."
sudo apt autoclean

echo "Aggiornamento completato!"

Aggiornamenti di Sicurezza

Aggiornamenti automatici per le patch di sicurezza:

# Installa unattended-upgrades
sudo apt install unattended-upgrades

# Configura
sudo dpkg-reconfigure unattended-upgrades

# Modifica la configurazione
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Configurazione del server: Se gestisci un server Ubuntu, una corretta configurazione di rete è essenziale per un affidabile download dei pacchetti e degli aggiornamenti del sistema. Impara come cambiare un indirizzo IP statico in Ubuntu Server per garantire una connettività stabile per le tue operazioni di gestione dei pacchetti.

Backup dell’Elenco dei Pacchetti

Esporta i pacchetti installati:

# Crea un backup
dpkg --get-selections > ~/package-list.txt

# O con pacchetti installati espliciti
apt-mark showmanual > ~/manually-installed.txt

# Ripristina su un altro sistema
sudo dpkg --set-selections < ~/package-list.txt
sudo apt-get dselect-upgrade

Controlla la Salute del Sistema

# Controlla le dipendenze danneggiate
sudo apt check

# Verifica tutti i pacchetti
sudo debsums -c

# Controlla i log del sistema
journalctl -xe | grep -i apt
tail -f /var/log/apt/history.log

Ottimizzazione delle Prestazioni

Scaricamento dei Pacchetti Più Veloci

Abilita il Download Parallelo:

Modifica /etc/apt/apt.conf.d/99parallel:

echo 'Acquire::Queue-Mode "host";' | sudo tee /etc/apt/apt.conf.d/99parallel
echo 'Acquire::http::Pipeline-Depth "5";' | sudo tee -a /etc/apt/apt.conf.d/99parallel

Utilizza il Mirror Più Veloce:

# Installa apt-fast
sudo add-apt-repository ppa:apt-fast/stable
sudo apt update
sudo apt install apt-fast

# Utilizza apt-fast al posto di apt
sudo apt-fast install package-name

Ridurre la Dimensione del Cache

# Limita il cache a 100MB
echo 'APT::Archives::MaxSize "100";' | sudo tee /etc/apt/apt.conf.d/99max-cache

Script Utili per la Gestione dei Pacchetti

Aggiorna Tutti i Gestori di Pacchetti

#!/bin/bash
# Aggiorna tutti i gestori di pacchetti

echo "=== Aggiornamento APT ==="
sudo apt update && sudo apt upgrade -y

echo "=== Aggiornamento Snap ==="
sudo snap refresh

echo "=== Aggiornamento Flatpak ==="
flatpak update -y

echo "Tutti i sistemi aggiornati!"

Trova i Pacchetti Più Grandi

# Elenco dei pacchetti installati più grandi
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head -20

# O in formato più leggibile
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head -20 | awk '{printf "%.2f MB\t%s\n", $1/1024, $2}'

Audit dei Pacchetti

#!/bin/bash
# Audit del sistema dei pacchetti

echo "=== Statistiche del sistema dei pacchetti ==="
echo "Pacchetti installati: $(dpkg -l | grep ^ii | wc -l)"
echo "Pacchetti aggiornabili: $(apt list --upgradable 2>/dev/null | grep -c upgradable)"
echo "Pacchetti bloccati: $(apt-mark showhold | wc -l)"
echo "Auto-eliminabili: $(apt autoremove --dry-run | grep -Po '^\d+')"
echo "Dimensione del cache: $(du -sh /var/cache/apt/archives | cut -f1)"

Rapido Riferimento per la Guida

Comandi Essenziali:

# Aggiorna & Aggiorna
sudo apt update && sudo apt upgrade -y

# Installa pacchetto
sudo apt install package-name

# Rimuovi pacchetto
sudo apt remove package-name

# Cerca pacchetto
apt search keyword

# Mostra informazioni sul pacchetto
apt show package-name

# Elenco installati
apt list --installed

# Pulizia del sistema
sudo apt autoremove && sudo apt autoclean

# Risolvi pacchetti danneggiati
sudo apt install -f && sudo dpkg --configure -a

Conclusione

Mastricare il sistema di gestione dei pacchetti di Ubuntu è essenziale per un’efficiente amministrazione del sistema. Che tu stia utilizzando il moderno comando apt per sessioni interattive, apt-get per gli script, o esplorando pacchetti universali con Snap e Flatpak, comprendere questi strumenti ti aiuterà a mantenere un sistema Ubuntu sicuro, aggiornato e ben organizzato.

Inizia con i comandi di base, incorpora gradualmente le tecniche avanzate e mantieni sempre aggiornato il tuo sistema. La manutenzione regolare, combinata con le linee guida, garantisce un’esperienza Ubuntu fluida e affidabile.

Consiglio Pro: Esegui sempre sudo apt update prima di installare o aggiornare i pacchetti per assicurarti di lavorare con le informazioni sui pacchetti più recenti!

Articoli Correlati su Questo Sito