ギリギリ行けるお一人様のライン

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 と競合します

A 回答 (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/ … から入手。

(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. …
    • good
    • 0

要求されるバージョンの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あたりも入れ換える必要があるのかな?
まあ、丸一日ぐらい頑張ればなんとかなりそうですが、私はこのあたりで断念・・・ということで、やはり、要求されていることはかなり困難であると思われます。頑張ってください。
    • good
    • 0

> rpm -Uでまとめてアップデートする方法を教えて頂けませんでしょうか?



一般的には・・・

まず、-U オプションは、パッケージのアップデートを意味します。次に、--test オプションをつけると、動作をシミュレーションすることができます。そこで、

 rpm --test -U <パッケージファイルのリスト>

これで、依存関係のエラーがわかるので、エラーとなるパッケージをRHEL4から持ってきて、エラーが出なくなるまで、同様のことを繰り返します。最後に、--testオプションを外して、一挙にアップデートします。

ですが、glibcはシステムの根幹ですから、これを入れ換えるとなると、結果的にほぼ全てのパッケージを入れ換えることが必要になるでしょう。そういう意味で、「無謀」と書きました。

> どうしてもglibcを2.3へアップデートしてRedHat2.1上で
> 動作させる必要があります。

動作させたいアプリケーションがglibc-2.3以上を要求しているということだと推測しますが、上述のとおり、glibcを強引に入れ換えるのは無理があります。
そもそもの目的と制約条件を具体的にお書きになれば、違う視点からのアドバイスが得られるかもしれません。

この回答への補足

質問に具体性がなくすいません。

>動作させたいアプリケーションがglibc-2.3以上を要求しているということだと推測しますが、

ご指摘どおりです。

>そもそもの目的と制約条件を具体的にお書きになれば、違う視点からのアドバイスが得られるかもしれません。

目的のプログラムがREHL3以上からサポート製品ですが、RedHat2.1での
運用の必要があります。ただし、このglibcのバージョンが2.3以上に
なればREHL2.1でも動作します。もともとこのプログラムがglibc2.3上で
コンパイルしたためそのようになったようです。
そのため、REHL4のglibcでなくてもOKでglibcが2.3以上にさえなれば
目的はクリアできます。
宜しくお願いします。

補足日時:2008/03/20 12:03
    • good
    • 0

glibcもパッケージでアップデートできます。


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

この回答への補足

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

補足日時:2008/03/19 23:17
    • good
    • 0

glibcは 単体で入れ替えられないものじゃなかったかな


http://www.google.co.jp/search?q=glibc&hl=ja&lr= …

上書きじゃなくて混在になるようにして
新しいglibcによるkernelを作ってってやらないとちゃんと動かないんじゃなかったかな。
パッケージ管理で導入、終了…みたいな簡単なものじゃなかった気がする。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報