パッケージとは
ソフトウェアを利用する際に必要となるプログラム・ライブラリ・設定ファイル・ドキュメント等のセットをパッケージと言います。
依存関係・競合関係の確認やパッケージの取得等を管理する仕組みは、パッケージ管理と言います。
依存関係は、パッケージAを動作させる為には、パッケージBが必要になるという関係性を指します。絵を描く為に紙(パッケージA)を用意したけど、ペン(パッケージB)も必要みたいな感じです。
競合関係は、別のパッケージでインストールされているファイルを含むパッケージのインストールを行った場合、すでにインストールされているファイルと競合する場合の関係値を指します。
このパッケージ管理を行う際には、rpmコマンドとyumコマンドを利用します。※自分は、rpmコマンドはあまり使わないです。パッケージ用意したりするのが、面倒です。。rpm -qaコマンドでパッケージ一覧用意して、どこかに転記する位でしか使った事がないです。
rpmコマンド
rpmパッケージの管理を行えるコマンドです。
yumとかdnfがあるので、rpmコマンドを使った事はあまりないです。(バージョンを事細かに指定する必要があれば、使うかもしれないですが、、)
ただせっかく勉強しているので、軽く動作検証をしたいと思います。
試しに、httpdをインストールしてみます。
インストールは、-iオプションを利用して行えるようです。また、-vで詳細情報及び-hで進行状況を確認出来るようです。
いざ、実行します。
実行してみると、ファイルがないよと怒られました。
[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 パッケージをインストールすると使用出来ます。
[root@localhost ~]# yum install yum-utils
パッケージを取得したいと思います。
--resolve オプションを使用する事で、依存関係を考慮してダウンロードしてくれます。
httpdとhttpd-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オプションでアンインストール出来ます。
ちなみに、アンインストールする際も依存関係の確認を行っているようです。httpdがhttpd-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について、検証します。