知っておくとちょっと便利!パッケージマネージャについて1 ~Red Hat 系システム編~

今回は、パッケージマネージャについて解説します!

パッケージマネージャとは

パッケージマネージャとは、システムにインストールされているソフトウェア (パッケージ) をリポジトリと呼ばれるオンラインデータベース上で管理するためのツールです。

パッケージマネージャの主な目的はソフトウェアのインストール、アップグレード、削除を行うことですが、中でもパッケージの依存関係を自動的に解決してくれるところがメリットと言えます。

代表的なパッケージマネージャは、Red Hat 系システムだと yumdnf、Debian 系システムだと apt があります。

今号では Red Hat 系の yumdnf についてご紹介します。

yum と dnf の違いは?

Red Hat 系システムでは yum と dnf、2つのコマンドが用意されています。
yum は以前から使用されていたコマンドであり、多くの Linux ユーザにとって馴染み深いコマンドです。それに対して dnf は yum の後継として開発され、様々な改善が取り入れられています。

細かな違いとしては、それぞれ下記の通りとなっています。

  • yum は Python2 に基づいて、dnf は Python3 に基づいて開発されている
  • yum は定期的に不要なキャッシュを手動でクリアする必要があるが、dnf は自動的にクリアする機能が実装されている
  • dnf は実装の改善により、パフォーマンスが向上している

なお、Fedora22 (RHEL8 系) 以降では標準のパッケージマネージャが yum から dnf に変更されています。yum と dnf では、サブコマンドやオプションも同じものが使用可能であるため、yum を使い慣れたユーザでも dnf に移行しやすい設計になっています。

基本の操作方法 (検索、インストール、アップデート、削除)

yum、dnf コマンドの基本操作 (パッケージの検索、インストール、アップデート、削除) について、それぞれ説明します。
なお、上にも記載の通りサブコマンドやオプションは同じとなるため、dnf コマンドの実行例のみ掲載しています。

  • 検索
    特定のパッケージを検索するには、dnf search コマンドを実行します。
    例えば、git というパッケージを検索する場合は、下記の様なコマンドになります。

    # dnf search git
    …
    ============================================== Name Exactly Matched: git ===============================================
    git.x86_64 : Fast Version Control System
    ============================================= Name & Summary Matched: git ==============================================
    git-all.noarch : Meta-package to pull in all git tools
    git-clang-format.i686 : Integration of clang-format for git
    …
    (長いため省略)
    …
    ================================================== Name Matched: git ===================================================
    kacst-digital-fonts.noarch : Fonts for arabic from arabeyes project
    ================================================= Summary Matched: git =================================================
    LibRaw.x86_64 : Library for reading RAW files obtained from digital photo cameras
    LibRaw.i686 : Library for reading RAW files obtained from digital photo cameras
    …
    

    この時、結果には git という文字列を含むパッケージすべてと、要約 (説明文) が表示されます。

    yum コマンドの場合は、下記の様になります。

    # yum search git
    
  • インストール
    パッケージをインストールするには、dnf install コマンドを実行します。
    例えば、git というパッケージをインストールする場合は、下記の様なコマンドになります。

    # dnf install git
    …
    ========================================================================================================================
     Package                     Architecture      Version                      Repository                             Size
    ========================================================================================================================
    Installing:
     git                         x86_64            2.43.5-1.el8_10              rhel-8-appstream-rhui-rpms             92 k
    Installing dependencies:
     emacs-filesystem            noarch            1:26.1-11.el8                rhel-8-baseos-rhui-rpms                70 k
     git-core                    x86_64            2.43.5-1.el8_10              rhel-8-appstream-rhui-rpms             11 M
     git-core-doc                noarch            2.43.5-1.el8_10              rhel-8-appstream-rhui-rpms            3.1 M
     perl-Error                  noarch            1:0.17025-2.el8              rhel-8-appstream-rhui-rpms             46 k
     perl-Git                    noarch            2.43.5-1.el8_10              rhel-8-appstream-rhui-rpms             79 k
     perl-TermReadKey            x86_64            2.37-7.el8                   rhel-8-appstream-rhui-rpms             40 k
    
    Transaction Summary
    ========================================================================================================================
    Install  7 Packages
    
    Total download size: 14 M
    Installed size: 46 M
    Is this ok [y/N]:
    

    この時、指定したパッケージのみではなく git と依存関係があるパッケージも併せてインストールされます。

    なお、上記の様にインストールを開始する前に Is this ok [y/N]: の文字列が表示され、インストールを続行するかを聞かれます。y を押下するとインストール続行、N (もしくは n) を押下するとインストールを中止します。

    yum コマンドの場合は、下記の様になります。

    # yum install git
    
  • アップデート
    パッケージをアップデートするには、dnf update コマンドを実行します。
    例えば、既にインストール済みの git というパッケージをアップデートする場合は、下記の様なコマンドになります。

    # dnf update git
    …
    ========================================================================================================================
     Package                  Architecture       Version                       Repository                              Size
    ========================================================================================================================
    Upgrading:
     git                      x86_64             2.43.5-1.el8_10               rhel-8-appstream-rhui-rpms              92 k
     git-core                 x86_64             2.43.5-1.el8_10               rhel-8-appstream-rhui-rpms              11 M
     git-core-doc             noarch             2.43.5-1.el8_10               rhel-8-appstream-rhui-rpms             3.1 M
     perl-Git                 noarch             2.43.5-1.el8_10               rhel-8-appstream-rhui-rpms              79 k
    
    Transaction Summary
    ========================================================================================================================
    Upgrade  4 Packages
    
    Total download size: 14 M
    Is this ok [y/N]:
    

    yum コマンドの場合は、下記の様になります。

    # yum update git
    
  • 削除
    パッケージをシステム上から削除するには、dnf remove コマンドを実行します。
    例えば、既にインストール済みの git というパッケージを削除する場合は、下記の様なコマンドになります。

    # dnf remove git
    …
    ========================================================================================================================
     Package                     Architecture      Version                     Repository                              Size
    ========================================================================================================================
    Removing:
     git                         x86_64            2.27.0-1.el8                @rhel-8-appstream-rhui-rpms            368 k
    Removing unused dependencies:
     emacs-filesystem            noarch            1:26.1-11.el8               @rhel-8-baseos-rhui-rpms                 0
     git-core                    x86_64            2.27.0-1.el8                @rhel-8-appstream-rhui-rpms             32 M
     git-core-doc                noarch            2.27.0-1.el8                @rhel-8-appstream-rhui-rpms             12 M
     perl-Error                  noarch            1:0.17025-2.el8             @rhel-8-appstream-rhui-rpms             70 k
     perl-Git                    noarch            2.27.0-1.el8                @rhel-8-appstream-rhui-rpms             63 k
     perl-TermReadKey            x86_64            2.37-7.el8                  @rhel-8-appstream-rhui-rpms             65 k
    
    Transaction Summary
    ========================================================================================================================
    Remove  7 Packages
    
    Freed space: 45 M
    Is this ok [y/N]:
    

    yum コマンドの場合は、下記の様になります。

    # yum remove git
    

yum、dnf コマンドについての補足事項

  • dnf (yum) install コマンド実行時に対象パッケージが既にインストール済みである場合はアップデートが実行され、反対に dnf (yum) update コマンド実行時に対象パッケージがインストールされていない場合はインストールが実行されます。
  • パッケージ名の後ろにバージョン指定がない場合は、リポジトリ内での最新バージョンがインストールまたはアップデートされます。明示的にインストール・アップデート先のバージョンを指定したい場合はパッケージ名の後にバージョンを指定 (例:dnf install git-2.27.0-1.el8 など) します。
  • -y オプション (例:dnf install -y など) を付けると、Is this ok [y/N]: が表示されず直ちに処理が開始されます。ただし、依存関係があるパッケージなどが事前に確認できなかったり、意図しないパッケージのインストール、アップデート、削除が行われる可能性があるので、利用は推奨しません。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です