0
0

More than 1 year has passed since last update.

【Linux】パッケージ管理①(rpm)

Posted at

パッケージとは

ソフトウェアを利用する際に必要となるプログラム・ライブラリ・設定ファイル・ドキュメント等のセットをパッケージと言います。

依存関係・競合関係の確認やパッケージの取得等を管理する仕組みは、パッケージ管理と言います。

依存関係は、パッケージAを動作させる為には、パッケージBが必要になるという関係性を指します。絵を描く為に紙(パッケージA)を用意したけど、ペン(パッケージB)も必要みたいな感じです。

競合関係は、別のパッケージでインストールされているファイルを含むパッケージのインストールを行った場合、すでにインストールされているファイルと競合する場合の関係値を指します。

このパッケージ管理を行う際には、rpmコマンドとyumコマンドを利用します。※自分は、rpmコマンドはあまり使わないです。パッケージ用意したりするのが、面倒です。。rpm -qaコマンドでパッケージ一覧用意して、どこかに転記する位でしか使った事がないです。

rpmコマンド

rpmパッケージの管理を行えるコマンドです。
yumとかdnfがあるので、rpmコマンドを使った事はあまりないです。(バージョンを事細かに指定する必要があれば、使うかもしれないですが、、)

ただせっかく勉強しているので、軽く動作検証をしたいと思います。

試しに、httpdをインストールしてみます。
インストールは、-iオプションを利用して行えるようです。また、-vで詳細情報及び-hで進行状況を確認出来るようです。

いざ、実行します。
実行してみると、ファイルがないよと怒られました。

httpインストール失敗
[root@localhost ~]# rpm -ivh httpd-2.4.6-98.el7.centos.7.x86_64.rpm
エラー: httpd-2.4.6-98.el7.centos.7.x86_64.rpm のオープンに失敗: そのようなファイルやディレクトリはありません

はい、、これはシンプルにパッケージがローカルに用意されていなかった事が原因です。
パッケージを用意します。Webから取得してもよいのですが、依存関係にあるパッケージが多いと嫌なので、yumdownloaderを使用します。

下記コマンドで、yum-utils パッケージをインストールすると使用出来ます。

yum-utils インストール
[root@localhost ~]# yum install yum-utils

パッケージを取得したいと思います。
--resolve オプションを使用する事で、依存関係を考慮してダウンロードしてくれます。
httpdhttpd-toolsがダウンロードされました。

パッケージダウンロード
[root@localhost ~]# yumdownloader --resolve httpd
[root@localhost ~]# ll
合計 2880
-rw-r--r-- 1 root root 2849180  4月  6 02:37 httpd-2.4.6-98.el7.centos.7.x86_64.rpm
-rw-r--r-- 1 root root   96652  4月  6 02:37 httpd-tools-2.4.6-98.el7.centos.7.x86_64.rpm

パッケージ取得後にhttpdでインストールを実行したところ、今度は依存性の欠如で怒られました。
httpd-tools-2.4.6-98.el7.centos.7が必要みたいです。なので、先にhttpd-toolsをインストールしてから、httpdをインストールします。

依存性の欠如
[root@localhost ~]# rpm -i httpd-2.4.6-98.el7.centos.7.x86_64.rpm
エラー: 依存性の欠如:
        httpd-tools = 2.4.6-98.el7.centos.7 は httpd-2.4.6-98.el7.centos.7.x86_64 に必要とされています

# httpd-toolsをインストール
[root@localhost ~]# rpm -ivh httpd-tools-2.4.6-98.el7.centos.7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:httpd-tools-2.4.6-98.el7.centos.7################################# [100%]

# httpdをインストール
[root@localhost ~]# rpm -ivh httpd-2.4.6-98.el7.centos.7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:httpd-2.4.6-98.el7.centos.7      ################################# [100%]

httpdがインストールされている事を確認しようと思います。
-qオプションでパッケージに関しての情報を調べる事が出来ます。単体で使用した場合は、導入したパッケージ名が表示されます。
コマンドを実行したところ、無事にインストールされている事を確認出来ました。

インストールされている事を確認
[root@localhost ~]# rpm -q httpd httpd-tools
httpd-2.4.6-98.el7.centos.7.x86_64
httpd-tools-2.4.6-98.el7.centos.7.x86_64

インストールが実行出来た事を確認したので、httpdはアンインストールしたいと思います。
-eオプションでアンインストール出来ます。

ちなみに、アンインストールする際も依存関係の確認を行っているようです。httpdhttpd-toolsを必要としているので、先にhttpdからアンインストール → httpd-toolsをアンインストールします。

アンインストール
[root@localhost ~]# rpm -qa | grep "httpd"
httpd-2.4.6-98.el7.centos.7.x86_64
httpd-tools-2.4.6-98.el7.centos.7.x86_64

# 依存関係でアンインストールがこける。
[root@localhost ~]# rpm -evh httpd-tools-2.4.6-98.el7.centos.7.x86_64
エラー: 依存性の欠如:
        httpd-tools = 2.4.6-98.el7.centos.7 は (インストール済み)httpd-2.4.6-98.el7.centos.7.x86_64 に必要とされています

# httpd → httpd-tools の順番でアンインストール
[root@localhost ~]# rpm -evh httpd-2.4.6-98.el7.centos.7.x86_64
準備しています...              ################################# [100%]
整理中 / 削除中...
   1:httpd-2.4.6-98.el7.centos.7      ################################# [100%]
[root@localhost ~]# rpm -evh httpd-tools-2.4.6-98.el7.centos.7.x86_64
準備しています...              ################################# [100%]
整理中 / 削除中...
   1:httpd-tools-2.4.6-98.el7.centos.7################################# [100%]
[root@localhost ~]# rpm -qa | grep "httpd"

順番が前後してしまうのですが、アップグレードも軽く検証してみようと思います。
-Uオプションで実施する事が出来ます。バージョンが古いファイルもダウンロードしてきました。

アップグレード
# 古いバージョンのパッケージを探して、取得する。
[root@localhost ~]# yum list --showduplicates | grep "httpd"
[root@localhost ~]# yumdownloader --resolve httpd-2.4.6-95.el7.centos
[root@localhost ~]# ll
合計 5756
-rw-r--r-- 1 root root 2846172 10月 15  2020 httpd-2.4.6-95.el7.centos.x86_64.rpm
-rw-r--r-- 1 root root 2849180  4月  6 02:37 httpd-2.4.6-98.el7.centos.7.x86_64.rpm
-rw-r--r-- 1 root root   95136 10月 15  2020 httpd-tools-2.4.6-95.el7.centos.x86_64.rpm
-rw-r--r-- 1 root root   96652  4月  6 02:37 httpd-tools-2.4.6-98.el7.centos.7.x86_64.rpm

# 古いバージョンでインストールする。
[root@localhost ~]# rpm -ivh httpd-2.4.6-95.el7.centos.x86_64.rpm httpd-tools-2.4.6-95.el7.centos.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:httpd-tools-2.4.6-95.el7.centos  ################################# [ 50%]
   2:httpd-2.4.6-95.el7.centos        ################################# [100%]
[root@localhost ~]# rpm -qa | grep "httpd"
httpd-tools-2.4.6-95.el7.centos.x86_64
httpd-2.4.6-95.el7.centos.x86_64

# 新しいバージョンにアップグレード
[root@localhost ~]# rpm -Uvh httpd-2.4.6-98.el7.centos.7.x86_64.rpm httpd-tools-2.4.6-98.el7.centos.7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:httpd-tools-2.4.6-98.el7.centos.7################################# [ 25%]
   2:httpd-2.4.6-98.el7.centos.7      ################################# [ 50%]
整理中 / 削除中...
   3:httpd-2.4.6-95.el7.centos        ################################# [ 75%]
   4:httpd-tools-2.4.6-95.el7.centos  ################################# [100%]
[root@localhost ~]# rpm -qa | grep "httpd"
httpd-tools-2.4.6-98.el7.centos.7.x86_64
httpd-2.4.6-98.el7.centos.7.x86_64

無事アップグレード出来た事を確認致しました。
rpmコマンドの検証はこれで終了とします。

よく使いそうなオプションだけ、下記表にまとめておきます。
一番よく使う場面は、-qaでインストール済みのパッケージ見る時です。

パッケージのインストール・アップグレード・削除 説明
-i(--install) パッケージをインストール
-U(--upgrade}) パッケージをアップグレード
-e(--erase) パッケージをアンインストール
-v 詳細情報を表示
-h 進行状況を表示
パッケージの検索と検査(-qオプションと組み合わせて使用) 説明
-q(--query) 単体で使用した場合は、引数に指定したパッケージが存在する場合に導入しているパッケージを表示
-a(--all) インストールされているすべてのパッケージを表示
-i(--info) パッケージの詳細情報を表示
-f(--file) ファイルを所有するパッケージを表示
-l(--list) パッケージ内にあるすべてのファイルを表示

お次

次回はyumについて、検証します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0