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 |
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
|
|
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 |
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 |
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 |
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 |
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 |
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 |
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 comedeb-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 coremain
.
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 |
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
-
Qual è il comando per installare un pacchetto chiamato
package.deb
usandodpkg
? -
Utilizzando
dpkg-query
, trovare quale pacchetto contiene un file chiamato7zr.1.gz
. -
Si può rimuovere un pacchetto chiamato
unzip
dal sistema usandodpkg -r unzip
se il pacchettofile-roller
dipende da esso? In caso contrario, quale sarebbe il modo corretto di farlo? -
Usando
apt-file
, come si può scoprire quale pacchetto contiene il fileunrar
? -
Usando
apt-cache
, qual è il comando completo per mostrare informazioni sul pacchettogimp
?
Esercizi Esplorativi
-
Si consideri un repository con pacchetti sorgente Debian per la distribuzione Ubuntu
xenial
, ospitato suhttp://us.archive.ubuntu.com/ubuntu/
e con pacchetti per il componenteuniverse
. Quale sarebbe la riga corrispondente da aggiungere a/etc/apt/sources.list
? -
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? -
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? -
Come si può ottenere maggiori informazioni su un pacchetto chiamato
midori
usandoapt
? -
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
-
Qual è il comando per installare un pacchetto chiamato
package.deb
usandodpkg
?Passare l’opzione
-i
adpkg
:# dpkg -i package.deb
-
Utilizzando
dpkg-query
, trovare quale pacchetto contiene un file chiamato7zr.1.gz
.Passare l’opzione
-S
adpkg-query
:# dpkg-query -S 7zr.1.gz
-
Si può rimuovere un pacchetto chiamato
unzip
dal sistema usandodpkg -r unzip
se il pacchettofile-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 rimuoverefile-roller
(supponendo che nulla dipenda da esso) e quindi rimuovereunzip
, oppure rimuoverli entrambi contemporaneamente con:# dpkg -r unzip file-roller
-
Come si può sapere quale pacchetto contiene il file
/usr/bin/unrar
usando l’utilityapt-file
?Usare il parametro
search
seguito dal percorso (o nome file):# apt-file search /usr/bin/unrar
-
Usando
apt-cache
, qual è il comando completo per mostrare informazioni sul pacchettogimp
?Usare il parametro
show
seguito dal nome del pacchetto:# apt-cache show gimp
Risposte agli Esercizi Esplorativi
-
Si consideri un repository con pacchetti sorgente Debian per la distribuzione Ubuntu
xenial
, ospitato suhttp://us.archive.ubuntu.com/ubuntu/
e con pacchetti per il componenteuniverse
. 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 comexenial_sources.list
. -
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
-
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". -
Come si possono ottenere maggiori informazioni su un pacchetto chiamato
midori
usandoapt-cache
?Usare
apt-cache show
seguito dal nome del pacchetto:# apt-cache show midori
-
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/
.