【初心者必見!】yum history infoの見方をわかりやすく丁寧に(Red Hat系Linux)

【初心者必見!】yum history infoの見方をわかりやすく丁寧に プログラミング

yum history info を叩いてみたものの、なんとなくこんなコマンド叩いてたんだーくらいで、「実際何が表示されているのかよくわからない」という方いらっしゃいませんか?

「トランザクションの実行と切り替えたパッケージって何が違う?」

「この@ってなんなの??」

そんな疑問に答えたいと思います。

私自身、初めてみたときわけわからず、苦労したので、初心者の方にもわかりやすく解説しました!

yum history info ~ の使い方と前提知識

そもそも、どういう意図がある場合に使うコマンドなのでしょうか?

ひとつ私が経験したケースとしては、

「このサーバーにはどんなパッケージが入っているのだろうか?」

これを調べるときですね。

そんなときに役立つのが

$ sudo yum history list

です。

yumを使用して入れたソフト(更新や削除も含む)の履歴を全てみることができます。

しかし、どんなソフトを入れたかまで教えてくれないのが玉に瑕。

そこで、yum history listで得たIDを指定してあげることで、詳細な情報を表示することができます。

例えばIDが16番の情報が知りたいと思った時はこんな感じです。

$ sudo yum history info 16

今回取り扱う例

例えば、こんな感じの結果が出たとします;

$ sudo yum history info 16
読み込んだプラグイン:hoge, fuga, piyo
・・・(中略)・・・
トランザクション ID : 16
開始時間            : Fri Jun 17 14:21:51 2016
開始 rpmdb          : 1234:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
終了時間            :            14:21:55 2016 (4 秒)
終了 rpmdb          : 1234:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ユーザー            : root <root>
終了コード          : 成功
コマンドライン      : install git
トランザクションの実行:
    インストール rpm-4.11.3-17.el7.x86_64                  @anaconda/7.2
    インストール subscription-manager-1.15.9-15.el7.x86_64 @anaconda/7.2
    インストール yum-3.4.3-132.el7.noarch                  @anaconda/7.2
切り替えたパッケージ:
    インストール git-1.8.3.1-6.el7_2.1.x86_64        @rhel-7-server-rpms
    依存インストール perl-Git-1.8.3.1-6.el7_2.1.noarch   @rhel-7-server-rpms
    依存インストール perl-TermReadKey-2.30-20.el7.x86_64 @rhel-7-server-rpms
history info

今回はこの結果を例として、詳細を解説していきたいと思います。

今回のOS:RHEL7

ちなみに、OSはRHEL7です;

$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.2 (Maipo)

プラス事前情報として、Apacheが動いていて、PHPで書かれたアプリケーションをホストしているWebサーバーであることがわかっています。

OSって何?RHELなんて初めて聞いた、という方は、こちらの記事が役に立つと思います。

合わせてチェック!

そもそもyumって?rpmとの違いは?dnfってのも聞いたけど?

要すると、

  • rpmはRedHat系のLinuxで利用されるパッケージ管理ツール
    • パッケージを管理(インストールしたりアップデートしたり削除したり)できる
    • なお、この文脈では、「パッケージ=パッケージソフトウェア=つまりソフトウェア」とお考えください。以下、単に「パッケージ」と連呼します。
  • yumは、rpmの高機能版
    • ただ単体のパッケージを管理するだけでなく、リポジトリと連携し、未インストールのパッケージを検索できたり、依存性を解決してくれたり、自動更新してくれたりする。実質、裏ではrpmが動いている。
  • dnfは、yumの後継。最新のOSでは、yumの代わりにdnfを使用することが推奨される。

です。

詳しくは下記外部サイトを参照してください。今回の前提となる知識をわかりやすく解説してくれています。
【yum入門】yumとは何か?Linuxにおけるyumとrpmの違い

1.トランザクションID〜コマンドラインまで

結果を再掲します。

トランザクション ID : 16
開始時間            : Fri Jun 17 14:21:51 2016
開始 rpmdb          : 1234:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
終了時間            :            14:21:55 2016 (4 秒)
終了 rpmdb          : 1234:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ユーザー            : root <root>
終了コード          : 成功
コマンドライン      : install git

ここに関しては、見てなんとなくおわかりかと思いますが、一応。

トランザクションID:各トランザクションに割り振られた付番
開始時間:トランザクションが開始された時刻
開始 rpmdb:トランザクションが開始されたrpmdb
終了時間:トランザクションが終了した時刻(カッコ内はかかった時間)
終了 rpmdb:トランザクションが終了したrpmdb
ユーザー:トランザクションを実行したユーザー名
終了コード:トランザクションが成功したか失敗したか
コマンドライン:実行されたコマンド(sudo yumは省略されている形だと思います)

見たまんまですね。笑

そもそもトランザクションとは?

「そもそもトランザクションって?」と思った方、いきなりトランザクションと連呼して申し訳ありません・・・ここからは「トランザクションって当然知ってるよね?」というテンションで話が進みますので、そもそもトランザクションって何?な方は、まずはこちらの記事を一読下さい。時間のない方は、とりあえず「まとめてやってほしい複数の処理」と読み替えていけば一応理解できるかと思います。

トランザクションID〜コマンドラインまで

2.トランザクションの実行

結果を再掲します。

トランザクションの実行:
    インストール rpm-4.11.3-17.el7.x86_64                  @anaconda/7.2
    インストール subscription-manager-1.15.9-15.el7.x86_64 @anaconda/7.2
    インストール yum-3.4.3-132.el7.noarch                  @anaconda/7.2

最初左列の「インストール」は、英語版では「Installed」と書かれており、要するに既にインストールされたコマンドを使用しますよ、という意味。
中央列のアルファベットと数字の羅列は、今回のトランザクションで使用された管理ツールとそのバージョンが示されています。rpm, yumは先ほど解説したパッケージ管理ツール、subscription-managerはRed Hatソフトウェアの管理ツールです。その後ろのハイフン以降はバージョンを表します。
最後右列の@anaconda/7.2は、上記管理ツールを提供しているレポジトリ(詳細後述)の名前です。

ここの3行は、どのトランザクションIDでも、同じことが書いてあります。この「トランザクションの実行」には、どんな管理ツールを実行したか?が書かれているのであって、何をインストールしたか?が書かれているのではない、というのがポイントです。

リポジトリとは

先ほど、@anaconda/7.2はレポジトリだ、というお話が出てきたかと思いますが、「そもそもリポジトリって何?」な方もいらっしゃることでしょう。

リポジトリとは、様々なパッケージの貯蔵庫&管理システムのことです。Windowsでいうところの「Vector」や「窓の杜」といったソフトウェア配布サイトみたいなイメージです。Windowsユーザーなら、一度は聞いたことがあるのではないでしょうか。開発者は、開発したパッケージを登録することで多くの人に使ってもらえるし、ユーザーはそこから欲しいパッケージをダウンロード/インストールすることができます。

Windowsにも、様々なソフトウェア配布サイトが存在するように、 LinuxにもEPELやらRemiといった複数のリポジトリが存在し、それぞれリ扱っているパッケージが異なります。特に、「公式リポジトリ」と「サードパーティリポジトリ」があることは押さえておく必要があります。公式リポジトリは最初からあるいは無効を有効に変えるだけで使用することが可能ですが、サードパーティーリポジトリは手動でダウンロードする必要があります。先ほどのEPELRemiはRedHat系で有名なサードパーティーリポジトリのひとつです。RHEL 8の公式リポジトリにはBaseOSAppStreamがあり、CentOS 7の公式リポジトリにはBaseExtrasUpdatesがあります。

詳しくはこちらのサイトを御覧下さい。
CentOSとパッケージとリポジトリ

「他のリポジトリにはどんなものがあるの?」という問に対しては、少し古いですが、下記外部サイトがわかりやすいです。
yumリポジトリ追加リスト 完全版

サーバーで直接確認したい方は、

$ yum repolist all

とコマンドで叩くと、ダウンロード済みのリポジトリのリストを確認することができます。

yum installの@(アットマーク)の意味

さて、リポジトリの頭についている”@”(アットマーク)が気になった方も多いのではないでしょうか。私も気になり調べましたが、検索しても、なかなか出てこないんですよね・・・何より検索エンジンで”@”が調べにくい!

先輩に確認したところ、これは「グループ」を意味する記号だそうです。

そのグループで定義されているものがまとめてインストールされるということです。

例えば、以下、Red Hatの公式サイトから引用します。

~]# yum group install "KDE Desktop"
~]# yum group install kde-desktop
~]# yum install @"KDE Desktop"
~]# yum install @kde-desktop

これらが同等の意味合いということのようです。リポジトリを丸ごとインストールしているイメージですね。

3.切り替えたパッケージ

結果を再掲します。

切り替えたパッケージ:
    インストール git-1.8.3.1-6.el7_2.1.x86_64        @rhel-7-server-rpms
    依存インストール perl-Git-1.8.3.1-6.el7_2.1.noarch   @rhel-7-server-rpms
    依存インストール perl-TermReadKey-2.30-20.el7.x86_64 @rhel-7-server-rpms
history info

これが、実際にインストールされたパッケージ名+バージョンになります。

rhel-7-server-rpmsというリポジトリから、バージョンが1.8.3.1-6.el7_2.1.x86_64のGitのパッケージがインストールされていることがわかりますね。

それに伴い、「依存インストール」という形で、一緒にインストールしておくべきパッケージもインストールしてくれています。今回、コマンドラインがinstall git だったので、それとも辻褄が合います。これがyumの良いところですね。

インストールの他に、Update(更新)やRemove(削除)した場合も、インストールした場合と同様に、どんなリポジトリのどんなパッケージを操作したのか知ることができます。

yum history infoの見方のまとめ

以上より、yum history infoでわかることをざっくりまとめると、

<yum history infoでわかること>

  • いつ誰がどんなコマンドを実行したか
  • トランザクションを実行した管理ツールの名前+バージョン
  • 切り替えたパッケージの情報
    • 操作内容(Install / Update / Remove)
    • 操作したパッケージの名前+バージョン
    • 使用したリポジトリの名前

となります。

こういったニッチで限定的な内容は触れているサイトも少なく、Google検索してもなかなかヒットしないため自学自習が非常に困難でした。同じように悩んでいる方のお役に立てれば幸いです。

はるすと
はるすと

最後まで読んでくださってありがとうございました!

画像提供:PexelsによるPixabayからの画像

この記事を書いた人
こもれびエンジニア

自然と自由を愛するエンジニア。2021年1月に、大手製造業設計からプログラマ(Rails, AWS)へ転職。動物や自然との触れ合いや、汗を流すのが好き。

/HSP(繊細さん)/18デリケートな象/ストレングスファインダー(1分析思考/2親密性/3学習欲/4調和性/5収集心)、テニス、合気道、登山、あいだみつを、ジブリ、ワンピース、ドラゴンボール、AWS、Ruby on Rails、アイミング

はるすとをフォローする
プログラミング
スポンサーリンク
SNSでシェア/コメントしていただけると、投稿の励みになります! ↓ 各ページへジャンプ ↓
はるすとをフォローする
「そんなか」サイト

コメント

タイトルとURLをコピーしました