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.
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 | Sì | No |
| Sandboxing | No | Sì | Sì |
| Dipendenze | Librerie del sistema | Incluse | Runtime condivisi |
| Dimensione del pacchetto | Piccola (5-50MB) | Grande (50-500MB) | Media (20-200MB) |
| Richiede root | Sì | Sì | 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:
- 📦 Guida al Gestore di Pacchetti Snap - Pacchetti universali con aggiornamenti automatici e sandboxing
- 📦 Guida al Gestore di Pacchetti Flatpak - App desktop cross-distro con permessi granulari
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!
Link Utili
- Documentazione Ufficiale di Ubuntu
- Guida per l’Utente APT
- Cerca Pacchetti Ubuntu
- Snap Store
- Repository Flathub
- Manuale dell’Amministratore Debian
- Guida per Ubuntu Server
- Manuali:
man apt,man apt-get,man dpkg