GNU/Linux >> Linux の 問題 >  >> Linux

rpmパッケージマネージャーを使用してパッケージ情報を照会する方法

RPMは、RPM Package Managerの再帰的な頭字語です。これは、Fedora、Red Hat Enterprise Linux、CentOS、OpenSUSE、およびそれらの派生物など、最も有名で最も使用されているLinuxディストリビューションのデフォルトの低レベルパッケージマネージャーです。ご想像のとおり、このソフトウェアは無料でオープンソースです。 -qで呼び出された場合 オプションを使用して、パッケージにクエリを実行し、依存関係、推奨事項、ファイルなどの特定の情報を取得できます。このチュートリアルでは、このようなクエリを実行する方法を学習します。

このチュートリアルでは、学習します

  • 「クエリ」モードでrpmを実行する方法
  • パッケージに関する一般的な情報を入手する方法
  • パッケージ変更ログの読み方
  • パッケージによって提供されるファイルを一覧表示する方法
  • パッケージで使用されるスクリプトを一覧表示する方法
  • パッケージの依存関係と推奨事項を一覧表示する方法
  • rpmによって廃止されたパッケージを一覧表示する方法

rpmパッケージマネージャーを使用してパッケージ情報を照会する方法

使用されるソフトウェア要件と規則

システム ソフトウェア その他 規約
ソフトウェア要件とLinuxコマンドラインの規則
カテゴリ 使用する要件、規則、またはソフトウェアバージョン
rpmパッケージマネージャーを使用するディストリビューション
rpmパッケージマネージャー
なし
#–指定されたlinux-commandを、rootユーザーとして直接、または sudoを使用してroot権限で実行する必要があります。 command
$ –指定されたlinux-commandsを通常の非特権ユーザーとして実行する必要があります

クエリモードでrpmを呼び出す

rpmパッケージマネージャーは、パッケージのインストール、アップグレード、および削除に使用できるため、システムのステータスを変更するために使用できます( -i で呼び出された場合)。 、 -U およびe オプション)、または -q を使用して起動すると、管理者権限を必要とせずに「クエリ」モードで実行できます。 オプション。これは-queryの短いバージョンです。 。

パッケージがすでにシステムにインストールされている場合は、名前で言及するだけです。そうでない場合は、ダウンロードした .rpmにクエリを実行します。 たとえば、ファイルは -pを使用する必要があります (-パッケージ )オプションを指定し、ファイルのパスを引数として指定します。パッケージに関する情報を取得する方法の実際的な例をいくつか見てみましょう。

パッケージに関する一般的な情報の入手

rpmパッケージを扱うときに実行したい基本的なことの1つは、それに関する一般的な情報を表示することです。このタスクを実行するには、 -iを使用するだけです。 (または-info )クエリモードでrpmを呼び出すときのオプション。この例では、システムにすでにインストールされている「gimp」パッケージを使用します。この場合、次のように実行します:

$ rpm -qi gimp

コマンドを呼び出した直後に、ソフトウェアの説明、バージョン、アーキテクチャ、インストール日、サイズなどの情報を含む、次のような出力が表示されます。

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.

パッケージ変更ログの読み取り

ご存知のとおり、変更ログは、プロジェクトに加えられたすべての変更が報告され、時系列で並べられたログです。 rpmパッケージの変更ログを読み取る場合は、クエリモードでrpmパッケージマネージャーを呼び出し、-changelogを使用する必要があります。 オプション。例を見てみましょう:

$ rpm -q --changelog gimp

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)

パッケージによって提供されるすべてのファイルの一覧表示

システムにパッケージをインストールすると、メンテナが意図したとおり、一連のファイルが適切な場所にコピーされます。システムにすでにインストールされているパッケージによって提供されるファイルを一覧表示する場合は、
rpmパッケージマネージャーをクエリモードで-lを使用して呼び出すことができます。 オプション(-list の略) ):

$ rpm -ql gimp

前に述べたように、前にパッケージをクエリする場合 インストールしますが、代わりに -pを追加する必要があります オプションで、パッケージのパスを引数として指定します:

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

上記のコマンドは、次の結果を生成します。

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

パッケージで使用されるスクリプトの一覧表示

いくつかの.rpm パッケージは、インストールまたは削除プロセスの一部として実行される一連のスクリプトまたは「スクリプトレット」を使用します。それらを確認したい場合は、-scriptsを使用してクエリモードでrpmを呼び出して実行できます。
オプション。この例のために、 systemdに含まれているスクリプトをチェックアウトします。 パッケージ:

$ rpm -q --scripts systemd

以下に、Fedora 34で起動したときの、上記のコマンドの(切り捨てられた)出力を示します。ご覧のとおり、スクリプト自体の前に、スクリプトが使用されているコンテキストも報告されていることがわかります(例:「preinstall」または「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 || :
[...]

もう1つの同様のオプションは、-triggersです。 トリガースクリプトを表示するために使用されます パッケージに含まれています。トリガースクリプトとは何ですか?これらは基本的に、別のパッケージのステータスが変更されたときに実行(トリガー)されるスクリプトです

$ rpm -q --triggers systemd

上記のコマンドを使用すると、 systemdに含まれるトリガースクリプトを視覚化できます。 パッケージ:

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

パッケージの依存関係と推奨事項の一覧表示

実行したいもう1つの一般的なタスクは、rpmパッケージの依存関係を見つけることです。タスクを実行できるオプションは-Rです。 (の略-必須 )。たとえば、「gimp」パッケージの依存関係を確認するには、次のコマンドを実行します。

$ rpm -qR gimp

コマンドを実行すると、ソフトウェアの依存関係のリストが画面に報告されます:

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

-Rの代わりに -recommendsを使用するオプション クエリしているパッケージで厳密には必要とされていないが、推奨されているソフトウェアのリストを取得できます。

$ rpm -q --recommends gimp

rpmによって廃止されたパッケージのリスト

上記の例と同じように、どのパッケージが廃止されているかを確認できます。 クエリしているパッケージによって。 -obsoletesを使用するだけです。 オプション:

$ rpm -q --obsoletes gimp

例のコマンドの出力は次のとおりです。

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

結論

Rpmは非常に強力なパッケージマネージャーです。このチュートリアルでは、Rpmを「クエリ」モードで実行する方法を説明しました。バージョンやアーキテクチャなど、パッケージに関する一般的な情報を取得する方法、パッケージの変更ログを読み取る方法、パッケージによってインストールされるすべてのファイルを一覧表示する方法、「スクリプトレット」を確認する方法を確認しました。パッケージ管理の一部として、およびパッケージの依存関係と推奨事項のリストを取得する方法として使用されます。


Linux
  1. rpmパッケージをビルドする方法

  2. LinuxRPMパッケージを作成する方法

  3. Debian11BullseyeにRPMパッケージをインストールする方法

  1. VoidLinuxでXBPSパッケージマネージャーを使用する方法

  2. パッケージを照会、インストール、削除、およびアップグレードするための RPM コマンドの例

  3. 他のパッケージが依存していない DNF を持つすべてのパッケージを削除する方法

  1. UbuntuにRPMパッケージをインストールする方法

  2. YumまたはRPMを使用してCentOSにインストールされているパッケージを一覧表示する方法

  3. rpm の内容を抽出するにはどうすればよいですか?