GeekBox

新米Webエンジニアのメモ帳

yumもしくはrpmインストール時の依存性解決手順

今回はhttpdを例とする。

そもそもyumとrpmの違いは何かというと、
どちらもパッケージ管理ツールであり、yumには依存性解決の機能があったりする。
(詳しくはググっていただくともっと詳しく説明している記事が沢山ある)
なので普通にyum installをすれば大体依存性の解決も行ってくれるのだがたまに手動で解決しないと行けない場合がある。
もしくは外部のネットワークを遮断(VMであればNATを使ってない状態とか)した状態でも手動で解決する必要がある。

yum install httpd
もしくは
rpm -ivh httpd-2.4.6-40.el7.centos.x86_64.rpm
等をしたときに以下のようになる。

エラー: 依存性の欠如:
/etc/mime.types は httpd-2.4.6-40.el7.centos.x86_64 に必要とされています
httpd-tools = 2.4.6-40.el7.centos は httpd-2.4.6-40.el7.centos.x86_64 に必要とされています
libapr-1.so.0()(64bit) は httpd-2.4.6-40.el7.centos.x86_64 に必要とされ ています
libaprutil-1.so.0()(64bit) は httpd-2.4.6-40.el7.centos.x86_64 に必要と されています

依存性が解決できない場合、大体上記のような感じのエラーが出る。
解決するには必要とされているrpmを入れていけばよい。

/etc/mime.typesはググってみるとmailcapというパッケージで、
レスポンスヘッダのContent-Typeを決めるために使われていたりするようだ。
以下サイトに詳しく書いている。
https://www.softel.co.jp/blogs/tech/archives/2416
ということでこのパッケージをどこからか取得しなければならない。

■方法1
以下のサイトでrpmを探してダウンロードする
http://rpmfind.net/
何らかの端末でダウンロードしたrpmをscpか何かでアップする

■方法2
外部との疎通が出来るマシンでrpmを取得する。
方法1のURLをwgetなどで取得するという方法もあるが、依存しているパッケージが複数ある場合以下のコマンドが仕えたほうが楽。

疎通できるマシンに既にhttpdがインストール済みならば以下のコマンド
yumdownloader <パッケージ名>

※yumdownloaderが入っていない場合は以下のコマンドでインストールを行う
yum install yum-utils

インストールしていないなら以下のコマンドで取得する
yum install --downloadonly --downloaddir=<ダウンロードディレクトリ> <パッケージ名>

※dunloadonlyが入っていない場合は以下のコマンドでインストールを行う
yum install yum-plugin-downloadonly

上記のいずれかで取得したrpmをscpで転送する。
scp mailcap-2.1.41-2.el7.noarch.rpm root@192.168.0.101:/root

■rpmのインストール
rpm -ivh mailcap-2.1.41-2.el7.noarch.rpm

再度httpdをインストールしようとすると。
rpm -ivh httpd-2.4.6-40.el7.centos.x86_64.rpm
エラー: 依存性の欠如:
httpd-tools = 2.4.6-40.el7.centos は httpd-2.4.6-40.el7.centos.x86_64 に必要とされています
libapr-1.so.0()(64bit) は httpd-2.4.6-40.el7.centos.x86_64 に必要とされ ています
libaprutil-1.so.0()(64bit) は httpd-2.4.6-40.el7.centos.x86_64 に必要と されています

最初に出ていた/etc/mime.typesの依存性が解決されている事がわかる。
上記手順を全ての依存が解決できるまで行う。
libaprutilとかlibaprとか、何のパッケージかわからないときはググってみると大体わかる。

-linux
-, , , ,