Linux Professional Institute Learning Logo.
Torna al contenuto principale
  • Home
    • Tutte le Risorse
    • LPI Learning Materials
    • Collabora
    • Publishing Partner
    • Diventa un Publishing Partner
    • FAQ
    • Collaboratori
    • Contatto
  • LPI.org
102.4 Lezione 1
Argomento 101: L'Architettura di Sistema
101.1 Determinare e Configurare le Impostazioni dell'Hardware
  • 101.1 Lezione 1
101.2 Avviare il sistema
  • 101.2 Lezione 1
101.3 Modificare runlevel / target di avvio e spegnere o riavviare il sistema
  • 101.3 Lezione 1
Argomento 102: Installazione di Linux e Gestione dei Pacchetti
102.1 Progettare il layout del disco rigido
  • 102.1 Lezione 1
102.2 Installare un boot manager
  • 102.2 Lezione 1
102.3 Gestire le librerie condivise
  • 102.3 Lezione 1
102.4 Utilizzare la gestione dei pacchetti Debian
  • 102.4 Lezione 1
102.5 Utilizzare la gestione dei pacchetti RPM e YUM
  • 102.5 Lezione 1
102.6 Linux come sistema virtualizzato
  • 102.6 Lezione 1
Argomento 103: GNU e Unix Commands
103.1 Lavorare con la Command Line
  • 103.1 Lezione 1
  • 103.1 Lezione 2
103.2 Elaborare flussi di testo utilizzando i filtri
  • 103.2 Lezione 1
103.3 Eseguire la gestione di base dei file
  • 103.3 Lezione 1
  • 103.3 Lezione 2
103.4 Utilizzare flussi, pipe e reindirizzamenti
  • 103.4 Lezione 1
  • 103.4 Lezione 2
103.5 Creare, controllare e terminare i processi
  • 103.5 Lezione 1
  • 103.5 Lezione 2
103.6 Modificare le priorità di esecuzione del processo
  • 103.6 Lezione 1
103.7 Cercare file di testo utilizzando espressioni regolari
  • 103.7 Lezione 1
  • 103.7 Lezione 2
103.8 Modifica base di un file
  • 103.8 Lezione 1
Argomento 104: Dispositivi, il File System Linux, il Filesystem Hierarchy Standard
104.1 Creare partizioni e filesystem
  • 104.1 Lezione 1
104.2 Mantenere l'integrità dei filesystem
  • 104.2 Lezione 1
104.3 Verificare il montaggio e lo smontaggio dei filesystem
  • 104.3 Lezione 1
104.5 Gestire le autorizzazioni e la proprietà dei file
  • 104.5 Lezione 1
104.6 Creare e modificare collegamenti hard e soft
  • 104.6 Lezione 1
104.7 Trovare i file di sistema e collocarli nella posizione corretta
  • 104.7 Lezione1
How to get certified
  1. Argomento 102: Installazione di Linux e Gestione dei Pacchetti
  2. 102.4 Utilizzare la gestione dei pacchetti Debian
  3. 102.4 Lezione 1

102.4 Lezione 1

Certificazione:

LPIC-1

Versione:

5.0

Argomento:

102 L’Installazione di Linux e la Gestione Pacchetti

Obiettivo:

102.4 Utilizzare la Gestione Pacchetti Debian

Lezione:

1 di 1

Introduzione

Molto tempo fa, quando Linux era ancora agli inizi, il modo più comune per distribuire il software era un file compresso (di solito un archivio .tar.gz) con codice sorgente, che si sarebbe decompresso e compilato per conto proprio.

Tuttavia, con l’aumentare della quantità e della complessità del software, divenne evidente la necessità di un modo per distribuire software precompilato. Dopotutto, non tutti avevano le risorse, sia in termini di tempo sia di potenza di elaborazione, per compilare grandi progetti come il kernel Linux o un X Server.

Presto sono cresciuti gli sforzi per standardizzare la distribuzione di questi “pacchetti” software e sono nati i primi gestori di pacchetti. Questi strumenti hanno reso molto più semplice l’installazione, la configurazione o la rimozione di software da un sistema.

Uno di questi era il formato di pacchetto Debian (.deb) e il suo strumento di gestione (dpkg). Oggi sono ampiamente utilizzati non solo sulla stessa Debian, ma anche sulle sue derivate, come Ubuntu e molte altre.

Un altro strumento di gestione dei pacchetti che è popolare sui sistemi basati su Debian è Advanced Package Tool (apt), che può semplificare molti aspetti dell’installazione, della manutenzione e della rimozione dei pacchetti, rendendolo ancora più semplice.

In questa lezione impareremo come usare sia dpkg sia apt per ottenere, installare, mantenere e rimuovere software su un sistema Linux basato su Debian.

Lo Strumento di Gestione Pacchetti in Debian (dpkg)

Lo strumento Debian Package (dpkg) è il comando essenziale per installare, configurare, mantenere e rimuovere i pacchetti software su sistemi basati su Debian. L’operazione più semplice è installare un pacchetto .deb, che può essere fatto con:

# dpkg -i PACKAGENAME

Dove PACKAGENAME è il nome del file .deb che si desidera installare.

Gli aggiornamenti dei pacchetti vengono gestiti allo stesso modo. Prima di installare un pacchetto, dpkg verificherà se nel sistema esiste già una versione precedente. In tal caso, il pacchetto verrà aggiornato alla nuova versione. In caso contrario, verrà installata una nuova copia.

Gestire le Dipendenze

Molto spesso un pacchetto può dipendere da altri per funzionare a dovere. Per esempio, un editor di immagini potrebbe aver bisogno di librerie per aprire file JPEG o un’altra utility potrebbe aver bisogno di un widget toolkit come Qt o GTK per la sua interfaccia utente.

dpkg controllerà se queste dipendenze sono installate sul sistema e non installerà il pacchetto in mancanza di esse. In questo caso, dpkg elencherà quali pacchetti mancano. Tuttavia, non può risolvere le dipendenze da solo: spetta all’utente trovare i pacchetti .deb con le dipendenze corrispondenti e installarli.

Nell’esempio seguente, l’utente tenta di installare il pacchetto dell’editor video OpenShot, ma mancano alcune dipendenze:

# dpkg -i openshot-qt_2.4.3+dfsg1-1_all.deb
(Reading database ... 269630 files and directories currently installed.)
Preparing to unpack openshot-qt_2.4.3+dfsg1-1_all.deb ...
Unpacking openshot-qt (2.4.3+dfsg1-1) over (2.4.3+dfsg1-1) ...
dpkg: dependency problems prevent configuration of openshot-qt:
 openshot-qt depends on fonts-cantarell; however:
  Package fonts-cantarell is not installed.
 openshot-qt depends on python3-openshot; however:
  Package python3-openshot is not installed.
 openshot-qt depends on python3-pyqt5; however:
  Package python3-pyqt5 is not installed.
 openshot-qt depends on python3-pyqt5.qtsvg; however:
  Package python3-pyqt5.qtsvg is not installed.
 openshot-qt depends on python3-pyqt5.qtwebkit; however:
  Package python3-pyqt5.qtwebkit is not installed.
 openshot-qt depends on python3-zmq; however:
  Package python3-zmq is not installed.

dpkg: error processing package openshot-qt (--install):
 dependency problems - leaving unconfigured
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for gnome-menus (3.32.0-1ubuntu1) ...
Processing triggers for desktop-file-utils (0.23-4ubuntu1) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for man-db (2.8.5-2) ...
Errors were encountered while processing:
 openshot-qt

Come mostrato sopra, OpenShot dipende dai pacchetti fonts-cantarell, python3-openshot, python3-pyqt5, python3-pyqt5.qtsvg, python3-pyqt5.qtwebkit e python3-zmq. Tutti questi devono essere installati prima che l’installazione di OpenShot possa avvenire con successo.

Rimozione dei Pacchetti

Per rimuovere un pacchetto, passare il parametro -r a dpkg, seguito dal nome del pacchetto. Per esempio, il seguente comando rimuoverà il pacchetto unrar dal sistema:

# dpkg -r unrar
(Reading database ... 269630 files and directories currently installed.)
Removing unrar (1:5.6.6-2) ...
Processing triggers for man-db (2.8.5-2) ...

L’operazione di rimozione esegue anche un controllo di dipendenza e un pacchetto non può essere rimosso a meno che non venga rimosso anche ogni altro pacchetto che dipende da esso. Se si prova a farlo, si riceverà un messaggio di errore come quello di seguito:

# dpkg -r p7zip
dpkg: dependency problems prevent removal of p7zip:
 winetricks depends on p7zip; however:
  Package p7zip is to be removed.
 p7zip-full depends on p7zip (= 16.02+dfsg-6).

dpkg: error processing package p7zip (--remove):
 dependency problems - not removing
Errors were encountered while processing:
 p7zip

Si possono passare più nomi di pacchetti a dpkg -r, al fine di poterli rimuovere tutti in una volta.

Quando un pacchetto viene rimosso, i file di configurazione corrispondenti vengono lasciati sul sistema. Se si vuole rimuovere qualsiasi cosa associata al pacchetto, usare l’opzione -P (purge) invece di -r.

Note

È possibile forzare dpkg ad installare o rimuovere un pacchetto, anche se le dipendenze non sono soddisfatte, aggiungendo il parametro --force come in dpkg -i --force PACKAGENAME. Tuttavia, molto probabilmente, ciò lascerà il pacchetto installato, o anche il tuo sistema, in uno stato di inconsistenza. Non utilizare --force a meno di non essere assolutamente sicuri di cosa si stia facendo.

Ottenere Informazioni sui Pacchetti

Per ottenere informazioni su un pacchetto .deb, come la sua versione, architettura, maintainer, dipendenze e altro, usare il comando dpkg con l’opzione -I, seguito dal nome del file del pacchetto che si vuole controllare:

# dpkg -I google-chrome-stable_current_amd64.deb
 new Debian package, version 2.0.
 size 59477810 bytes: control archive=10394 bytes.
    1222 bytes,    13 lines      control
   16906 bytes,   457 lines   *  postinst             #!/bin/sh
   12983 bytes,   344 lines   *  postrm               #!/bin/sh
    1385 bytes,    42 lines   *  prerm                #!/bin/sh
 Package: google-chrome-stable
 Version: 76.0.3809.100-1
 Architecture: amd64
 Maintainer: Chrome Linux Team <chromium-dev@chromium.org>
 Installed-Size: 205436
 Pre-Depends: dpkg (>= 1.14.0)
 Depends: ca-certificates, fonts-liberation, libappindicator3-1, libasound2 (>= 1.0.16), libatk-bridge2.0-0 (>= 2.5.3), libatk1.0-0 (>= 2.2.0), libatspi2.0-0 (>= 2.9.90), libc6 (>= 2.16), libcairo2 (>= 1.6.0), libcups2 (>= 1.4.0), libdbus-1-3 (>= 1.5.12), libexpat1 (>= 2.0.1), libgcc1 (>= 1:3.0), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.31.8), libgtk-3-0 (>= 3.9.10), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.22), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libuuid1 (>= 2.16), libx11-6 (>= 2:1.4.99.1), libx11-xcb1, libxcb1 (>= 1.6), libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6 (>= 2:1.2.99.4), libxrandr2 (>= 2:1.2.99.3), libxrender1, libxss1, libxtst6, lsb-release, wget, xdg-utils (>= 1.0.2)
 Recommends: libu2f-udev
 Provides: www-browser
 Section: web
 Priority: optional
 Description: The web browser from Google
  Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier.

Elencare i Pacchetti Installati e il loro Contenuto

Per ottenere un elenco di tutti i pacchetti installati sul sistema, usare l’opzione --get-selections, come in dpkg --get-selections. Per ottenere un elenco di tutti i file installati da un pacchetto specifico si può utilizzare il parametro -L PACKAGENAME come di seguito:

# dpkg -L unrar
/.
/usr
/usr/bin
/usr/bin/unrar-nonfree
/usr/share
/usr/share/doc
/usr/share/doc/unrar
/usr/share/doc/unrar/changelog.Debian.gz
/usr/share/doc/unrar/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/unrar-nonfree.1.gz

Scoprire quale Pacchetto Detiene un File Specifico

A volte si ha la necessità di sapere a quale pacchetto appartiene un certo file presente sul sistema. Ciò può essere ottenuto usando l’utility dpkg-query, seguita dall’opzione -S e dal percorso del file in questione:

# dpkg-query -S /usr/bin/unrar-nonfree
unrar: /usr/bin/unrar-nonfree

Riconfigurare i Pacchetti Installati

Quando viene installato un pacchetto esiste un passaggio di configurazione chiamato post-install in cui viene eseguito uno script per impostare tutto il necessario per l’esecuzione del software, per esempio autorizzazioni, posizionamento dei file di configurazione, ecc. Questo può anche porre alcune domande all’utente per impostare le preferenze su come verrà eseguito il software.

A volte, a causa di un file di configurazione corrotto o non valido, si potrebbe voler ripristinare le impostazioni di un pacchetto al suo stato “iniziale”. Oppure si potrebbe voler cambiare le risposte date alle domande iniziali di configurazione. Per fare ciò, eseguire l’utility dpkg-reconfigure, seguita dal nome del pacchetto.

Questo programma eseguirà il backup dei vecchi file di configurazione, decomprimerà quelli nuovi nelle directory corrette ed eseguirà lo script post-install fornito dal pacchetto, come se il pacchetto fosse stato installato per la prima volta. Prova a riconfigurare il pacchetto tzdata con il seguente esempio:

# dpkg-reconfigure tzdata

Advanced Package Tool (apt)

Advanced Package Tool (APT) è un sistema di gestione dei pacchetti, che include un set di strumenti, che semplifica notevolmente l’installazione, l’aggiornamento, la rimozione e la gestione dei pacchetti. APT offre funzionalità come capacità di ricerca avanzata e risoluzione automatica delle dipendenze.

APT non è un “sostituto” di dpkg. Lo si può pensare come un suo "front-end", che ne semplifica l’utilizzo e colmandone le lacune, come la non automatica risoluzione delle dipendenze.

APT funziona di concerto con repository di software che contengono i pacchetti pronti per l’installazione. Tali repository possono essere un server locale o uno remoto o (meno comune) anche un disco CD-ROM.

Le distribuzioni Linux, come Debian e Ubuntu, mantengono i propri repository e altri repository possono essere gestiti da sviluppatori o gruppi di utenti per fornire software ulteriore.

Esistono molte utility che interagiscono con APT, le principali sono:

apt-get

utilizzata per scaricare, installare, aggiornare o rimuovere i pacchetti dal sistema.

apt-cache

utilizzata per eseguire operazioni, come ricerche, nell’indice dei pacchetti.

apt-file

utilizzata per la ricerca di file all’interno dei pacchetti.

C’è anche un’utilità “più amichevole” chiamata semplicemente apt, che combina le opzioni più utilizzate di apt-get e apt-cache in un’unica utility. Molti dei comandi per apt sono gli stessi di apt-get, quindi sono in molti casi intercambiabili. Tuttavia, poiché apt potrebbe non essere installato sul sistema, si consiglia di imparare ad usare apt-get e apt-cache.

Note

apt e apt-get potrebbero richiedere una connessione di rete, poiché i pacchetti e gli indici relativi potrebbero dover essere scaricati da un server remoto.

Aggiornare l’Indice del Pacchetti

Prima di installare o aggiornare il software con APT, si consiglia di aggiornare l’indice dei pacchetti al fine di recuperare informazioni sui pacchetti nuovi e aggiornati. Questo viene fatto con il comando apt-get, seguito dal parametro update:

# apt-get update
Ign:1 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:2 https://repo.skype.com/deb stable InRelease
Hit:3 http://us.archive.ubuntu.com/ubuntu disco InRelease
Hit:4 http://repository.spotify.com stable InRelease
Hit:5 http://dl.google.com/linux/chrome/deb stable Release
Hit:6 http://apt.pop-os.org/proprietary disco InRelease
Hit:7 http://ppa.launchpad.net/system76/pop/ubuntu disco InRelease
Hit:8 http://us.archive.ubuntu.com/ubuntu disco-security InRelease
Hit:9 http://us.archive.ubuntu.com/ubuntu disco-updates InRelease
Hit:10 http://us.archive.ubuntu.com/ubuntu disco-backports InRelease
Reading package lists... Done
Tip

Invece di apt-get update, si può utilizzare apt update.

Installare e Rimuovere Pacchetti

Con l’indice dei pacchetti aggiornato, è ora possibile installare un pacchetto. Questo viene fatto con apt-get install, seguito dal nome del pacchetto che si desidera installare:

# apt-get install xournal
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  xournal
0 upgraded, 1 newly installed, 0 to remove and 75 not upgraded.
Need to get 285 kB of archives.
After this operation, 1041 kB of additional disk space will be used.

Allo stesso modo, per rimuovere un pacchetto usare apt-get remove, seguito dal nome del pacchetto:

# apt-get remove xournal
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  xournal
0 upgraded, 0 newly installed, 1 to remove and 75 not upgraded.
After this operation, 1041 kB disk space will be freed.
Do you want to continue? [Y/n]

Tenere presente che durante l’installazione o la rimozione di pacchetti, APT eseguirà la risoluzione automatica delle dipendenze. Ciò significa che verranno installati anche eventuali pacchetti aggiuntivi richiesti dal pacchetto che si sta installando e che verranno rimossi anche i pacchetti che dipendono dal pacchetto che si sta rimuovendo. APT mostrerà sempre cosa si stà per installare o rimuovere prima che ciò avvenga effettivamente:

# apt-get remove p7zip
Reading package lists... Done
Building dependency tree
The following packages will be REMOVED:
  android-libbacktrace android-libunwind android-libutils
  android-libziparchive android-sdk-platform-tools fastboot p7zip p7zip-full
0 upgraded, 0 newly installed, 8 to remove and 75 not upgraded.
After this operation, 6545 kB disk space will be freed.
Do you want to continue? [Y/n]

Quando un pacchetto viene rimosso i file di configurazione corrispondenti vengono lasciati sul sistema. Se si vuole rimuovere qualsiasi cosa associata al pacchetto, usare il parametro purge invece di remove o il parametro remove con l’opzione --purge:

# apt-get purge p7zip

oppure

# apt-get remove --purge p7zip
Tip

Puoi anche usare apt install e apt remove.

Riparare Dipendenze Errate

È possibile avere “dipendenze errate” su un sistema. Ciò significa che uno o più pacchetti installati dipendono da altri pacchetti che non sono stati installati o che non sono più presenti. Ciò può accadere a causa di un errore APT o di un pacchetto installato manualmente.

Per risolvere questo problema, usare il comando apt-get install -f. Questo tenterà di “riparare” i pacchetti malfunzionanti installando le dipendenze mancanti, assicurando quindi che tutti i pacchetti siano nuovamente coerenti.

Tip

È possibile usare anche apt install -f.

Aggiornare i Pacchetti

APT può essere utilizzato per aggiornare automaticamente tutti i pacchetti installati alle ultime versioni disponibili dai repository. Questo viene fatto con il comando apt-get upgrade. Prima di eseguirlo, aggiornare innanzitutto l’indice del pacchetto con apt-get update:

# apt-get update
Hit:1 http://us.archive.ubuntu.com/ubuntu disco InRelease
Hit:2 http://us.archive.ubuntu.com/ubuntu disco-security InRelease
Hit:3 http://us.archive.ubuntu.com/ubuntu disco-updates InRelease
Hit:4 http://us.archive.ubuntu.com/ubuntu disco-backports InRelease
Reading package lists... Done

# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  gnome-control-center
The following packages will be upgraded:
  cups cups-bsd cups-client cups-common cups-core-drivers cups-daemon
  cups-ipp-utils cups-ppdc cups-server-common firefox-locale-ar (...)

74 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Need to get 243 MB of archives.
After this operation, 30.7 kB of additional disk space will be used.
Do you want to continue? [Y/n]

Il riepilogo alla fine dell’output mostra quanti pacchetti verranno aggiornati, quanti verranno installati, rimossi o conservati, le dimensioni totali del download e la quantità di spazio su disco aggiuntiva necessaria per completare l’operazione. Per completare l’aggiornamento, basta rispondere Y e attendere che apt-get finisca l’attività.

Per aggiornare un singolo pacchetto, basta eseguire apt-get upgrade seguito dal nome del pacchetto. Come in dpkg, apt-get controlla prima se è installata una versione precedente di un pacchetto. In tal caso, il pacchetto verrà aggiornato alla versione più recente disponibile nel repository. In caso contrario, verrà installata una nuova copia.

Tip

È possibile anche usare apt upgrade e apt update.

La Cache Locale

Quando si installa o si aggiorna un pacchetto, il corrispondente file .deb viene scaricato in una directory locale di cache. Di default, questa directory è /var/cache/apt/archives. I file parzialmente scaricati vengono invece copiati in /var/cache/apt/archives/partial/.

Durante l’installazione e l’aggiornamento dei pacchetti, la directory della cache può diventare piuttosto grande. Per recuperare spazio, è possibile svuotarla usando il comando apt-get clean. Questo rimuoverà il contenuto delle directory /var/cache/apt/archives e /var/cache/apt/archives/partial/.

Tip

È possibile utilizzare anche apt clean.

Ricercare Pacchetti

L’utility apt-cache può essere usata per eseguire operazioni sull’indice dei pacchetti, come cercare un pacchetto specifico o elencare quali pacchetti contengono un file specifico.

Per condurre una ricerca, usare apt-cache search seguito da una maschera di ricerca. L’output sarà un elenco di ogni pacchetti che soddisfano il pattern, nel nome, nella descrizione o nei file forniti con il pacchetto.

# apt-cache search p7zip
liblzma-dev - XZ-format compression library - development files
liblzma5 - XZ-format compression library
forensics-extra - Forensics Environment - extra console components (metapackage)
p7zip - 7zr file archiver with high compression ratio
p7zip-full - 7z and 7za file archivers with high compression ratio
p7zip-rar - non-free rar module for p7zip

Nell’esempio sopra, la voce liblzma5 - XZ-format compression library non sembra corrispondere alla maschera di ricerca. Tuttavia, se mostriamo le informazioni complete, inclusa la descrizione, usando il parametro show, troveremo il perchè di questa visualizzazione:

# apt-cache show liblzma5
Package: liblzma5
Architecture: amd64
Version: 5.2.4-1
Multi-Arch: same
Priority: required
Section: libs
Source: xz-utils
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Jonathan Nieder <jrnieder@gmail.com>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 259
Depends: libc6 (>= 2.17)
Breaks: liblzma2 (<< 5.1.1alpha+20110809-3~)
Filename: pool/main/x/xz-utils/liblzma5_5.2.4-1_amd64.deb
Size: 92352
MD5sum: 223533a347dc76a8cc9445cfc6146ec3
SHA1: 8ed14092fb1caecfebc556fda0745e1e74ba5a67
SHA256: 01020b5a0515dbc9a7c00b464a65450f788b0258c3fbb733ecad0438f5124800
Homepage: https://tukaani.org/xz/
Description-en: XZ-format compression library
 XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm
 compression format, which provides memory-hungry but powerful
 compression (often better than bzip2) and fast, easy decompression.
 .
 The native format of liblzma is XZ; it also supports raw (headerless)
 streams and the older LZMA format used by lzma. (For 7-Zip's related
 format, use the p7zip package instead.)

È possibile utilizzare espressioni regolari con il pattern di ricerca, consentendo ricerche molto complesse (e precise). Tuttavia, questo argomento non rientra nell’ambito di questa lezione.

Tip

È possibile anche usare apt search invece di apt-cache search e apt show invece di apt-cache show.

La Lista delle Fonti

APT utilizza un elenco di fonti per sapere da dove ottenere i pacchetti. Questo elenco è memorizzato nel file sources.list, situato nella directory /etc/apt. Questo può essere modificato utilizzando un normale editor di testo come vi, pico o nano, o attraverso un’utilità grafica come aptitude o synaptic.

Una linea tipica all’interno di sources.list è simile a questa:

deb http://us.archive.ubuntu.com/ubuntu/ disco main restricted universe multiverse

La sintassi è: Tipo archivio, URL, Distribuzione e uno o più Componenti, dove:

Tipo archivio

Un repository può contenere pacchetti con software pronto per l’esecuzione (pacchetti binari, indicati come deb) o con il codice sorgente (pacchetti sorgente, indicati come deb-src). L’esempio sopra fornisce pacchetti binari.

URL

La URL del repository.

Distribuzione

Il nome (o nome in codice) della distribuzione per cui vengono forniti i pacchetti. Un repository può ospitare pacchetti per più distribuzioni. Nell’esempio sopra, disco è il nome in codice di Ubuntu 19.04 Disco Dingo.

Componenti

Ogni componente rappresenta un insieme di pacchetti. Questi componenti possono essere diversi su ogni distribuzione Linux. Per esempio, su Ubuntu e derivati, sono:

main

contiene pacchetti ufficialmente supportati di tipo open source.

restricted

contiene software ufficialmente supportato a codice sorgente chiuso, per esempio i driver di dispositivo per alcune schede grafiche.

universe

contiene software open source gestito dalla comunità.

multiverse

contiene software non supportato, a codice sorgente chiuso o protetto da brevetto.

Su Debian, i componenti principali sono:

main

è costituito da pacchetti conformi alle Debian Free Software Guidelines (DFSG), che non si basano su software al di fuori di quest’area per operare. I pacchetti inclusi qui sono considerati parte della distribuzione Debian.

contrib

contiene pacchetti conformi a DFSG, ma che dipendono da altri pacchetti che non siano in main.

non-free

contiene pacchetti non conformi al DFSG.

security

contiene aggiornamenti di sicurezza.

backports

contiene versioni più recenti di pacchetti che si trovano in main. Il ciclo di sviluppo delle versioni stabili di Debian è piuttosto lungo (circa due anni), e questo consente agli utenti di ottenere pacchetti più aggiornati senza dover modificare il repository core main.

Note

Per saperne di più sulle Debian Free Software Guidelines: https://www.debian.org/social_contract#guidelines

Per aggiungere un nuovo repository da cui ottenere i pacchetti, si può semplicemente aggiungere la riga corrispondente (di solito fornita dal manutentore del repository) alla fine di sources.list, salvare il file e ricaricare l’indice dei pacchetti con apt-get update. A seguito di ciò, i pacchetti del nuovo repository saranno disponibili per l’installazione usando apt-get install.

Tienere presente che le righe che iniziano con il carattere # sono considerate commenti e vengono ignorate.

La Directory /etc/apt/sources.list.d

All’interno della directory /etc/apt/sources.list.d è possibile aggiungere file di repository aggiuntivi che devono essere usati da APT, senza la necessità di modificare il file principale /etc/apt/sources.list. Questi sono semplici file di testo, con la stessa sintassi descritta sopra e l’estensione del file .list.

Di seguito il contenuto di un file chiamato /etc/apt/sources.list.d/buster-backports.list:

deb http://deb.debian.org/debian buster-backports main contrib non-free
deb-src http://deb.debian.org/debian buster-backports main contrib non-free
Elencare i Contenuti di un Pacchetto e Ricercare dei File

Un’utilità chiamata apt-file può essere usata per eseguire più operazioni nell’indice del pacchetto, come elencare il contenuto di un pacchetto o trovare un pacchetto che contiene un file specifico. Questa utility potrebbe non essere installata per impostazione predefinita nel sistema. In questo caso, di solito è possibile installarlo usando apt-get:

# apt-get install apt-file

Dopo l’installazione, sarà necessario aggiornare la cache dei pacchetti:

# apt-file update

Questo di solito richiede solo pochi secondi. Dopodiché, si è pronti per usare apt-file.

Per elencare il contenuto di un pacchetto, usare il parametro list seguito dal nome del pacchetto:

# apt-file list unrar
unrar: /usr/bin/unrar-nonfree
unrar: /usr/share/doc/unrar/changelog.Debian.gz
unrar: /usr/share/doc/unrar/copyright
unrar: /usr/share/man/man1/unrar-nonfree.1.gz
Tip

È possibile usare apt list invece di apt-file list.

Si può cercare un file in tutti i pacchetti usando il parametro search, seguito dal nome del file. Per esempio, se si desidera sapere quale pacchetto contiene un file chiamato libSDL2.so, è possibile utilizzare:

# apt-file search libSDL2.so
libsdl2-dev: /usr/lib/x86_64-linux-gnu/libSDL2.so

La risposta è il pacchetto libsdl2-dev, che fornisce il file /usr/lib/x86_64-linux-gnu/libSDL2.so.

La differenza tra apt-file search e dpkg-query è che apt-file search cercherà anche i pacchetti disinstallati, mentre dpkg-query può mostrare solo i file che appartengono a un pacchetto già installato.

Esercizi Guidati

  1. Qual è il comando per installare un pacchetto chiamato package.deb usando dpkg?

  2. Utilizzando dpkg-query, trovare quale pacchetto contiene un file chiamato 7zr.1.gz.

  3. Si può rimuovere un pacchetto chiamato unzip dal sistema usando dpkg -r unzip se il pacchetto file-roller dipende da esso? In caso contrario, quale sarebbe il modo corretto di farlo?

  4. Usando apt-file, come si può scoprire quale pacchetto contiene il file unrar?

  5. Usando apt-cache, qual è il comando completo per mostrare informazioni sul pacchetto gimp?

Esercizi Esplorativi

  1. Si consideri un repository con pacchetti sorgente Debian per la distribuzione Ubuntu xenial, ospitato su http://us.archive.ubuntu.com/ubuntu/ e con pacchetti per il componente universe. Quale sarebbe la riga corrispondente da aggiungere a /etc/apt/sources.list?

  2. Durante la compilazione di un programma, viene visualizzato un messaggio di errore in cui si afferma che il file di intestazione zzip-io.h non è presente nel sistema. Come si può scoprire quale pacchetto fornisce questo file?

  3. Come si può ignorare un avviso di dipendenza e rimuovere un pacchetto usando dpkg, anche se ci sono pacchetti che dipendono da esso nel sistema?

  4. Come si può ottenere maggiori informazioni su un pacchetto chiamato midori usando apt?

  5. Prima di installare o aggiornare i pacchetti con apt, quale comando dovrebbe essere usato per assicurarsi che l’indice dei pacchetti sia aggiornato?

Sommario

In questa lezione abbiamo imparato:

  • Come usare dpkg per installare e rimuovere i pacchetti.

  • Come elencare i pacchetti installati e il contenuto dei pacchetti.

  • Come riconfigurare un pacchetto installato.

  • Che cos’è apt e come installare, aggiornare e rimuovere i pacchetti utilizzandolo.

  • Come usare apt-cache per cercare pacchetti.

  • Come è strutturato il file /etc/apt/sources.list.

  • Come usare apt-file per mostrare il contenuto di un pacchetto o come trovare quale pacchetto contiene un file specifico.

Sono stati discussi i seguenti file, termini e utilità:

dpkg -i

Installa un singolo pacchetto, o un elenco di pacchetti separati da spazi.

dpkg -r

Rimuove un pacchetto o un elenco di pacchetti separato da spazi.

dpkg -I

Ispeziona un pacchetto, fornendo dettagli sul software che ha installato e su eventuali dipendenze necessarie.

dpkg --get-selections

Elenca tutti i pacchetti che dpkg ha installato sul sistema.

dpkg -L

Stampa un elenco di tutti i file installati da un determinato pacchetto.

dpkg-query

Con un nome file specificato, questo comando stampa il pacchetto che ha installato il file.

dpkg-reconfigure

Questo comando esegue nuovamente uno script post-install .

apt-get update

Questo comando aggiorna l’indice dei pacchetti in modo che corrisponda a ciò che è disponibile all’interno dei repository configurati nella directory /etc/apt/.

apt-get install

Questo comando scarica un pacchetto da un repository remoto e lo installa insieme alle sue dipendenze, può anche essere usato per installare un pacchetto Debian che è già stato scaricato.

apt-get remove

Questo comando disinstalla i pacchetti specificati dal sistema.

apt-cache show

Proprio come il comando dpkg -I, questo comando può essere usato per mostrare i dettagli su un pacchetto specifico.

apt-cache search

Questo comando cerca nel database cache di APT un pacchetto particolare.

apt-file update

Questo comando aggiorna la cache dei pacchetti in modo che il comando apt-file possa interrogarne il contenuto.

apt-file search

Questo comando può cercare il nome di un pacchetto che ha installato un determinato file, proprio come il comando dpkg-query.

apt-file list

Questo comando è usato per elencare il contenuto di un pacchetto, proprio come il comando dpkg -L.

Risposte agli Esercizi Guidati

  1. Qual è il comando per installare un pacchetto chiamato package.deb usando dpkg?

    Passare l’opzione -i a dpkg:

    # dpkg -i package.deb
  2. Utilizzando dpkg-query, trovare quale pacchetto contiene un file chiamato 7zr.1.gz.

    Passare l’opzione -S a dpkg-query:

    # dpkg-query -S 7zr.1.gz
  3. Si può rimuovere un pacchetto chiamato unzip dal sistema usando dpkg -r unzip se il pacchetto file-roller dipende da esso? In caso contrario, quale sarebbe il modo corretto di farlo?

    No. dpkg non risolverà le dipendenze e non permetterà di rimuovere un pacchetto se un altro pacchetto installato dipende da esso. In questo esempio, si dovrebbe prima rimuovere file-roller (supponendo che nulla dipenda da esso) e quindi rimuovere unzip, oppure rimuoverli entrambi contemporaneamente con:

    # dpkg -r unzip file-roller
  4. Come si può sapere quale pacchetto contiene il file /usr/bin/unrar usando l’utility apt-file?

    Usare il parametro search seguito dal percorso (o nome file):

    # apt-file search /usr/bin/unrar
  5. Usando apt-cache, qual è il comando completo per mostrare informazioni sul pacchetto gimp?

    Usare il parametro show seguito dal nome del pacchetto:

    # apt-cache show gimp

Risposte agli Esercizi Esplorativi

  1. Si consideri un repository con pacchetti sorgente Debian per la distribuzione Ubuntu xenial, ospitato su http://us.archive.ubuntu.com/ubuntu/ e con pacchetti per il componente universe. Quale sarebbe la riga corrispondente da aggiungere a /etc/apt/sources.list?

    I pacchetti sorgente sono del tipo deb-src, quindi la linea dovrebbe essere:

    deb-src http://us.archive.ubuntu.com/ubuntu/ xenial universe

    Questa riga potrebbe anche essere aggiunta all’interno di un file .list in /etc/apt/sources.list.d/. Il nome dipende da te ma dovrebbe essere descrittivo, qualcosa come xenial_sources.list.

  2. Durante la compilazione di un programma, viene visualizzato un messaggio di errore in cui si afferma che il file di intestazione zzip-io.h non è presente nel sistema. Come si può scoprire quale pacchetto fornisce questo file?

    Usare apt-file search per trovare quale pacchetto contiene un file non presente nel sistema:

    # apt-file search zzip-io.h
  3. Come si può ignorare un avviso di dipendenza e rimuovere un pacchetto usando dpkg, anche se ci sono pacchetti che dipendono da esso nel sistema?

    È possibile utilizzare il parametro --force, ma ciò non dovrebbe mai essere fatto a meno che non si sappia esattamente cosa si sta facendo, poiché esiste il rischio che il sistema venga lasciato in uno stato incoerente o "rotto".

  4. Come si possono ottenere maggiori informazioni su un pacchetto chiamato midori usando apt-cache?

    Usare apt-cache show seguito dal nome del pacchetto:

    # apt-cache show midori
  5. Prima di installare o aggiornare i pacchetti con apt, quale comando dovrebbe essere usato per assicurarsi che l’indice dei pacchetti sia aggiornato?

    Si dovrebbe usare apt-get update. Questo scaricherà gli indici dei pacchetti più recenti dai repository descritti nel file /etc/apt/sources.list e nei file presenti nella directory /etc/apt/sources.list.d/.

Linux Professional Institute Inc. Tutti i diritti riservati. Visita il sito Learning Materials: https://learning.lpi.org
Quest'opera è sotto la licenza 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License'.

Prossima Lezione

102.5 Utilizzare la gestione dei pacchetti RPM e YUM (102.5 Lezione 1)

Leggi la prossima Lezione

Linux Professional Institute Inc. Tutti i diritti riservati. Visita il sito Learning Materials: https://learning.lpi.org
Quest'opera è sotto la licenza 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License'.

LPI è una organizzazione non-profit.

© 2023 Linux Professional Institute (LPI) è lo standard di certificazione globale e l'organizzazione di supporto alla carriera per i Professionisti Open Source. Con più di 200,000 titolari di Certificazione, è il primo e il più grande ente di Certificazione Open Source e Linux vendor-neutral. LPI ha professionisti certificati in oltre 180 Paesi, offre i suoi Esami in più lingue e ha centinaia di Partner di formazione in tutto il mondo.

La nostra missione è promuovere l'uso dell'Open Source supportando le persone che vi lavorano.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contattaci
  • Privacy & Cookie Policy

Trovato un errore? Per favore scrivi a contattaci.

© 1999–2023 The Linux Professional Institute Inc. Tutti i diritti riservati.