パッケージ依存関係を解消する(rpm)


#目的
RedHat系Linuxで依存関係のパッケージをrpmでインストール方法です。
今回は、「Oracle Linux 6.4 (x86-64)」で試しています。

#なぜ？
yumで解決してしまえばっと思うのですが
なくても出来る方が良い場合もありますよね？


##とりあえず実行してみる
```
[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 に必要とされています
```



なんか難しそうなエラーメッセージがでました。
よくみると・・・「libc.so.6」「libgcc_s.so.1」「libm.so.6」が必要とされている事がわかります。
って言ってもどうやって導入するんだろ？
下記のコマンドで調べることが出来ます。


```
[root]# yum provides libc.so.6
Loaded plugins: refresh-packagekit, security
glibc-2.12-1.47.el6_2.12.i686 : The GNU libc libraries
Repo        : ol6_latest
Matched from:
Other       : libc.so.6

glibc-2.12-1.7.el6_0.5.i686 : The GNU libc libraries
Repo        : ol6_latest
Matched from:
Other       : libc.so.6

glibc-2.12-1.107.el6.i686 : The GNU libc libraries
Repo        : ol6_latest
Matched from:
Other       : libc.so.6

以下略・・・
```

「glibc-2.12」の中に必要なライブラリが入ってますとのこと
rpmファイルを確認してみます。

```
[root]# ls -al glibc-2.12*
-rw-rw-r--. 1 root root 4536956  2月 24 07:49 2013 glibc-2.12-1.107.el6.i686.rpm 
-rw-rw-r--. 1 root root 3977532  2月 24 07:48 2013 glibc-2.12-1.107.el6.x86_64.rpm
```


##同様に必要なライブラリを調べる

同様に「libgcc_s.so.1」「libm.so.6」に必要なライブラリを調べると
下記のrpmファイルが必要とわかります。

```
-rw-rw-r--. 1 root root   113708 12月 21 16:05 2012 libgcc-4.4.7-3.el6.i686.rpm
-rw-rw-r--. 1 root root  4536956  2月 24 07:49 2013 glibc-2.12-1.107.el6.i686.rpm
```




##機は熟した！
```
[root]# rpm -ivh compat-libstdc++-33-3.2.3-69.el6.i686.rpm libgcc-4.4.7-3.el6.i686.rpm glibc-2.12-1.107.el6.i686.rpm
警告: compat-libstdc++-33-3.2.3-69.el6.i686.rpm: ヘッダ V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
エラー: 依存性の欠如:
        libfreebl3.so は glibc-2.12-1.107.el6.i686 に必要とされています
        libfreebl3.so(NSSRAWHASH_3.12.3) は glibc-2.12-1.107.el6.i686 に必要とされています
```

残念すぎる・・・でも
もう大丈夫ですよね？

##最終章

```
[root]# rpm -ivh compat-libstdc++-33-3.2.3-69.el6.i686.rpm libgcc-4.4.7-3.el6.i686.rpm glibc-2.12-1.107.el6.i686.rpm nss-softokn-freebl-3.12.9-11.el6.i686.rpm
警告: compat-libstdc++-33-3.2.3-69.el6.i686.rpm: ヘッダ V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
準備中...                ########################################### [100%]
   1:libgcc                 ########################################### [ 20%]
   2:nss-softokn-freebl     ########################################### [ 40%]
   3:glibc                  ########################################### [ 60%]
   4:compat-libstdc++-33    ########################################### [ 80%]
   5:libstdc++              ########################################### [100%]
```