GNU/Linux >> Znalost Linux >  >> Linux

Jak se dotazovat na informace o balíčcích pomocí správce balíčků rpm

RPM je rekurzivní zkratka pro RPM Package Manager:je to výchozí správce balíčků na nízké úrovni v některých z nejznámějších a nejpoužívanějších distribucí Linuxu, jako je Fedora, Red Hat Enterprise Linux, CentOS, OpenSUSE a jejich deriváty. Software, jak můžete očekávat, je bezplatný a open source; při vyvolání pomocí -q tato možnost může být použita k dotazování balíčků k získání specifických informací, jako jsou závislosti, doporučení, soubory atd. V tomto tutoriálu se naučíme, jak takové dotazy provádět.

V tomto tutoriálu se to naučíte :

  • Jak spustit otáčky za minutu v režimu dotazu
  • Jak získat obecné informace o balíčku
  • Jak číst protokol změn balíčku
  • Jak vypsat seznam souborů poskytovaných balíčkem
  • Jak vypsat seznam skriptů používaných balíčkem
  • Jak vytvořit seznam závislostí a doporučení balíčku
  • Jak vypsat seznam balíčků vykreslených jako zastaralé pomocí rpm

Jak se dotazovat na informace o balíčcích pomocí správce balíčků rpm

Použité softwarové požadavky a konvence

Softwarové požadavky a konvence příkazového řádku systému Linux
Kategorie Požadavky, konvence nebo použitá verze softwaru
Systém Distribuce, které používají správce balíčků rpm
Software Správce balíčků rpm
Jiné Žádné
Konvence # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí sudo command
$ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel

Vyvolání otáček za minutu v režimu dotazu

Správce balíčků rpm lze použít k úpravě stavu systému, protože jej lze použít k instalaci, aktualizaci a odstranění balíčků (při vyvolání pomocí -i , -U a e options), nebo může běžet v režimu „dotaz“ bez potřeby administrátorských práv, když je spuštěn pomocí -q volba, což je zkrácená verze --query .

Pokud je již balíček v našem systému nainstalován, vše, co musíme udělat, je uvést jej jménem; pokud tomu tak není a chceme se dotázat staženého .rpm musíme například použít -p (--package ) a zadejte cestu k souboru jako argument. Podívejme se na několik praktických příkladů, jak získat informace o balíčku.

Získání obecných informací o balíčku

Jednou ze základních věcí, kterou můžeme chtít udělat při jednání s balíčkem rpm, je zobrazení obecných informací o něm. Ke splnění tohoto úkolu nám nezbývá než použít -i (nebo --info ) možnost při vyvolání rpm v režimu dotazu. Pro tento příklad budeme pracovat s balíčkem „gimp“, který je již v systému nainstalován. V tomto případě bychom spustili:

$ rpm -qi gimp

Ihned po vyvolání příkazu obdržíme výstup podobný následujícímu, který obsahuje informace, jako je popis softwaru, jeho verze, architektura, datum instalace, velikost atd.:

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.

Čtení protokolu změn balíčku

Jak víme, changelog je protokol, ve kterém jsou hlášeny a chronologicky seřazeny všechny změny provedené v projektu. Pokud chceme číst changelog balíčku rpm, musíme vyvolat správce balíčků rpm v režimu dotazu a použít --changelog volba. Podívejme se na příklad:

$ rpm -q --changelog gimp

Zde je (zkrácený) výstup výše uvedeného příkazu na nejnovější verzi Fedory (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)

Výpis všech souborů poskytovaných balíčkem

Když nainstalujeme balíček do našeho systému, řada souborů se zkopíruje na vhodná místa, jak to zamýšlel jeho správce. Pokud chceme vypsat soubory poskytované balíčkem, který je již nainstalovaný v našem systému, můžeme vyvolat
správce balíčků rpm v režimu dotazu s -l volba (zkratka pro --list ):

$ rpm -ql gimp

Jak jsme již řekli, pokud chceme dotaz na balíček před nainstalujeme, místo toho musíme přidat -p a zadejte cestu k balíčku jako argument:

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

Výše uvedený příkaz vytvoří následující výsledek:

/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
[...]

Výpis skriptů používaných balíčkem

Některé .rpm balíčky používají řadu skriptů nebo „scriptletů“, které se spouštějí jako součást procesu instalace nebo odstranění. Pokud se na ně chceme podívat, můžeme to udělat vyvoláním rpm v režimu dotazu pomocí --scripts
možnost. V zájmu tohoto příkladu prověříme skripty obsažené v systemd balíček:

$ rpm -q --scripts systemd

Níže můžeme vidět (zkrácený) výstup výše uvedeného příkazu při spuštění na Fedoře 34. Jak můžete vidět, před samotnými skripty si můžeme všimnout, že je také hlášen kontext, ve kterém jsou použity (např. „preinstall“ nebo „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 || :
[...]

Další podobnou možností je --triggers který se používá k zobrazení spouštěcích skriptů obsažené v balení. Co jsou spouštěcí skripty? Jsou to v podstatě skripty, které se spouštějí (spouštějí), když se stav jiného balíčku
změní:

$ rpm -q --triggers systemd

Pomocí výše uvedeného příkazu můžeme vizualizovat spouštěcí skripty obsažené v systemd balíček:

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 || :

Výpis závislostí a doporučení balíčku

Dalším běžným úkolem, který můžeme chtít provést, je najít závislosti balíčku rpm. Možnost, která nám umožní úkol splnit, je -R (zkratka pro --requires ). Pro kontrolu závislostí balíčku „gimp“ bychom například spustili následující příkaz:

$ rpm -qR gimp

Jakmile příkaz spustíme, na obrazovce se zobrazí seznam softwarových závislostí:

/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
[...]

Pokud místo -R používáme možnost --recommends můžeme získat seznam softwaru, který není nezbytně nutný pro dotazovaný balíček, ale je jím doporučen:

$ rpm -q --recommends gimp

Výpis balíčků vykreslených jako zastaralé pomocí rpm

Stejným způsobem jako ve výše uvedených příkladech můžeme vidět, které balíčky jsou vykresleny jako zastaralé balíkem, na který se ptáme. Jediné, co musíme udělat, je použít --obsoletes možnost:

$ rpm -q --obsoletes gimp

Zde je výstup příkazu v příkladu:

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

Závěry

Rpm je velmi výkonný správce balíčků:v tomto tutoriálu jsme viděli, jak jej spustit v režimu „dotazu“. Viděli jsme, jak získat obecné informace o balíčku, jako je jeho verze a architektura, jak číst protokol změn balíčku, jak vypsat všechny soubory, které bude balíček nainstalován, jak se podívat na „scriptlety“, které se používají jako součást správy balíků a jak získat seznam závislostí balíků a doporučení.


Linux
  1. Jak sestavit rpm balíčky

  2. Jak používat XBPS Package Manager na Void Linux

  3. Jak vytvořit balíček RPM pro Linux

  1. Jak nainstalovat balíčky RPM na Debian 11 Bullseye

  2. Příklady příkazů RPM pro dotazování, instalaci, odstranění a upgrade balíčků

  3. Jak extrahuji obsah rpm?

  1. Jak nainstalovat balíčky RPM na Ubuntu

  2. Jak vypsat nainstalované balíčky na CentOS pomocí Yum nebo RPM

  3. Jak odstranit všechny balíčky s DNF, na kterých žádný jiný balíček nezávisí