当然、glibc の移行で失敗すると動かないシステムになる場合があります。念の為 バックアップを作成し、各環境でビルドしたバイナリを 残しておく事をお薦めします。
既に、新しい環境版のバイナリが公開されていますので、今後の移行時に前回のメモとして参考になる部分があればと思います。
glibc-2.3 上でのビルドできない場合の修正ポイント。
.a を先にリビルドしないとリンクエラーになります。
extern int errno; を削除して #include <errno.h> に修正します。
sys_errlist[] を使用せずに strerror()、strerror_r()を使用します。
現在の glibc_2_3-branch はブランチ全体が HEAD に追従しているわけではないのでまずは checkout してある HEAD のうち、必要なパッケージだけ glibc_2_3-branch にします。 [1]
具体的には、
elfutils
glibc
libelf
netatalk
usagi-pluto
の 5 つになります。gcc* も rel のみ上っているものが commit してありますのでこちらは自分の環境に合せて使用して下さい。
rpm, bzip2 を OmoiKondara -r -bp しておきます。
elfutils をオモコンでビルドしてインストールします。
glibc をオモコンでビルドを行い、以下のオプションにてインストールを行ないます。
rpm -Uvh --nodeps --force glibc-2.3.2-3m.i586.rpm
glibc を入れ換えると rpmbuild が SEGV を起すので以下の様に作り直します。
# rpm --rebuilddb
-bp しておいた bzip2 を bzip2.spec
の %build と同じようにビルドし、出来た libbz2.a
を、 /usr/lib へコピーして下さい。
同じく -bp しておいた rpm を同様に作り直し root になってから install して下さい。
続けて、作り直してインストールするパッケージ群。
rpm
sudo
binutils ( memprof も)
gcc
elfutils
prelink
gcc, gcc2.96, gcc2.95.3
tcp_wrappers
ncurses(at.h なし版)
grub ( ncurses をインストールしてから)
laptop-net ( libpcap ( tcpdump ), libnet をインストールしてから)
その後、fltk, readline, python-devel, XFree86-devel あたりを作って後は適宜に 全ビルドを行なって下さい。
gcc を作り直す時にエラーが発生する。
対応方法
gcc.spec
において gcc-specs-sspfix.diff ( %patch100 )を適用している部分をコメントアウトします。
その後、gcc をビルドしてインストールします。
コメントアウトした gcc-specs-sspfix.diff
を /usr/lib/gcc-lib/i586-momonga-linux/3.2.3/specs
に直接 「手パッチ」して下さい。