パッケージとは
ソフトウェアを利用する際に必要となるプログラム・ライブラリ・設定ファイル・ドキュメント
等のセットをパッケージ
と言います。
依存関係・競合関係の確認やパッケージの取得等を管理する仕組みは、パッケージ管理
と言います。
依存関係
は、パッケージ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について、検証します。