rpmコマンド : RPMパッケージ管理

Linuxコマンド(パッケージ管理)
2023-11-14
ヒーローイメージ

目次
  1. コマンド概要
  2. コマンド書式
  3. コマンド使用例

コマンド概要

  • rpmコマンドはRPMパッケージのインストール、アンインストール、アップデート、検索、検証、を実施するコマンドです。

    Note
    • Red Hat系ディストリビューションは、RPMでシステムファイルを管理しています。
    • RPMパッケージファイルはyumdownloaderコマンドを利用することでYumレポジトリから入手することができます。
  • RPMパッケージには以下2種類のパッケージがあります。

    • .x86_64.rpmのようにファイル名末尾にアーキテクチャ名と.rpm拡張子がついたバイナリパッケージ。
      インストールするファイルのパーミッションやインストール後に実行するスクリプトなどがメタデータとして含まれています。

    • .src.rpmという拡張子のソースファイルのみが含まれるソースパッケージ。
      バイナリパッケージを作成するためのspecファイルと呼ばれるファイルが含まれます。

コマンド書式

コマンド書式
rpm オプション [パッケージ名]
主要なオプション
オプション 説明

-i
--install

指定したRPMパッケージをインストールする。

-U
--upgrade

指定したRPMパッケージでアップデートする。該当パッケージがインストールされていない場合はインストールする。

-F
--freshen

指定したRPMパッケージが、①既にインストールされていて②インストール済バージョンより新しい、場合のみアップデートする。

-e
--erase

指定したRPMパッケージをアンインストールする。

-q
--query

指定したRPMパッケージ情報を表示する。

-V
--verfy

指定した(インストール済の)RPMパッケージをrpmデータベースに保持されいてるメタデータを使って検証する。
オプション(インストール/アップデート/アンインストール)
オプション 説明

-h
--hash

プログレスバー(進捗状態)を表示する。

-v
 

デバッグ情報を表示する。

--nodeps
 

パッケージの依存関係をチェックしない。

--percent
 

進捗状況をパーセンテージで表示する。
オプション(情報表示)
オプション 説明

-a
--all

全てのインストール済パッケージ情報を表示する。

-c
--configfiles

指定したRPMパッケージ(=文字列)に含まれる設定ファイル情報を表示する。

-i 文字列
--info 文字列

指定したRPMパッケージ(=文字列)の詳細情報を表示する。

-l 文字列
--list 文字列

指定したRPMパッケージ(=文字列)に含まれるファイル一覧を表示する。

-p 文字列
--package 文字列

インストールされたRPMパッケージではなく、指定したRPMパッケージファイル(=文字列)の情報を表示する。

-R 文字列
--requires 文字列

指定したRPMパッケージ(=文字列)の依存パッケージを表示する。

-v
 

詳細なデバッグ情報を表示する。
オプション(検証)
オプション 説明

-v
 

詳細情報を表示する。

コマンド使用例

動作確認環境
項目 補足
OS Amazon Linux 2
シェル bash 4.2.46
コマンド RPM version 4.11.3
PS1 [\u@\h \W]$ プロンプト表示形式は [ユーザ名@ホスト名 カレントディレクトリ名]ユーザ権限
PS2 > 継続行のプロンプト表示形式

rpm -i : パッケージインストール

  • -iオプションを使用するとRPMパッケージをインストールすることができます。

    Note
    下記例では--nodepsオプションを追加することでパッケージの依存関係をチェックしないようにしています。
    コマンド例
    // rootユーザ操作
    // カレントディレクトリ状態(パッケージファイルが存在する)
    [root@hostname ~]# ls
    python3-3.7.16-1.amzn2.0.4.x86_64.rpm
    
    // RPMパッケージインストール状態(インストール前)
    [root@hostname ~]# rpm -q python3
    package python3 is not installed
    
    // RPMパッケージインストール
    [root@hostname ~]# rpm -i --nodeps python3-3.7.16-1.amzn2.0.4.x86_64.rpm
    
    // RPMパッケージインストール状態(インストール後)
    [root@hostname ~]# rpm -q python3
    python3-3.7.16-1.amzn2.0.4.x86_64
    
    
  • -iオプションに加えて以下のオプションを使用することができます。

    • -hオプションを使用するとインストール状況をプログレスバー(進捗状態)で表示します。
    • -vオプションを使用するとデバッグ情報を表示します。
    • --percentオプションを使用するとインストール状況をパーセンテージで表示します。
    コマンド例
    // rootユーザ操作
    // RPMパッケージインストール(プログレスバー表示)
    [root@hostname ~]# rpm -hi --nodeps python3-3.7.16-1.amzn2.0.4.x86_64.rpm################################# [100%]
    Updating / installing...
    ################################# [100%]
    
    // RPMパッケージインストール(デバッグ情報表示)
    [root@hostname ~]# rpm -iv --nodeps python3-3.7.16-1.amzn2.0.4.x86_64.rpmPreparing packages...
    python3-3.7.16-1.amzn2.0.4.x86_64
    
    // RPMパッケージインストール(パーセンテージ表示)
    [root@hostname ~]# rpm -i --percent --nodeps python3-3.7.16-1.amzn2.0.4.x86_64.rpm%% 0.000000
    %% 0.000000
    %% 0.348861
    %% 0.887544
    %% 1.244100
    %% 1.605787
    %% 3.065360
    %% 3.437307
    %% 29.206854
    %% 29.591625
    %% 62.792427
    %% 63.200291
    %% 80.925507
    %% 81.264107
    %% 99.681923
    %% 100.000000
    
    

rpm -U : パッケージアップデート

  • -Uオプションを使用するとRPMパッケージをアップデートすることができます。該当パッケージがインストールされていない場合はインストールされます。

    Note
    下記例では--nodepsオプションを追加することでパッケージの依存関係をチェックしないようにしています。
    コマンド例1
    // rootユーザ操作
    // カレントディレクトリ状態(パッケージファイルが存在する)
    [root@hostname ~]# ls
    python3-3.7.16-1.amzn2.0.4.x86_64.rpm
    
    // RPMパッケージインストール状態(アップデート前)
    [root@hostname ~]# rpm -q python3
    python3-3.7.10-1.amzn2.0.1.x86_64
    
    // RPMパッケージアップデート
    [root@hostname ~]# rpm -U --nodeps python3-3.7.16-1.amzn2.0.4.x86_64.rpm
    // RPMパッケージインストール状態(アップデート後)
    [root@hostname ~]# rpm -q python3
    python3-3.7.16-1.amzn2.0.4.x86_64
    
    
    コマンド例2
    // rootユーザ操作
    // カレントディレクトリ状態(パッケージファイルが存在する)
    [root@hostname ~]# ls
    python3-3.7.16-1.amzn2.0.4.x86_64.rpm
    
    // RPMパッケージインストール状態(アップデート前)
    [root@hostname ~]# rpm -q python3
    package python3 is not installed
    
    // RPMパッケージアップデート(未インストールの場合はインストール)
    [root@hostname ~]# rpm -U --nodeps python3-3.7.16-1.amzn2.0.4.x86_64.rpm
    
    // RPMパッケージインストール状態(アップデート後)
    [root@hostname ~]# rpm -q python3
    python3-3.7.16-1.amzn2.0.4.x86_64
    
    
  • -Uオプションに加えて以下のオプションを使用することができます。

    • -hオプションを使用するとアップデート状況をプログレスバー(進捗状態)で表示します。
    • -vオプションを使用するとデバッグ情報を表示します。
    • --percentオプションを使用するとアップデート状況をパーセンテージで表示します。
    コマンド例
    // rootユーザ操作
    // RPMパッケージアップデート(プログレスバー表示)
    [root@hostname ~]# rpm -hU --nodeps python3-3.7.16-1.amzn2.0.4.x86_64.rpm################################# [100%]
    Updating / installing...
    ################################# [ 50%]
    Cleaning up / removing...
    ################################# [100%]
    
    // RPMパッケージアップデート(デバッグ情報表示)
    [root@hostname ~]# rpm -Uv --nodeps python3-3.7.16-1.amzn2.0.4.x86_64.rpmPreparing packages...
    python3-3.7.16-1.amzn2.0.4.x86_64
    python3-3.7.10-1.amzn2.0.1.x86_64
    
    // RPMパッケージアップデート(パーセンテージ表示)
    [root@hostname ~]# rpm -U --percent --nodeps python3-3.7.16-1.amzn2.0.4.x86_64.rpm%% 0.000000
    %% 50.000000
    %% 0.000000
    %% 0.348861
    %% 0.887544
    %% 1.244100
    %% 1.605787
    %% 3.065360
    %% 3.437307
    %% 29.206854
    %% 29.591625
    %% 62.792427
    %% 63.200291
    %% 80.925507
    %% 81.264107
    %% 99.681923
    %% 100.000000
    %% 0.000000
    %% 7.692308
    %% 15.384616
    %% 23.076923
    %% 30.769232
    %% 38.461540
    %% 46.153847
    %% 53.846157
    %% 61.538464
    %% 69.230774
    %% 76.923080
    %% 84.615387
    %% 92.307693
    %% 100.000000
    
    

rpm -F : パッケージアップデート

  • -Fオプションを使用するとRPMパッケージをアップデートすることができます。該当パッケージがインストールされていない場合はアップデートされません

    Note
    下記例では--nodepsオプションを追加することでパッケージの依存関係をチェックしないようにしています。
    コマンド例
    // rootユーザ操作
    [root@hostname ~]# ls
    python3-3.7.16-1.amzn2.0.4.x86_64.rpm
    
    // RPMパッケージインストール状態(アップデート前)
    [root@hostname ~]# rpm -q python3
    python3-3.7.10-1.amzn2.0.1.x86_64
    
    // RPMパッケージアップデート
    [root@hostname ~]# rpm -F --nodeps python3-3.7.16-1.amzn2.0.4.x86_64.rpm
    
    // RPMパッケージインストール状態(アップデート後)
    [root@hostname ~]# rpm -q python3
    python3-3.7.16-1.amzn2.0.4.x86_64
    
    
  • -Fオプションに加えて以下のオプションを使用することができます。

    • -hオプションを使用するとアップデート状況をプログレスバー(進捗状態)で表示します。
    • -vオプションを使用するとデバッグ情報を表示します。
    • --percentオプションを使用するとアップデート状況をパーセンテージで表示します。
    コマンド例
    // rootユーザ操作
    // RPMパッケージアップデート(プログレスバー表示)
    [root@hostname ~]# rpm -hF --nodeps python3-3.7.16-1.amzn2.0.4.x86_64.rpm################################# [100%]
    Updating / installing...
    ################################# [ 50%]
    Cleaning up / removing...
    ################################# [100%]
    
    // RPMパッケージアップデート(デバッグ情報表示)
    [root@hostname ~]# rpm -Fv --nodeps python3-3.7.16-1.amzn2.0.4.x86_64.rpmPreparing packages...
    python3-3.7.16-1.amzn2.0.4.x86_64
    python3-3.7.10-1.amzn2.0.1.x86_64
    
    // RPMパッケージアップデート(パーセンテージ表示)
    [root@hostname ~]# rpm -F --percent --nodeps python3-3.7.16-1.amzn2.0.4.x86_64.rpm%% 0.000000
    %% 50.000000
    %% 0.000000
    %% 0.348861
    %% 0.887544
    %% 1.244100
    %% 1.605787
    %% 3.065360
    %% 3.437307
    %% 29.206854
    %% 29.591625
    %% 62.792427
    %% 63.200291
    %% 80.925507
    %% 81.264107
    %% 99.681923
    %% 100.000000
    %% 0.000000
    %% 7.692308
    %% 15.384616
    %% 23.076923
    %% 30.769232
    %% 38.461540
    %% 46.153847
    %% 53.846157
    %% 61.538464
    %% 69.230774
    %% 76.923080
    %% 84.615387
    %% 92.307693
    %% 100.000000
    
    

rpm -e : パッケージアンインストール

  • -eオプションを使用するとRPMパッケージをアンインストールすることができます。

    コマンド例
    // rootユーザ操作
    // RPMパッケージインストール状態(アンインストール前)
    [root@hostname ~]# rpm -q python3
    python3-3.7.16-1.amzn2.0.4.x86_64
    
    // RPMパッケージアンインストール
    [root@hostname ~]# rpm -e python3
    
    // RPMパッケージインストール状態(アンインストール後)
    [root@hostname ~]# rpm -q python3
    package python3 is not installed
    
    
  • -eオプションに加えて以下のオプションを使用することができます。

    • -hオプションを使用するとアンインストール状況をプログレスバー(進捗状態)で表示します。
    • -vオプションを使用するとデバッグ情報を表示します。
    • --percentオプションを使用するとアンインストール状況をパーセンテージで表示します。
    コマンド例
    // rootユーザ操作
    // RPMパッケージアンインストール(プログレスバー表示)
    [root@hostname ~]# rpm -eh python3################################# [100%]
    Cleaning up / removing...
    ################################# [100%]
    
    // RPMパッケージアンインストール(デバッグ情報表示)
    [root@hostname ~]# rpm -ev python3Preparing packages...
    python3-3.7.16-1.amzn2.0.4.x86_64
    
    // RPMパッケージアンインストール(パーセンテージ表示)
    [root@hostname ~]# rpm -e --percent python3%% 0.000000
    %% 0.000000
    %% 7.692308
    %% 15.384616
    %% 23.076923
    %% 30.769232
    %% 38.461540
    %% 46.153847
    %% 53.846157
    %% 61.538464
    %% 69.230774
    %% 76.923080
    %% 84.615387
    %% 92.307693
    %% 100.000000
    
    

rpm -q : パッケージ情報表示

  • -qオプションを使用すると指定したRPMパッケージの情報を表示することができます。
コマンド例
// rootユーザ操作
// RPMパッケージ検索
[root@hostname ~]# rpm -q python3python3-3.7.16-1.amzn2.0.4.x86_64

  • -qオプションに加えて以下のオプションを使用することができます。

    • -aオプションを使用するとインストールされている全てのパッケージを表示します。
    • -cオプションを使用すると指定したRPMパッケージの設定ファイル情報を表示します。
    • -iオプションを使用すると指定したRPMパッケージの詳細情報を表示します。
    • -lオプションを使用すると指定したRPMパッケージに含まれるファイル一覧を表示します。
    • -pオプションを使用すると指定したRPMパッケージファイル情報を表示します。
    • -Rオプションを使用すると指定したRPMパッケージの依存パッケージを表示します。
    • -vオプションを使用すると詳細なデバッグ情報を表示します。
    コマンド例
    // rootユーザ操作
    // RPMパッケージ情報表示(全インストール済パッケージ表示)
    [root@hostname ~]# rpm -aqlibuuid-devel-2.30.2-2.amzn2.0.11.x86_64
    python2-six-1.11.0-8.amzn2.0.1.noarch
    system-release-2-14.amzn2.x86_64
    readline-devel-6.2-10.amzn2.0.2.x86_64
    cyrus-sasl-lib-2.1.26-24.amzn2.x86_64
    glibc-all-langpacks-2.26-63.amzn2.0.1.x86_64
    (以降省略)
    
    // RPMパッケージ設定ファイル情報表示
    [root@hostname ~]# rpm -qc bash/etc/skel/.bash_logout
    /etc/skel/.bash_profile
    /etc/skel/.bashrc
    
    // RPMパッケージ情報表示(詳細表示)
    [root@hostname ~]# rpm -qi python3Name        : python3
    Version     : 3.7.16
    Release     : 1.amzn2.0.4
    Architecture: x86_64
    Install Date: Tue 14 Nov 2023 12:39:33 PM UTC
    (以降省略)
    
    // RPMパッケージ情報表示(ファイル一覧表示)
    [root@hostname ~]# rpm -ql python3/usr/bin/pydoc3
    /usr/bin/pydoc3.7
    /usr/bin/python3
    /usr/bin/python3.7
    /usr/bin/python3.7m
    /usr/bin/pyvenv
    /usr/bin/pyvenv-3.7
    /usr/share/doc/python3-3.7.16
    /usr/share/doc/python3-3.7.16/README.rst
    /usr/share/licenses/python3-3.7.16
    /usr/share/licenses/python3-3.7.16/LICENSE
    /usr/share/man/man1/python3.1.gz
    /usr/share/man/man1/python3.7.1.gz
    
    // RPMパッケージファイル情報表示
    [root@hostname ~]# rpm -qp python3-3.7.16-1.amzn2.0.4.x86_64.rpmpython3-3.7.16-1.amzn2.0.4.x86_64
    
    // RPMパッケージ情報表示(依存パッケージ表示)
    [root@hostname ~]# rpm -qR python3libc.so.6()(64bit)
    libc.so.6(GLIBC_2.2.5)(64bit)
    libcrypt.so.1()(64bit)
    libdl.so.2()(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    libpython3.7m.so.1.0()(64bit)
    libutil.so.1()(64bit)
    python3-libs(x86-64) = 3.7.16-1.amzn2.0.4
    python3-pip
    python3-setuptools
    rpmlib(CompressedFileNames) <= 3.0.4-1
    rpmlib(FileDigests) <= 4.6.0-1
    rpmlib(PartialHardlinkSets) <= 4.0.4-1
    rpmlib(PayloadFilesHavePrefix) <= 4.0-1
    rtld(GNU_HASH)
    rpmlib(PayloadIsXz) <= 5.2-1
    
    // RPMパッケージ情報表示(詳細表示)
    [root@hostname ~]# rpm -qlv python3lrwxrwxrwx    1 root    root                        8 Aug 30 20:40 /usr/bin/pydoc3 -> pydoc3.7
    -rwxr-xr-x    1 root    root                       78 Aug 30 20:40 /usr/bin/pydoc3.7
    lrwxrwxrwx    1 root    root                        9 Aug 30 20:40 /usr/bin/python3 -> python3.7
    -rwxr-xr-x    2 root    root                     7048 Aug 30 20:41 /usr/bin/python3.7
    -rwxr-xr-x    2 root    root                     7048 Aug 30 20:41 /usr/bin/python3.7m
    lrwxrwxrwx    1 root    root                       10 Aug 30 20:40 /usr/bin/pyvenv -> pyvenv-3.7
    -rwxr-xr-x    1 root    root                      435 Aug 30 20:40 /usr/bin/pyvenv-3.7
    drwxr-xr-x    2 root    root                        0 Aug 30 20:45 /usr/share/doc/python3-3.7.16
    -rw-r--r--    1 root    root                     9894 Dec  6  2022 /usr/share/doc/python3-3.7.16/README.rst
    drwxr-xr-x    2 root    root                        0 Aug 30 20:45 /usr/share/licenses/python3-3.7.16
    -rw-r--r--    1 root    root                    12787 Dec  6  2022 /usr/share/licenses/python3-3.7.16/LICENSE
    lrwxrwxrwx    1 root    root                       14 Aug 30 20:41 /usr/share/man/man1/python3.1.gz -> python3.7.1.gz
    -rw-r--r--    1 root    root                     6760 Dec  6  2022 /usr/share/man/man1/python3.7.1.gz
    
    

rpm -V : パッケージ検証

  • -Vオプションを使用すると指定したインストール済RPMパッケージを検証することができます。

    コマンド例
    // rootユーザ操作
    // RPMパッケージインストール状態
    [root@hostname ~]# rpm -q python3
    python3-3.7.16-1.amzn2.0.4.x86_64
    
    // RPMパッケージ検証
    [root@hostname ~]# rpm -V python3Unsatisfied dependencies for python3-3.7.16-1.amzn2.0.4.x86_64:
        libpython3.7m.so.1.0()(64bit) is needed by (installed) python3-3.7.16-1.amzn2.0.4.x86_64
        python3-libs(x86-64) = 3.7.16-1.amzn2.0.4 is needed by (installed) python3-3.7.16-1.amzn2.0.4.x86_64
        python3-pip is needed by (installed) python3-3.7.16-1.amzn2.0.4.x86_64
        python3-setuptools is needed by (installed) python3-3.7.16-1.amzn2.0.4.x86_64
    
    
  • -Vオプションに加えて以下のオプションを使用することができます。

    • -vオプションを使用すると詳細表示します。
    コマンド例
    // rootユーザ操作
    // RPMパッケージ検証(詳細表示)
    [root@hostname ~]# rpm -vV python3Unsatisfied dependencies for python3-3.7.16-1.amzn2.0.4.x86_64:
            libpython3.7m.so.1.0()(64bit) is needed by (installed) python3-3.7.16-1.amzn2.0.4.x86_64
            python3-libs(x86-64) = 3.7.16-1.amzn2.0.4 is needed by (installed) python3-3.7.16-1.amzn2.0.4.x86_64
            python3-pip is needed by (installed) python3-3.7.16-1.amzn2.0.4.x86_64
            python3-setuptools is needed by (installed) python3-3.7.16-1.amzn2.0.4.x86_64
    .........    /usr/bin/pydoc3
    .........    /usr/bin/pydoc3.7
    .........    /usr/bin/python3
    .........    /usr/bin/python3.7
    .........    /usr/bin/python3.7m
    .........    /usr/bin/pyvenv
    .........    /usr/bin/pyvenv-3.7
    .........    /usr/share/doc/python3-3.7.16
    .........  d /usr/share/doc/python3-3.7.16/README.rst
    .........    /usr/share/licenses/python3-3.7.16
    .........  l /usr/share/licenses/python3-3.7.16/LICENSE
    .........  d /usr/share/man/man1/python3.1.gz
    .........  d /usr/share/man/man1/python3.7.1.gz
    
    

コメント


Palette Codeなるべく丁寧にプログラミング関連技術を解説するサイト