トップページへ

yumが使えない環境でrpmファイルをインストールする方法

小粋空間 » Linux » yumが使えない環境でrpmファイルをインストールする方法

yumが使えない環境でrpmファイルをインストールする方法を紹介します。

1.問題点

C++のビルドで不足している32bit用のライブラリをインストールしたいのですが、そのサーバはインターネットと接続されていません。

インストールしたいrpmファイルはネットからダウンロードして、別サーバから転送までしました。

サーバ上にあるrpmファイルをyumでインストールするには、下記のように"localinstall"を付与すればできるようですが、リポジトリの設定ができていないとダメなようです。

# yum localinstall glibc-devel-2.12-1.149.el6.i686.rpm

ということで、yumが使えない環境でrpmファイルをインストールする方法を紹介します。

2.rpmファイルをインストールする

サーバ上にあるrpmファイルをインストールするには、yumではなくrpmコマンドでインストールします。

ただしyumのように依存関係を自動的に解消してくれないので、依存するライブラリが含まれるパッケージ(rpmファイル)はすべて手動でインストールします。

下記は実際にインストールしたときのコマンドと応答メッセージです。

まず、必要であることが分かっているパッケージ、"glibc-devel-2.12-1.149.el6.i686.rpm"をインストールします。

[root@hoge tmp]# rpm -ivh glibc-devel-2.12-1.149.el6.i686.rpm 
警告: glibc-devel-2.12-1.149.el6.i686.rpm: ヘッダ V4 DSA/SHA1 Signature, key ID 192a7d7d: NOKEY
エラー: 依存性の欠如:
        libBrokenLocale.so.1 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libanl.so.1 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libcidn.so.1 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libcrypt.so.1 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libdl.so.2 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libm.so.6 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libnsl.so.1 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libnss_compat.so.2 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libnss_dns.so.2 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libnss_files.so.2 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libnss_hesiod.so.2 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libnss_nis.so.2 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libnss_nisplus.so.2 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libresolv.so.2 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        librt.so.1 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libthread_db.so.1 は glibc-devel-2.12-1.149.el6.i686 に必要とされています
        libutil.so.1 は glibc-devel-2.12-1.149.el6.i686 に必要とされています

上記のようにエラーが出てインストールできなかった場合は、最初にひっかかったエラーのライブラリを、locateコマンドで検索します。

[root@hoge tmp]# locate libBrokenLocale.so.1
/lib64/libBrokenLocale.so.1

lib64ディレクトリでしかみつからないので、このライブラリは64bit版しかインストールされていないようです。

次に"rpm -qf"で64bit版のrpmパッケージを調べます。

[root@hoge tmp]# rpm -qf /lib64/libBrokenLocale.so.1
glibc-2.12-1.149.el6.x86_64

これで32bit版の同じライブラリをインストールするには、"glibc-2.12-1.149.el6.i686"のインストールが必要であることが分かります。

ということで、このrpmパッケージをネットで検索してダウンロードして、rpmコマンドでさきほどのパッケージと同時にインストールします。

ちなみに32bit版であれば、rpmファイルの"i686"の部分は"i386"かもしれませんが、ネットで見つかった方を使えばOKだと思います。

[root@hoge tmp]# rpm -ivh glibc-devel-2.12-1.149.el6.i686.rpm glibc-2.12-1.149.el6.i686.rpm                                                                             
警告: glibc-devel-2.12-1.149.el6.i686.rpm: ヘッダ V4 DSA/SHA1 Signature, key ID 192a7d7d: NOKEY
エラー: 依存性の欠如:
        libfreebl3.so は glibc-2.12-1.149.el6.i686 に必要とされています
        libfreebl3.so(NSSRAWHASH_3.12.3) は glibc-2.12-1.149.el6.i686 に必要とされています

まだエラーが残っているので、同じ手順で"libfreebl3.so"を調べて、32bit版のパッケージをさらにインストールします。

[root@hoge tmp]# locate libfreebl3.so                                                                                                                           
/lib64/libfreebl3.so
/usr/lib64/libfreebl3.so
[root@hoge tmp]# rpm -qf /lib64/libfreebl3.so
nss-softokn-freebl-3.14.3-17.el6.x86_64

これで"nss-softokn-freebl-3.14.3-17.el6.i686"も必要であることが分かります。

[root@hoge tmp]# rpm -ivh glibc-devel-2.12-1.149.el6.i686.rpm glibc-2.12-1.149.el6.i686.rpm nss-softokn-freebl-3.14.3-17.el6.i686.rpm                                   
警告: glibc-devel-2.12-1.149.el6.i686.rpm: ヘッダ V4 DSA/SHA1 Signature, key ID 192a7d7d: NOKEY
準備中...                ########################################### [100%]
   1:nss-softokn-freebl     ########################################### [ 33%]
   2:glibc                  ########################################### [ 67%]
   3:glibc-devel            ########################################### [100%]

これで無事にインストールできました。

« 前の記事へ

次の記事へ »

トップページへ