• ベストアンサー

glibcバージョンアップ

RedHat2.1の環境でglibcを2.3以上にアップデートを行ってます。 ただし、アップデートできません。 RedHat4にあったGlibcらしきPRMを走らせたら下記のようになりました。 2.3へのアップデートの方法をご存知の方がいたら教えて下さい。 もしくはRPMがダウンロードできるサイトがあれば教えて下さい。 [root@test01 Redhut4 glib]# rpm -ivh glibc-2.3.4-2.i386.rpm エラー: 依存性の欠如: glibc-common = 2.3.4-2は glibc-2.3.4-2 に必要とされています shadow-utils < 2:4.0.3-20 glibc-2.3.4-2 と競合します nscd < 2.3.3-52 glibc-2.3.4-2 と競合します glibc > 2.2.4 glibc-common-2.2.4-32.18 と競合します

質問者が選んだベストアンサー

  • ベストアンサー
  • astronaut
  • ベストアンサー率58% (303/516)
回答No.5

度々すみません。なんとか、redhat-7.3で、glibc-2.3.2のインストールができました。 インストールには、Linux From Scratch のドキュメント(参考URL)が役にたちました。 (0) 必要なソース、パッチの準備 ftpサイト(ftp://ftp.kddlabs.co.jp/GNU/ など)から、binutils-2.14.tar.gz, gcc-core-3.3.1.tar.gz, glibc-2.3.2.tar.gz , glibc-linuxthreads-2.3.2.tar.gz を入手。 さらに、glibcのパッチを http://www.linuxfromscratch.org/patches/lfs/5.0/glibc-2.3.2-sscanf-1.patch から入手。 (1) binutilsを /usr/local にインストール tar zxvf binutils-2.14.tar.gz cd binutils-2.14 ./configure --prefix=/usr/local make && make install cd .. (2) gccを /usr/local にインストール tar zxvf gcc-core-3.3.1.tar.gz mkdir gcc-build cd gcc-build ../gcc-3.3.1/configure --prefix=/usr/local --enable-languages=c make && make install cd .. (3) glibcを /usr/local/glibc232 にインストール tar zxvf glibc-2.3.2.tar.gz cd glibc-2.3.2 patch -p1 < ../glibc-2.3.2-sscanf-1.patch tar zxvf ../glibc-linuxthreads-2.3.2.tar.gz cd .. mkdir glibc-build cd glibc-build ../glibc-2.3.2/configure --prefix=/usr/local/glibc232 --enable-add-ons make && make install これで、/usr/local/glibc232 以下に glibc-2.3.2がインストールされます。 http://www.gnu.org/software/libc/FAQ.html#s-3.18 によれば、動的にLD_LIBRARY_PATHを指定して、新しい ld-linux.so.2 の引数に動作させたいバイナリを指定して実行できます。 例えば私の環境では、以下のようにして redhat-9からコピーした ls が実行できました。 $ ls cat ls tar (← redhat-9からコピーしたバイナリ) $ ./ls ./ls: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./ls) GLIBCのバージョンエラー。LD_LIBRARY_PATHを設定し、glibc-2.3のld-linux.soを使って実行してみる。 $ LD_LIBRARY_PATH=/usr/local/glibc232/lib /usr/local/glibc232/lib/ld-linux.so.2 ./ls ./ls: error while loading shared libraries: libtermcap.so.2: cannot open shared object file: No such file or directory 今度はtermcapライブラリが見つからないので、lddコマンドで、必要とされるライブラリを調べる。 $ ldd ls ./ls: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./ls) libtermcap.so.2 => /lib/libtermcap.so.2 (0x4001c000) libc.so.6 => /lib/i686/libc.so.6 (0x42000000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) /lib/libtermcap.so.2 が必要だとわかったので、LD_LIBRARY_PATHに /lib を追加して再度トライ $ LD_LIBRARY_PATH=/usr/local/glibc232/lib:/lib /usr/local/glibc232/lib/ld-linux.so.2 ./ls cat ls tar 動いた! ということで、私にとっても、凄く勉強になりましたです。ハイ。

参考URL:
http://www.linux.or.jp/JF/JFdocs/LFS-BOOK/index.html

その他の回答 (4)

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.4

要求されるバージョンのglibcをソースから別ディレクトリにインストールして、LD_LIBRARY_PATH を設定して、使いたいアプリを起動・・・と思って、手元のRedHat-7.3(RHEL2.1の構成に近いはず)の仮想マシンで試してみました。結果、 1)そもそも、デフォルトのgcc-2.9.6では、glibc-2.3.xがコンパイルできない。 2)そこで、gcc-3.4.6をソースからコンパイルしてインストール。 3)gcc-3.4.6を使ってglibc-2.3.1のコンパイル。 と、あがいてみましたが、これもあえなく、asのエラーが出て、こけちゃいました。binutilsあたりも入れ換える必要があるのかな? まあ、丸一日ぐらい頑張ればなんとかなりそうですが、私はこのあたりで断念・・・ということで、やはり、要求されていることはかなり困難であると思われます。頑張ってください。

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.3

> rpm -Uでまとめてアップデートする方法を教えて頂けませんでしょうか? 一般的には・・・ まず、-U オプションは、パッケージのアップデートを意味します。次に、--test オプションをつけると、動作をシミュレーションすることができます。そこで、  rpm --test -U <パッケージファイルのリスト> これで、依存関係のエラーがわかるので、エラーとなるパッケージをRHEL4から持ってきて、エラーが出なくなるまで、同様のことを繰り返します。最後に、--testオプションを外して、一挙にアップデートします。 ですが、glibcはシステムの根幹ですから、これを入れ換えるとなると、結果的にほぼ全てのパッケージを入れ換えることが必要になるでしょう。そういう意味で、「無謀」と書きました。 > どうしてもglibcを2.3へアップデートしてRedHat2.1上で > 動作させる必要があります。 動作させたいアプリケーションがglibc-2.3以上を要求しているということだと推測しますが、上述のとおり、glibcを強引に入れ換えるのは無理があります。 そもそもの目的と制約条件を具体的にお書きになれば、違う視点からのアドバイスが得られるかもしれません。

naomatu99
質問者

補足

質問に具体性がなくすいません。 >動作させたいアプリケーションがglibc-2.3以上を要求しているということだと推測しますが、 ご指摘どおりです。 >そもそもの目的と制約条件を具体的にお書きになれば、違う視点からのアドバイスが得られるかもしれません。 目的のプログラムがREHL3以上からサポート製品ですが、RedHat2.1での 運用の必要があります。ただし、このglibcのバージョンが2.3以上に なればREHL2.1でも動作します。もともとこのプログラムがglibc2.3上で コンパイルしたためそのようになったようです。 そのため、REHL4のglibcでなくてもOKでglibcが2.3以上にさえなれば 目的はクリアできます。 宜しくお願いします。

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.2

glibcもパッケージでアップデートできます。 その際は、依存関係で要求されるパッケージを、rpm -U でまとめてアップデートする必要があります。 ただし、RedHat4用のパッケージをRedHat2.1に適用するのは無謀です。 glibc2.3以上の環境が必要なら、それが用意されたディストリビューションを使用しましょう。

naomatu99
質問者

補足

回答ありがとう御座います。 どうしてもglibcを2.3へアップデートしてRedHat2.1上で 動作させる必要があります。 rpm -Uでまとめてアップデートする方法を教えて頂けませんでしょうか? 素人の質問で申し訳ありません。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

glibcは 単体で入れ替えられないものじゃなかったかな http://www.google.co.jp/search?q=glibc&hl=ja&lr=lang_ja 上書きじゃなくて混在になるようにして 新しいglibcによるkernelを作ってってやらないとちゃんと動かないんじゃなかったかな。 パッケージ管理で導入、終了…みたいな簡単なものじゃなかった気がする。

関連するQ&A