2. glibc-2.3 環境への移行手順

2.1. 注意

当然、glibc の移行で失敗すると動かないシステムになる場合があります。念の為 バックアップを作成し、各環境でビルドしたバイナリを 残しておく事をお薦めします。

既に、新しい環境版のバイナリが公開されていますので、今後の移行時に前回のメモとして参考になる部分があればと思います。

2.2. 移行のポイント

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 してありますのでこちらは自分の環境に合せて使用して下さい。

2.3. ビルド手順

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 あたりを作って後は適宜に 全ビルドを行なって下さい。

2.4. 移行時に寄せられた報告

gcc を作り直す時にエラーが発生する。

対応方法

gcc.spec において gcc-specs-sspfix.diff ( %patch100 )を適用している部分をコメントアウトします。

その後、gcc をビルドしてインストールします。

コメントアウトした gcc-specs-sspfix.diff/usr/lib/gcc-lib/i586-momonga-linux/3.2.3/specs に直接 「手パッチ」して下さい。



[1] 現状では既に glibc_2_3-branch が HEAD に追従しています。