GNU/Linux >> Linux Esercitazione >  >> Linux

Come interrogare le informazioni sui pacchetti con il gestore pacchetti rpm

RPM è l'acronimo ricorsivo di RPM Package Manager:è il gestore di pacchetti di basso livello predefinito in alcune delle distribuzioni Linux più famose e più utilizzate, come Fedora, Red Hat Enterprise Linux, CentOS, OpenSUSE e loro derivati. Il software, come puoi aspettarti, è gratuito e open source; quando invocato con -q opzione può essere utilizzato per interrogare pacchetti per recuperare informazioni specifiche, come dipendenze, consigli, file ecc. In questo tutorial impariamo come eseguire tali query.

In questo tutorial imparerai :

  • Come eseguire rpm in modalità "query"
  • Come ottenere informazioni generali su un pacchetto
  • Come leggere il registro delle modifiche di un pacchetto
  • Come elencare i file forniti da un pacchetto
  • Come elencare gli script utilizzati da un pacchetto
  • Come elencare le dipendenze e i consigli di un pacchetto
  • Come elencare i pacchetti resi obsoleti da un rpm

Come interrogare le informazioni sui pacchetti con il gestore pacchetti rpm

Requisiti software e convenzioni utilizzati

Requisiti software e convenzioni della riga di comando Linux
Categoria Requisiti, convenzioni o versione del software utilizzata
Sistema Distribuzioni che utilizzano il gestore di pacchetti rpm
Software Il gestore di pacchetti rpm
Altro Nessuno
Convenzioni # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo command
$ – richiede l'esecuzione di determinati comandi linux come un normale utente non privilegiato

Richiamo di rpm in modalità query

Il gestore pacchetti rpm può essere utilizzato per modificare lo stato del sistema, poiché può essere utilizzato per installare, aggiornare e rimuovere pacchetti (quando invocato con -i , -U e e opzioni, rispettivamente), oppure può essere eseguito in modalità “query”, senza la necessità di privilegi di amministratore, quando viene lanciato con il -q opzione, che è la versione breve di --query .

Se un pacchetto è già installato sul nostro sistema, tutto ciò che dobbiamo fare è citarlo per nome; in caso contrario, vogliamo interrogare un .rpm scaricato file, per esempio, dobbiamo usare il -p (--package ) e fornire il percorso del file come argomento. Vediamo alcuni esempi pratici di come recuperare informazioni su un pacco.

Ottenere informazioni generali su un pacchetto

Una delle cose di base che potremmo voler fare quando si tratta di un pacchetto rpm è visualizzare informazioni generali su di esso. Per portare a termine questo compito, tutto ciò che dobbiamo fare è usare il -i (o --info ) quando si richiama rpm in modalità query. Per il bene di questo esempio lavoreremo con il pacchetto “gimp”, che è già installato nel sistema. In questo caso eseguiremmo:

$ rpm -qi gimp

Immediatamente dopo aver invocato il comando, riceviamo un output simile al seguente, che include informazioni, come la descrizione del software, la sua versione, l'architettura, la data di installazione, le dimensioni, ecc:

Name        : gimp
Epoch       : 2
Version     : 2.10.24
Release     : 1.fc34
Architecture: x86_64
Install Date: Mon 21 Jun 2021 11:26:33 AM CEST
Group       : Unspecified
Size        : 109267268
License     : GPLv3+ and GPLv3
Signature   : RSA/SHA256, Sat 03 Apr 2021 02:00:02 AM CEST, Key ID 1161ae6945719a39
Source RPM  : gimp-2.10.24-1.fc34.src.rpm
Build Date  : Sat 03 Apr 2021 01:13:55 AM CEST
Build Host  : buildhw-x86-11.iad2.fedoraproject.org
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://www.gimp.org/
Bug URL     : https://bugz.fedoraproject.org/gimp
Summary     : GNU Image Manipulation Program
Description :
GIMP (GNU Image Manipulation Program) is a powerful image composition and
editing program, which can be extremely useful for creating logos and other
graphics for web pages. GIMP has many of the tools and filters you would expect
to find in similar commercial offerings, and some interesting extras as well.
GIMP provides a large image manipulation toolbox, including channel operations
and layers, effects, sub-pixel imaging and anti-aliasing, and conversions, all
with multi-level undo.

Lettura di un log delle modifiche del pacchetto

Come sappiamo, un changelog è un log in cui tutte le modifiche apportate a un progetto vengono riportate e ordinate cronologicamente. Se quello che vogliamo fare è leggere il log delle modifiche di un pacchetto rpm, dobbiamo invocare il gestore pacchetti rpm in modalità query e usare il --changelog opzione. Vediamo un esempio:

$ rpm -q --changelog gimp

Ecco l'output (troncato) del comando sopra sull'ultima versione di Fedora (34):

[...]
 Thu Jan 09 2020 Josef Ridky <[email protected]> - 2:2.10.14-3
- Demodularizing of gimp (#1772469)

* Mon Nov 18 2019 Kalev Lember <[email protected]> - 2:2.10.14-2
- Rebuild for libmypaint 1.4.0

* Mon Nov 04 2019 Kalev Lember <[email protected]> - 2:2.10.14-1
- Update to 2.10.14

* Tue Aug 20 2019 Josef Ridky <[email protected]> - 2:2.10.12-3
- Fix default configuration for font folders (#1706653)

* Wed Jul 31 2019 Josef Ridky <[email protected]> - 2:2.10.12-2
- Fix issue with reading SVG files (#1715882)

* Thu Jul 25 2019 Fedora Release Engineering <[email protected]> - 2:2.10.12-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild

* Thu Jun 13 2019 Kalev Lember <[email protected]> - 2:2.10.12-1
- Update to 2.10.12

* Thu Apr 11 2019 Richard Shaw <[email protected]> - 2:2.10.10-2
- Rebuild for OpenEXR 2.3.0.

* Mon Apr 08 2019 Josef Ridky <[email protected]> - 2:2.10.10-1
- New upstream release 2.10.10 (#1697119)

Elencare tutti i file forniti da un pacchetto

Quando installiamo un pacchetto sul nostro sistema, una serie di file vengono copiati nei posti appropriati, come previsto dal suo manutentore. Se vogliamo elencare i file forniti da un pacchetto che è già installato sul nostro sistema possiamo invocare il
rpm package manager in modalità query con il -l opzione (abbreviazione di --list ):

$ rpm -ql gimp

Come abbiamo detto in precedenza, se vogliamo interrogare un pacchetto prima lo installiamo, invece, dobbiamo aggiungere il -p opzione e fornisci il percorso del pacchetto come argomento:

$ rpm -qlp /path/to/package.rpm

Il comando sopra produrrà il seguente risultato:

/etc/gimp
/etc/gimp/2.0
/etc/gimp/2.0/controllerrc
/etc/gimp/2.0/gimprc
/etc/gimp/2.0/gtkrc
/etc/gimp/2.0/menurc
/etc/gimp/2.0/sessionrc
/etc/gimp/2.0/templaterc
/etc/gimp/2.0/toolrc
/etc/gimp/2.0/unitrc
/usr/bin/gimp
/usr/bin/gimp-2.10
/usr/bin/gimp-console
/usr/bin/gimp-console-2.10
/usr/bin/gimp-test-clipboard-2.0
[...]

Elencare gli script utilizzati da un pacchetto

Alcuni .rpm packages utilizza una serie di script o "scriptlet" che vengono eseguiti come parte del processo di installazione o rimozione. Se vogliamo dargli un'occhiata, possiamo farlo invocando rpm in modalità query con il --scripts
opzione. Per il bene di questo esempio esamineremo gli script inclusi in systemd pacchetto:

$ rpm -q --scripts systemd

Di seguito possiamo vedere l'output (troncato) del comando sopra, quando lanciato su Fedora 34. Come puoi vedere, prima degli script stessi possiamo notare che viene riportato anche il contesto in cui vengono utilizzati (es. "preinstall" o "postinstall ”):

preinstall scriptlet (using /bin/sh):
getent group cdrom &>/dev/null || groupadd -r -g 11 cdrom &>/dev/null || :
getent group utmp &>/dev/null || groupadd -r -g 22 utmp &>/dev/null || :
getent group tape &>/dev/null || groupadd -r -g 33 tape &>/dev/null || :
getent group dialout &>/dev/null || groupadd -r -g 18 dialout &>/dev/null || :
getent group input &>/dev/null || groupadd -r input &>/dev/null || :
getent group kvm &>/dev/null || groupadd -r -g 36 kvm &>/dev/null || :
getent group render &>/dev/null || groupadd -r render &>/dev/null || :
getent group systemd-journal &>/dev/null || groupadd -r -g 190 systemd-journal 2>&1 || :
[...]

Un'altra opzione simile è --triggers che viene utilizzato per visualizzare gli script di attivazione contenuto in un pacco. Cosa sono gli script di attivazione? Sono fondamentalmente script che vengono eseguiti (attivati) quando lo stato di un altro pacchetto
cambia:

$ rpm -q --triggers systemd

Con il comando sopra possiamo visualizzare gli script di trigger contenuti nel systemd pacchetto:

triggerun scriptlet (using /bin/sh) -- systemd < 246.1-1
# This is for upgrades from previous versions before systemd-resolved became the default.
systemctl --no-reload preset systemd-resolved.service &>/dev/null || :

if systemctl -q is-enabled systemd-resolved.service &>/dev/null; then
  systemctl -q is-enabled NetworkManager.service 2>/dev/null && \
  ! test -L /etc/resolv.conf 2>/dev/null && \
  ! mountpoint /etc/resolv.conf &>/dev/null && \
  grep -q 'Generated by NetworkManager' /etc/resolv.conf 2>/dev/null && \
  echo -e '/etc/resolv.conf was generated by NetworkManager.\nRemoving it to let systemd-resolved manage this file.' && \
  mv -v /etc/resolv.conf /etc/resolv.conf.orig-with-nm && \
  ln -sv ../run/systemd/resolve/stub-resolv.conf /etc/resolv.conf 2>/dev/null || :

  systemctl start systemd-resolved.service &>/dev/null || :
fi
triggerpostun scriptlet (using /bin/sh) -- systemd < 247.3-2
# This is for upgrades from previous versions before oomd-defaults is available.
# We use %triggerpostun here because rpm doesn't allow a second %triggerun with
# a different package version.
systemctl --no-reload preset systemd-oomd.service &>/dev/null || :

Elencare le dipendenze e i consigli di un pacchetto

Un altro compito comune che potremmo voler eseguire è trovare le dipendenze di un pacchetto rpm. L'opzione che ci consente di eseguire l'operazione è -R (abbreviazione di --requires ). Per verificare le dipendenze del pacchetto “gimp”, ad esempio, eseguiremo il seguente comando:

$ rpm -qR gimp

Una volta eseguito il comando, sullo schermo verrà visualizzato l'elenco delle dipendenze del software:

/usr/bin/python2
babl(x86-64) >= 0.1.78
config(gimp) = 2:2.10.24-1.fc34
fontconfig >= 2.12.4
freetype >= 2.1.7
gegl04(x86-64) >= 0.4.30
gimp-libs(x86-64) = 2:2.10.24-1.fc34
glib2 >= 2.56.2
gtk2 >= 2.24.32
hicolor-icon-theme
[...]

Se invece di -R opzione che utilizziamo --recommends possiamo ottenere un elenco dei software che non sono strettamente necessari al pacchetto che stiamo interrogando, ma da esso consigliati:

$ rpm -q --recommends gimp

Elenco dei pacchetti resi obsoleti da un rpm

Allo stesso modo degli esempi precedenti, possiamo vedere quali pacchetti sono resi obsoleti dal pacchetto che stiamo interrogando. Tutto quello che dobbiamo fare è usare --obsoletes opzione:

$ rpm -q --obsoletes gimp

Ecco l'output del comando nell'esempio:

gimp < 2:2.10.24-1.fc34
gimp-help-browser < 2:2.10.24-1.fc34
gimp-unstable < 2:2.10

Conclusioni

Rpm è un gestore di pacchetti molto potente:in questo tutorial abbiamo visto come eseguirlo in modalità “query”. Abbiamo visto come ottenere informazioni generali su un pacchetto, come la sua versione e architettura, come leggere un log delle modifiche di un pacchetto, come elencare tutti i file che verranno installati da un pacchetto, come dare un'occhiata agli "scriptlet" che vengono utilizzati come parte della gestione del pacchetto e come ottenere un elenco delle dipendenze e dei consigli di un pacchetto.


Linux
  1. Come creare pacchetti rpm

  2. Come utilizzare XBPS Package Manager su Void Linux

  3. Come creare un pacchetto RPM Linux

  4. Come installare i pacchetti RPM su Debian 11 Bullseye

  5. Come estraggo il contenuto di un rpm?

Come installare i pacchetti RPM su CentOS 8

Come installare i pacchetti RPM in CentOS, RHEL e Fedora

Come installare i pacchetti RPM su Ubuntu 22.04 LTS

Come modificare i pacchetti esistenti in WHM?

Comando RPM:15 esempi per installare, disinstallare, aggiornare, interrogare pacchetti RPM

Come eseguire il downgrade dei pacchetti su un sistema Linux:la guida definitiva