はじめに
職場にてyumやrpmにてパッケージをインストールする際に、依存関係エラーと格闘するシーンがよくありました。
(例えば、LinuxサーバにGNOMEデスクトップをインストールする場合等です。)
今回は、実際の職場でやっている依存関係エラーの対処方法についてアウトプットしていきたいと思います。
パッケージ依存関係エラーとは?
下記のようなエラーになります。
[root]# rpm -ivh compat-libstdc++-33-3.2.3-69.el6.i686.rpm
警告: compat-libstdc++-33-3.2.3-69.el6.i686.rpm: ヘッダ V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
エラー: 依存性の欠如:
libc.so.6 は compat-libstdc++-33-3.2.3-69.el6.i686 に必要とされています
libc.so.6(GLIBC_2.0) は compat-libstdc++-33-3.2.3-69.el6.i686 に必要とされています
libc.so.6(GLIBC_2.1) は compat-libstdc++-33-3.2.3-69.el6.i686 に必要とされています
libc.so.6(GLIBC_2.1.3) は compat-libstdc++-33-3.2.3-69.el6.i686 に必要とされています
libc.so.6(GLIBC_2.2) は compat-libstdc++-33-3.2.3-69.el6.i686 に必要とされています
libc.so.6(GLIBC_2.3) は compat-libstdc++-33-3.2.3-69.el6.i686 に必要とされています
libgcc_s.so.1 は compat-libstdc++-33-3.2.3-69.el6.i686 に必要とされています
libgcc_s.so.1(GCC_3.0) は compat-libstdc++-33-3.2.3-69.el6.i686 に必要とされています
libgcc_s.so.1(GCC_3.3) は compat-libstdc++-33-3.2.3-69.el6.i686 に必要とされています
libgcc_s.so.1(GLIBC_2.0) は compat-libstdc++-33-3.2.3-69.el6.i686 に必要とされています
libm.so.6 は compat-libstdc++-33-3.2.3-69.el6.i686 に必要とされています
実際の職場での環境
項目 | 内容 |
---|---|
OS | RHEL/CentOS |
リポジトリ先 | 社内のローカルリポジトリ/ISOファイル |
実際にやっていた対処方法
1.マイナーバージョンが上のローカルリポジトリ/ISOファイルをマウント
現場で一番最初に考えたトラブルシューティング方法になります。
例えば、パッケージインストールの際に依存関係エラーが表示されるとします。
①RHEL7.3(お客様の既存マシン)にRHEL7.3のISOを用いて、yumにてGNOMEデスクトップをインストールする
②依存関係エラーが表示され、インストール不可
このような依存関係エラーの対応の際に、実際にやっていたことはこちらになります。
①マイナーバージョンが上のISOをセッティング(例:RHEL7.6等)
②リポジトリ設定/キャッシュクリア/リポジトリ読み込み
③再度、yumにてGNOMEデスクトップをインストール
**このように、マイナーバージョンが上のISOファイル(ローカルリポジトリ)をセッティングした場合、インストールができる場合があります。**
※依存関係で必要とされているパッケージが1つだけ存在しない場合、別のマイナーバージョンのISOファイルに存在する可能性があります。
2.複数のリポジトリを利用してパッケージインストール
「1.マイナーバージョンが1つ上のローカルリポジトリ/ISOファイルをマウント」を実施しても、依存関係エラーが表示されてしまった場合の解決方法になります。
対応方法としては、このような形になります。
①複数のリポジトリ先にアクセスできるように設定(リポジトリの設定等)
②再度、yumにてインストール作業実施
例えば、社内でローカルリポジトリを持っている企業さんの場合は、 ローカルリポジトリを1つだけではなく、複数にアクセスできるように設定してやってみる形になります。
**このように、複数のリポジトリを設定する形でやってみても、インストールができる場合があります。**
3.どうしても依存関係エラーでインストールができない場合(最終手段)
依存関係エラーで検知されているパッケージをアンインストールします。
yum remove <原因のパッケージ>
こちらは、お客様の既存サーバ等では非推奨になります。
なぜなら、サービスに影響が出てしまう可能性があるからです。
パッケージ削除以外の方法を探る方が無難です。
※もしこちらの方法を実施する場合、削除しても問題ないパッケージかどうか必ず調査しましょう!
まとめ
依存関係エラーが出た場合の対処方法
1.マイナーバージョンが上のローカルリポジトリ/ISOファイルをマウント
2.複数のリポジトリを利用してパッケージインストール
3.どうしても依存関係エラーでインストールができない場合(最終手段)