102.5 Lezione 1
Certificazione: |
LPIC-1 |
---|---|
Versione: |
5.0 |
Argomento: |
102 L’Installazione di Linux e la Gestione Pacchetti |
Obiettivo: |
102.5 Utilizzare la Gestione Pacchetti RPM e YUM |
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 l' RPM Package Manager e il suo strumento corrispondente (rpm
), sviluppato da Red Hat. Oggi entrambi sono ampiamente utilizzati non solo su Red Hat Enterprise Linux (RHEL) stesso, ma anche su molte delle sue derivate come Fedora, CentOS e Oracle Linux, altre distribuzioni come openSUSE e persino altri sistemi operativi, come IBM AIX.
Altri strumenti di gestione dei pacchetti popolari nelle distribuzioni compatibili con Red Hat sono yum
(YellowDog Updater Modified), dnf
(Dandified YUM) e zypper
, che possono semplificare molti degli aspetti dell’installazione, manutenzione e rimozione dei pacchetti, rendendo la gestione dei pacchetti molto più semplice.
In questa lezione impareremo a utilizzare rpm
, yum
, dnf
e zypper
per ottenere, installare, gestire e rimuovere software su un sistema Linux.
Note
|
Nonostante utilizzi lo stesso formato di pacchetto, esistono differenze interne tra le distribuzioni, quindi un pacchetto creato appositamente per openSUSE potrebbe non funzionare su un sistema RHEL e viceversa. Quando si cercano pacchetti, va verificata sempre la compatibilità e se possibile occorre trovarne uno realizzato specificatamente per la distribuzione in uso. |
ll Gestore di Pacchetti RPM (rpm)
RPM Package Manager (rpm
) è lo strumento essenziale per la gestione di pacchetti software su sistemi basati su Red Hat (o derivati).
Installare, Aggiornare e Rimuovere Pacchetti
L’operazione più semplice è installare un pacchetto, che può essere fatto attraverso:
# rpm -i PACKAGENAME
Dove PACKAGENAME
è il nome del pacchetto .rpm
che si desidera installare.
Se esiste una versione precedente di un pacchetto sul sistema, è possibile eseguire l’aggiornamento a una versione più recente usando il parametro -U
:
# rpm -U PACKAGENAME
Se non è installata una versione precedente di PACKAGENAME
, verrà installata una nuova copia. Per evitare ciò e quindi solo aggiornare un pacchetto già installato, usare l’opzione -F
.
In entrambe le operazioni è possibile aggiungere il parametro -v
per ottenere un output dettagliato (durante l’installazione vengono visualizzate ulteriori informazioni) e -h
per ottenere una barra di avanzamento durante l’installazione fatta da tanti singoli caratteri di hash (#
). Più parametri possono essere combinati in uno, quindi rpm -i -v -h
è lo stesso di rpm -ivh
.
Per rimuovere un pacchetto installato, passare il parametro -e
(come in “erase”) a rpm
, seguito dal nome del pacchetto che si desidera rimuovere:
# rpm -e wget
Se un pacchetto installato dipende dal pacchetto rimosso, verrà visualizzato un messaggio di errore:
# rpm -e unzip error: Failed dependencies: /usr/bin/unzip is needed by (installed) file-roller-3.28.1-2.el7.x86_64
Per completare l’operazione, per prima cosa rimuovere i pacchetti che dipendono da quello che si vuole rimuovere (nell’esempio sopra, file-roller
). È possibile passare più nomi di pacchetti a rpm -e
per rimuovere più pacchetti contemporaneamente.
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.
rpm
controllerà se queste dipendenze sono installate sul sistema e non installerà il pacchetto in mancanza di esse. In questo caso, rpm
elencherà quali pacchetti mancano. Tuttavia, non può risolvere le dipendenze da solo.
Nell’esempio seguente, l’utente tenta di installare il pacchetto dell’editor di immagini GIMP, ma mancano alcune dipendenze:
# rpm -i gimp-2.8.22-1.el7.x86_64.rpm error: Failed dependencies: babl(x86-64) >= 0.1.10 is needed by gimp-2:2.8.22-1.el7.x86_64 gegl(x86-64) >= 0.2.0 is needed by gimp-2:2.8.22-1.el7.x86_64 gimp-libs(x86-64) = 2:2.8.22-1.el7 is needed by gimp-2:2.8.22-1.el7.x86_64 libbabl-0.1.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgegl-0.2.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimp-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpbase-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpcolor-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpconfig-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpmath-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpmodule-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpthumb-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpui-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpwidgets-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libmng.so.1()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libwmf-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libwmflite-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
Spetta all’utente trovare i pacchetti .rpm
con le dipendenze corrispondenti e installarli. Gestori di pacchetti come yum
, zypper
e dnf
hanno strumenti che possono dire quale pacchetto fornisce un file specifico. Questi saranno discussi più avanti in questa lezione.
Elencare i Pacchetti Installati
Per ottenere un elenco di tutti i pacchetti installati sul sistema, utilizzare rpm -qa
(si pensi a “query all”).
# rpm -qa selinux-policy-3.13.1-229.el7.noarch pciutils-libs-3.5.1-3.el7.x86_64 redhat-menus-12.0.2-8.el7.noarch grubby-8.28-25.el7.x86_64 hunspell-en-0.20121024-6.el7.noarch dejavu-fonts-common-2.33-6.el7.noarch xorg-x11-drv-dummy-0.3.7-1.el7.1.x86_64 libevdev-1.5.6-1.el7.x86_64 [...]
Ottenere Informazioni sui Pacchetti
Per ottenere informazioni su un pacchetto installato, come il suo numero di versione, l’architettura, la data di installazione, il packager, il sommario, ecc., utilizzare rpm
con l’opzione -qi
(si pensi a “query info”), seguito dal nome del pacchetto. Per esempio:
# rpm -qi unzip Name : unzip Version : 6.0 Release : 19.el7 Architecture: x86_64 Install Date: Sun 25 Aug 2019 05:14:39 PM EDT Group : Applications/Archiving Size : 373986 License : BSD Signature : RSA/SHA256, Wed 25 Apr 2018 07:50:02 AM EDT, Key ID 24c6a8a7f4a80eb5 Source RPM : unzip-6.0-19.el7.src.rpm Build Date : Wed 11 Apr 2018 01:24:53 AM EDT Build Host : x86-01.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.info-zip.org/UnZip.html Summary : A utility for unpacking zip files Description : The unzip utility is used to list, test, or extract files from a zip archive. Zip archives are commonly found on MS-DOS systems. The zip utility, included in the zip package, creates zip archives. Zip and unzip are both compatible with archives created by PKWARE(R)'s PKZIP for MS-DOS, but the programs' options and default behaviors do differ in some respects. Install the unzip package if you need to list, test or extract files from a zip archive.
Per ottenere un elenco di quali file si trovano all’interno di un pacchetto installato usare l’opzione -ql
(si pensi a “query list”) seguito dal nome del pacchetto:
# rpm -ql unzip /usr/bin/funzip /usr/bin/unzip /usr/bin/unzipsfx /usr/bin/zipgrep /usr/bin/zipinfo /usr/share/doc/unzip-6.0 /usr/share/doc/unzip-6.0/BUGS /usr/share/doc/unzip-6.0/LICENSE /usr/share/doc/unzip-6.0/README /usr/share/man/man1/funzip.1.gz /usr/share/man/man1/unzip.1.gz /usr/share/man/man1/unzipsfx.1.gz /usr/share/man/man1/zipgrep.1.gz /usr/share/man/man1/zipinfo.1.gz
Se si desidera ottenere informazioni o un elenco di file da un pacchetto che non è stato ancora installato, aggiungere semplicemente l’opzione -p
ai comandi sopra, seguito dal nome del file RPM (FILENAME
). Quindi rpm -qi PACKAGENAME
diventa rpm -qip FILENAME
, e rpm -ql PACKAGENAME
diventa rpm -qlp FILENAME
, come mostrato sotto.
# rpm -qip atom.x86_64.rpm Name : atom Version : 1.40.0 Release : 0.1 Architecture: x86_64 Install Date: (not installed) Group : Unspecified Size : 570783704 License : MIT Signature : (none) Source RPM : atom-1.40.0-0.1.src.rpm Build Date : sex 09 ago 2019 12:36:31 -03 Build Host : b01bbeaf3a88 Relocations : /usr URL : https://atom.io/ Summary : A hackable text editor for the 21st Century. Description : A hackable text editor for the 21st Century.
# rpm -qlp atom.x86_64.rpm /usr/bin/apm /usr/bin/atom /usr/share/applications/atom.desktop /usr/share/atom /usr/share/atom/LICENSE /usr/share/atom/LICENSES.chromium.html /usr/share/atom/atom /usr/share/atom/atom.png /usr/share/atom/blink_image_resources_200_percent.pak /usr/share/atom/content_resources_200_percent.pak /usr/share/atom/content_shell.pak (la lista prosegue)
Scoprire quale Pacchetto Detiene un File Specifico
Per elencare il contenuto di un pacchetto, usare l’opzione -qf
(si pensi a “query file”) seguito dal percorso completo del pacchetto:
# rpm -qf /usr/bin/unzip unzip-6.0-19.el7.x86_64
Nell’esempio sopra, il file /usr/bin/unzip
appartiene al pacchetto unzip-6.0-19.el7.x86_64
.
YellowDog Updater Modified (YUM)
yum
è stato originariamente sviluppato come Yellow Dog Updater (YUP), uno strumento per la gestione dei pacchetti sulla distribuzione Linux di Yellow Dog. Nel tempo, si è evoluto per gestire i pacchetti su altri sistemi basati su RPM, come Fedora, CentOS, Red Hat Enterprise Linux e Oracle Linux.
Funzionalmente è simile all’utilità apt
sui sistemi basati su Debian, essendo in grado di cercare, installare, aggiornare e rimuovere pacchetti e gestire automaticamente le dipendenze. yum
può essere usato per installare un singolo pacchetto, o per aggiornare contemporaneamente un intero sistema.
Ricercare Pacchetti
Per installare un pacchetto, è necessario conoscerne il nome. Per questo eseguire una ricerca con yum search PATTERN
, dove PATTERN
è il nome del pacchetto che si sta cercando. Il risultato è un elenco di pacchetti il cui nome o riepilogo contiene il pattern di ricerca specificato. Per esempio, se si ha bisogno di un programma di utilità per gestire i file compressi 7Zip (con l’estensione .7z
) si può usare:
# yum search 7zip Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br =========================== N/S matchyutr54ed: 7zip ============================ p7zip-plugins.x86_64 : Additional plugins for p7zip p7zip.x86_64 : Very high compression ratio file archiver p7zip-doc.noarch : Manual documentation and contrib directory p7zip-gui.x86_64 : 7zG - 7-Zip GUI version Name and summary matches only, use "search all" for everything.
Installare, Aggiornare e Rimuovere Pacchetti
Per installare un pacchetto usando yum
, usare il comando yum install PACKAGENAME
, dove PACKAGENAME
è il nome del pacchetto. yum
prenderà il pacchetto e le dipendenze corrispondenti da un repository online e li installerà nel sistema.
# yum install p7zip Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br Resolving Dependencies --> Running transaction check ---> Package p7zip.x86_64 0:16.02-10.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Installing: p7zip x86_64 16.02-10.el7 epel 604 k Transaction Summary ========================================================================== Install 1 Package Total download size: 604 k Installed size: 1.7 M Is this ok [y/d/N]:
Per aggiornare un pacchetto installato, utilizzare yum update PACKAGENAME
, dove PACKAGENAME
è il nome del pacchetto che si desidera aggiornare. Per esempio:
# yum update wget Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br Resolving Dependencies --> Running transaction check ---> Package wget.x86_64 0:1.14-18.el7 will be updated ---> Package wget.x86_64 0:1.14-18.el7_6.1 will be an update --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Updating: wget x86_64 1.14-18.el7_6.1 updates 547 k Transaction Summary ========================================================================== Upgrade 1 Package Total download size: 547 k Is this ok [y/d/N]:
Se si omette il nome del pacchetto, è possibile aggiornare tutti i pacchetti sul sistema per i quali è disponibile un aggiornamento.
Per verificare se è disponibile un aggiornamento per un pacchetto specifico, utilizzare yum check-update PACKAGENAME
. Come prima, se si omette il nome del pacchetto, yum
controllerà gli aggiornamenti per ogni pacchetto installato sul sistema.
Per rimuovere un pacchetto installato, usa yum remove PACKAGENAME
, dove PACKAGENAME
è il nome del pacchetto che si desidera rimuovere.
Trovare quale Pacchetto Fornisce un File Specifico
In un esempio precedente abbiamo mostrato un tentativo di installare l’editor di immagini gimp
, fallito a causa di dipendenze non soddisfatte. Tuttavia, rpm
mostra quali file mancano, ma non elenca il nome dei pacchetti che li forniscono..
Per esempio, una delle dipendenze mancanti era libgimpui-2.0.so.0
. Per vedere quale pacchetto lo fornisce, è possibile usare yum whatprovides
, seguito dal nome del file che si sta cercando:
# yum whatprovides libgimpui-2.0.so.0 Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br 2:gimp-libs-2.8.22-1.el7.i686 : GIMP libraries Repo : base Matched from: Provides : libgimpui-2.0.so.0
La risposta è gimp-libs-2.8.22-1.el7.i686
. È quindi possibile installare il pacchetto con il comando yum install gimp-libs
.
Questo funziona anche con i file già presenti nel sistema. Per esempio, se si desidera sapere da dove proviene il file /etc/hosts
, è possibile utilizzare:
# yum whatprovides /etc/hosts Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br setup-2.8.71-10.el7.noarch : A set of system configuration and setup files Repo : base Matched from: Filename : /etc/hosts
La risposta è setup-2.8.71-10.el7.noarch
.
Ottenere Informazioni su un Pacchetto
Per ottenere informazioni su un pacchetto, come la sua versione, architettura, descrizione, dimensione e altro, utilizzare yum info PACKAGENAME
dove PACKAGENAME
è il nome del pacchetto per il quale si desidererano informazioni:
# yum info firefox Last metadata expiration check: 0:24:16 ago on Sat 21 Sep 2019 02:39:43 PM -03. Installed Packages Name : firefox Version : 69.0.1 Release : 3.fc30 Architecture : x86_64 Size : 268 M Source : firefox-69.0.1-3.fc30.src.rpm Repository : @System From repo : updates Summary : Mozilla Firefox Web browser URL : https://www.mozilla.org/firefox/ License : MPLv1.1 or GPLv2+ or LGPLv2+ Description : Mozilla Firefox is an open-source web browser, designed : for standards compliance, performance and portability.
Gestire i Repository Software
Per yum
i “repos” sono elencati nella directory /etc/yum.repos.d/
. Ogni repository è rappresentato da un file .repo
, come per esempio CentOS-Base.repo
.
Ulteriori repository possono essere aggiunti dall’utente creando file .repo
nella directory sopra menzionata, o alla fine di /etc/yum.conf
. Tuttavia, il modo raccomandato per aggiungere o gestire i repository è con lo strumento yum-config-manager
.
Per aggiungere un repository, usare l’opzione --add-repo
, seguita dalla URL del file .repo
.
# yum-config-manager --add-repo https://rpms.remirepo.net/enterprise/remi.repo Loaded plugins: fastestmirror, langpacks adding repo from: https://rpms.remirepo.net/enterprise/remi.repo grabbing file https://rpms.remirepo.net/enterprise/remi.repo to /etc/yum.repos.d/remi.repo repo saved to /etc/yum.repos.d/remi.repo
Per ottenere un elenco di tutti i repository disponibili usare yum repolist all
. Si otterrà un output simile a questo:
# yum repolist all Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br repo id repo name status updates/7/x86_64 CentOS-7 - Updates enabled: 2,500 updates-source/7 CentOS-7 - Updates Sources disabled
I repository disabilitati
verranno ignorati durante l’installazione o l’aggiornamento del software. Per abilitare o disabilitare un repository, usare l’utility yum-config-manager
, seguita dal repository ID.
Nell’output sopra, il repository ID è mostrato sulla prima colonna (repo id
) di ogni riga. Utilizzare solo la parte prima del primo /
, quindi l’ID per il repository CentOS-7 - Updates
è solo updates
, e non updates/7/x86_64
.
# yum-config-manager --disable updates
Il comando sopra disabiliterà il repository updates
. Per riattivarlo utilizzare:
# yum-config-manager --enable updates
Note
|
Yum memorizza i pacchetti scaricati e i metadati associati in una directory cache (di solito |
DNF
dnf
è lo strumento di gestione dei pacchetti usato su Fedora, ed è un fork di yum
. Pertanto, molti comandi e parametri sono simili. Questa sezione fornisce solo una rapida panoramica di dnf
.
- Ricercare pacchetti
-
dnf search PATTERN
, dovePATTERN
è ciò che stai cercando. Per esempio,dnf search unzip
mostrerà tutti i pacchetti che contengono la parolaunzip
nel nome o nella descrizione. - Ottenere informazioni su un pacchetto
-
dnf info PACKAGENAME
- Installare pacchetti
-
dnf install PACKAGENAME
, dovePACKAGENAME
è il nome del pacchetto che si desidera installare. È possibile trovare il nome eseguendo una ricerca. - Rimuovere pacchetti
-
dnf remove PACKAGENAME
- Aggiornare pacchetti
-
dnf upgrade PACKAGENAME
per aggiornare un solo pacchetto. Omettere il nome del pacchetto per aggiornare tutti i pacchetti nel sistema. - Scoprire quale pacchetto fornisce un file specifico
-
dnf provides FILENAME
- Ottenere un elenco di tutti i pacchetti installati nel sistema
-
dnf list --installed
- Elencare il contenuto di un pacchetto
-
dnf repoquery -l PACKAGENAME
Note
|
|
Gestire i Repository Software
Proprio come con yum
e zypper
, dnf
funziona con i repository di software (repository). Ogni distribuzione ha un elenco di repository predefinito e gli amministratori possono aggiungere o rimuovere repository secondo le loro necessità.
Per ottenere un elenco di tutti i repository disponibili, usare dnf repolist
. Per elencare solo i repository abilitati, aggiungere l’opzione --enabled
e per elencare solo i repository disabilitati, aggiungere l’opzione --disabled
.
# dnf repolist Last metadata expiration check: 0:20:09 ago on Sat 21 Sep 2019 02:39:43 PM -03. repo id repo name status *fedora Fedora 30 - x86_64 56,582 *fedora-modular Fedora Modular 30 - x86_64 135 *updates Fedora 30 - x86_64 - Updates 12,774 *updates-modular Fedora Modular 30 - x86_64 - Updates 145
Per aggiungere un repository, usare dnf config-manager --add_repo URL
, dove URL
è l’URL completa del repository. Per abilitare un repository, usare dnf config-manager --set-enabled REPO_ID
.
Allo stesso modo, per disabilitare un repository usare dnf config-manager --set-disabled REPO_ID
. In entrambi i casi, REPO_ID
è l’ID univoco per il repository, che è possibile ottenere usando dnf repolist
. I repository aggiunti sono abilitati per impostazione predefinita.
I repository sono memorizzati nei file .repo
nella directory /etc/yum.repos.d/
, con esattamente la stessa sintassi usata per yum
.
Zypper
zypper
è lo strumento di gestione dei pacchetti utilizzato su SUSE Linux e OpenSUSE. Per quanto riguarda le caratteristiche, è simile a apt
e yum
, essendo in grado di installare, aggiornare e rimuovere i pacchetti da un sistema, con risoluzione automatica delle dipendenze.
Aggiornare l’Indice del Pacchetti
Come altri strumenti di gestione dei pacchetti, zypper
funziona con repository contenenti pacchetti e metadati. Questi metadati devono essere aggiornati periodicamente, in modo che l’utilità sia a conoscenza degli ultimi pacchetti disponibili. Per eseguire un aggiornamento, digitare semplicemente:
# zypper refresh Repository 'Non-OSS Repository' is up to date. Repository 'Main Repository' is up to date. Repository 'Main Update Repository' is up to date. Repository 'Update Repository (Non-Oss)' is up to date. All repositories have been refreshed.
zypper
ha una funzione di aggiornamento automatico che può essere abilitata in base al repository, il che significa che alcuni repository possono essere aggiornati automaticamente prima di una query o dell’installazione di un pacchetto, mentre altri potrebbero dover essere aggiornati manualmente. Ciò verrà spiegato a breve.
Ricercare Pacchetti
Per cercare un pacchetto, utilizzare il parametro search
(o se
), seguito dal nome del pacchetto:
# zypper se gnumeric Loading repository data... Reading installed packages... S | Name | Summary | Type --+----------------+-----------------------------------+-------- | gnumeric | Spreadsheet Application | package | gnumeric-devel | Spreadsheet Application | package | gnumeric-doc | Documentation files for Gnumeric | package | gnumeric-lang | Translations for package gnumeric | package
Il parametro di ricerca può anche essere utilizzato per ottenere un elenco di tutti i pacchetti installati nel sistema. Per fare ciò, usare l’opzione -i
senza un nome di pacchetto, come in zypper se -i
.
Per vedere se è installato un pacchetto specifico, aggiungere il nome del pacchetto al comando sopra. Per esempio, il comando seguente cercherà tra i pacchetti installati tutti quelli con “firefox” nel nome:
# zypper se -i firefox Loading repository data... Reading installed packages... S | Name | Summary | Type --+------------------------------------+-------------------------+-------- i | MozillaFirefox | Mozilla Firefox Web B-> | package i | MozillaFirefox-branding-openSUSE | openSUSE branding of -> | package i | MozillaFirefox-translations-common | Common translations f-> | package
Per cercare solo tra i pacchetti non installati, aggiungere l’opzione -u
all’operatore se
.
Installare, Aggiornare e Rimuovere Pacchetti
Per installare un pacchetto software, utilizzare il parametro install
(o in
), seguito dal nome del pacchetto.:
# zypper in unrar zypper in unrar Loading repository data... Reading installed packages... Resolving package dependencies... The following NEW package is going to be installed: unrar 1 new package to install. Overall download size: 141.2 KiB. Already cached: 0 B. After the operation, additional 301.6 KiB will be used. Continue? [y/n/v/...? shows all options] (y): y Retrieving package unrar-5.7.5-lp151.1.1.x86_64 (1/1), 141.2 KiB (301.6 KiB unpacked) Retrieving: unrar-5.7.5-lp151.1.1.x86_64.rpm .......................[done] Checking for file conflicts: .......................................[done] (1/1) Installing: unrar-5.7.5-lp151.1.1.x86_64 .....................[done]
zypper
può anche essere usato per installare un pacchetto RPM su disco, mentre cerca di soddisfare le sue dipendenze usando pacchetti dai repository. Per fare ciò, basta fornire il percorso completo al pacchetto, come per esempio: zypper in /home/john/newpackage.rpm
.
Per aggiornare i pacchetti installati sul sistema, utilizzare zypper update
. Come nel processo di installazione, questo mostrerà un elenco di pacchetti da installare/aggiornare prima di chiedere se si desidera procedere.
Se si desidera elencare solo gli aggiornamenti disponibili, senza installare nulla, è possibile utilizzare: zypper list-updates
.
Per rimuovere un pacchetto, utilizzare il parametro remove
(o rm
), seguito dal nome del pacchetto:
# zypper rm unrar Loading repository data... Reading installed packages... Resolving package dependencies... The following package is going to be REMOVED: unrar 1 package to remove. After the operation, 301.6 KiB will be freed. Continue? [y/n/v/...? shows all options] (y): y (1/1) Removing unrar-5.7.5-lp151.1.1.x86_64 ........................[done]
Si tenga presente che la rimozione di un pacchetto rimuove anche tutti gli altri pacchetti che dipendono da esso. Per esempio:
# zypper rm libgimp-2_0-0 Loading repository data... Warning: No repositories defined. Operating only with the installed resolvables. Nothing can be installed. Reading installed packages... Resolving package dependencies... The following 6 packages are going to be REMOVED: gimp gimp-help gimp-lang gimp-plugins-python libgimp-2_0-0 libgimpui-2_0-0 6 packages to remove. After the operation, 98.0 MiB will be freed. Continue? [y/n/v/...? shows all options] (y):
Trovare quale Pacchetto Contiene un File Specifico
Per vedere quali pacchetti contengono un file specifico, usare il parametro di ricerca seguito dall’opzione --provides
e dal nome del file (o dal percorso completo aa esso). Per esempio, se si vuole sapere quali pacchetti contengono il file libgimpmodule-2.0.so.0
in /usr/lib64/
usare:
# zypper se --provides /usr/lib64/libgimpmodule-2.0.so.0 Loading repository data... Reading installed packages... S | Name | Summary | Type --+---------------+----------------------------------------------+-------- i | libgimp-2_0-0 | The GNU Image Manipulation Program - Libra-> | package
Ottenere Informazioni sui Pacchetti
Per vedere i metadati associati a un pacchetto, usare il parametro info
seguito dal nome del pacchetto. Questo fornirà il repository di origine, il nome del pacchetto, la versione, l’architettura, il fornitore, le dimensioni installate, se è installato o meno, lo stato (se è aggiornato), il pacchetto di origine e una descrizione.
# zypper info gimp Loading repository data... Reading installed packages... Information for package gimp: ----------------------------- Repository : Main Repository Name : gimp Version : 2.8.22-lp151.4.6 Arch : x86_64 Vendor : openSUSE Installed Size : 29.1 MiB Installed : Yes (automatically) Status : up-to-date Source package : gimp-2.8.22-lp151.4.6.src Summary : The GNU Image Manipulation Program Description : The GIMP is an image composition and editing program, which can be used for creating logos and other graphics for Web pages. The GIMP offers many tools and filters, and provides a large image manipulation toolbox, including channel operations and layers, effects, subpixel imaging and antialiasing, and conversions, together with multilevel undo. The GIMP offers a scripting facility, but many of the included scripts rely on fonts that we cannot distribute.
Gestire i Repository Software
zypper
può anche essere usato per gestire i repository di software. Per vedere un elenco di tutti i repository attualmente registrati nel sistema, usare zypper repos
:
# zypper repos Repository priorities are without effect. All enabled repositories share the same priority. # | Alias | Name | Enabled | GPG Check | Refresh ---+---------------------------+------------------------------------+---------+-----------+-------- 1 | openSUSE-Leap-15.1-1 | openSUSE-Leap-15.1-1 | No | ---- | ---- 2 | repo-debug | Debug Repository | No | ---- | ---- 3 | repo-debug-non-oss | Debug Repository (Non-OSS) | No | ---- | ---- 4 | repo-debug-update | Update Repository (Debug) | No | ---- | ---- 5 | repo-debug-update-non-oss | Update Repository (Debug, Non-OSS) | No | ---- | ---- 6 | repo-non-oss | Non-OSS Repository | Yes | (r ) Yes | Yes 7 | repo-oss | Main Repository | Yes | (r ) Yes | Yes 8 | repo-source | Source Repository | No | ---- | ---- 9 | repo-source-non-oss | Source Repository (Non-OSS) | No | ---- | ---- 10 | repo-update | Main Update Repository | Yes | (r ) Yes | Yes 11 | repo-update-non-oss | Update Repository (Non-Oss) | Yes | (r ) Yes | Yes
Si può notare che nella colonna Enabled
alcuni archivi sono abilitati, mentre altri no. Ciò può essere modificato con il parametro editrepo
, seguito dall’opzione -e
(enable) o -d
(disable) e dall’alias del repository (la seconda colonna nell’output).
# zypper modifyrepo -d repo-non-oss Repository 'repo-non-oss' has been successfully disabled. # zypper modifyrepo -e repo-non-oss Repository 'repo-non-oss' has been successfully enabled.
In precedenza si è detto che zypper
ha una funzionalità di auto refresh che può essere abilitata in base al repository. Quando abilitato, questo flag farà eseguire a zypper
un’operazione di aggiornamento (la stessa di zypper refresh
) prima di lavorare con il repository specificato. Questo può essere controllato con le opzioni -f
e -F
del parametro editrepo
:
# zypper modifyrepo -F repo-non-oss Autorefresh has been disabled for repository 'repo-non-oss'. # zypper modifyrepo -f repo-non-oss Autorefresh has been enabled for repository 'repo-non-oss'.
Aggiungere e Rimuovere Repositories
Per aggiungere un nuovo repository di software in zypper
, utilizzare il parametro addrepo
seguito dall’URL del repository e dal nome del repository, come di seguito:
# zypper addrepo http://packman.inode.at/suse/openSUSE_Leap_15.1/ packman Adding repository 'packman' ........................................[done] Repository 'packman' successfully added URI : http://packman.inode.at/suse/openSUSE_Leap_15.1/ Enabled : Yes GPG Check : Yes Autorefresh : No Priority : 99 (default priority) Repository priorities are without effect. All enabled repositories share the same priority.
Durante l’aggiunta di un repository, è possibile abilitare gli aggiornamenti automatici con il l’opzione -f
. I repository aggiunti sono abilitati di default, ma è possibile aggiungere e disabilitare un repository contemporaneamente usando l’opzione -d
.
Per rimuovere un repository, usare il parametro removerepo
, seguito dal nome del repository (Alias). Per rimuovere il repository aggiunto nell’esempio sopra, il comando sarà:
# zypper removerepo packman Removing repository 'packman' ......................................[done] Repository 'packman' has been removed.
Esercizi Guidati
-
Usando
rpm
su un sistema Red Hat Enterprise Linux, come installereste il pacchettofile-roller-3.28.1-2.el7.x86_64.rpm
tanto da fargli mostrare una barra di avanzamento durante l’installazione? -
Usando
rpm
, scopri quale pacchetto contiene il file/etc/redhat-release
. -
Come useresti
yum
per verificare la presenza di aggiornamenti per tutti i pacchetti nel sistema? -
Usando
zypper
, come disabiliteresti un repository chiamato repo-extras? -
Se hai un file
.repo
che descrive un nuovo repository, dove dovrebbe essere messo questo file in modo che venga riconosciuto da DNF?
Esercizi Esplorativi
-
Come useresti
zypper
per scoprire quale pacchetto detiene il file/usr/sbin/swapon
? -
Come puoi ottenere un elenco di tutti i pacchetti installati nel sistema usando
dnf
? -
Usando
dnf
, qual è il comando per aggiungere un repository situato inhttps://www.example.url/home:reponame.repo
al sistema? -
Come puoi usare
zypper
per verificare se il pacchettounzip
è installato? -
Usando
yum
, scopri quale pacchetto fornisce il file/bin/wget
.
Sommario
In questa lezione abbiamo imparato:
-
Come usare
rpm
per installare, aggiornare e rimuovere i pacchetti. -
Come usare
yum
,zypper
ednf
. -
Come ottenere informazioni su un pacchetto.
-
Come ottenere un elenco dei contenuti di un pacchetto.
-
Come scoprire da quale pacchetto proviene un file.
-
Come elencare, aggiungere, rimuovere, abilitare o disabilitare i repository di software.
Sono stati discussi i seguenti file, termini e utilità:
-
rpm
-
yum
-
dnf
-
zypper
Risposte agli Esercizi Guidati
-
Usando
rpm
su un sistema Red Hat Enterprise Linux, come installereste il pacchettofile-roller-3.28.1-2.el7.x86_64.rpm
tanto da fargli mostrare una barra di avanzamento durante l’installazione?Utilizzare l’opzione
-i
per installare un pacchetto e l’opzione-h
per abilitare gli “hash mark” per mostrare l’avanzamento dell’installazione. Quindi, la risposta è:rpm -ih file-roller-3.28.1-2.el7.x86_64.rpm
. -
Usando
rpm
, scopri quale pacchetto contiene il file/etc/redhat-release
.Si stanno richiedendo informazioni su un file, quindi usare l’opzione
-qf
:rpm -qf /etc/redhat-release
. -
Come useresti
yum
per verificare la presenza di aggiornamenti per tutti i pacchetti nel sistema?Utilizzare l’operazione
check-update
senza un nome pacchetto:yum check-update
. -
Usando
zypper
, come disabiliteresti un repository chiamato repo-extras?Usare il parametro
editrepo
per cambiare i parametri di un repo, e l’opzione-d
per disabilitarlo:zypper editrepo -d repo-extra
. -
Se hai un file
.repo
che descrive un nuovo repository, dove dovrebbe essere messo questo file in modo che venga riconosciuto da DNF?I file
.repo
per DNF dovrebbero essere messi nella stessa locazione usata da YUM, quindi all’interno di/etc/yum.repos.d/
.
Risposte agli Esercizi Esplorativi
-
Come useresti
zypper
per scoprire quale pacchetto detiene il file/usr/sbin/swapon
?Usare il parametro
se
(search) e l’opzione--provides
:zypper se --provides /usr/sbin/swapon
. -
Come puoi ottenere un elenco di tutti i pacchetti installati nel sistema usando
dnf
?Utilizzare il parametro
list
, seguito dall’opzione--installed
:dnf list --installed
. -
Usando
dnf
, qual è il comando per aggiungere un repository situato inhttps://www.example.url/home:reponame.repo
al sistema?Apportare modfiche ai repository è un “configuration change”, quindi usare
config-manager
e l’opzione--add_repo
:dnf config-manager --add_repo https://www.example.url/home:reponame.repo
. -
Come puoi usare
zypper
per verificare se il pacchettounzip
è installato?IS deve effettuare una ricerca (
se
) sui pacchetti installati (-i
):zypper se -i unzip
. -
Usando
yum
, scopri quale pacchetto fornisce il file/bin/wget
.Per scoprire cosa fornisce un file, usare
whatprovides
e il nome del file:yum whatprovides /bin/wget
.