NPTL/TLS対応glibc Vine4  

Vine 4.2のglibcはNPTL(Native POSIX Thread Library)とTLS(Thread Local Storage)に対応してません。以前はあまり困ることもなかったのですが、最近困る状況がちょこちょこあったので再構築してみました。
glibcは非常に重要なライブラリで、環境構築に失敗するとシステムが起動しなくなります。実システムで行うときは自分の行っていることをよく理解した上で作業してください。

SRPMパッケージの取得  

とりあえずシステムは最新の状態にしておいた方がいいと思いますので、aptで最新の状態にしてから取得します。

# apt-get update
# apt-get upgrage

ソースの取得は一般ユーザーで行います。

% apt-get source glibc

これで$HOME/rpm以下にファイルが配置されたはずです。

SPECファイルの修正と準備  

SPECファイルの修正  

再構築する前にSPECファイルを修正します。$HOME/rpm/SPECS/glibc-vl.specを修正します。
修正はSPECファイルの先頭の方です。

nptlarchesとwithtlsarchesを有効にします
 4 %define nptlarches i686 athlon x86_64 ia64 s390 s390x ppc ppc64
 5 ##%define nptlarches noarch
 6 %define withtlsarches i686 athlon x86_64 ia64 s390 s390x alpha alphaev6 sparc sparcv9 ppc ppc64
 7 ##%define withtlsarches noarch
Releaseを変えておきます
25 Release: %{glibcrelease}vl3.3tls

修正する点は以上です。

.rpmmacrosファイルの修正  

$HOME/.rpmmacrosファイルを修正します。

  1 %_topdir ${HOME}/rpm
  2
  3 %_with_compat32 1  <-- この行を追加
  4 # %packager Your Name   <your mail address>
  5
  6 %_sysconfdir /etc
  7
  8 # gpg signing
  9 # %_signature gpg
 10 # %_gpg_name Your Name <your mail address>

この修正を忘れるとglibc-commons、glibc-develなどのパッケージが作成されないようです。

ビルド  

ファイルの設定が終わればリビルドします。

% cd $HOME/rpm/SPECS
% rpm -bb --target=i686 glibc-vl.spec

1時間ほど(Core2 duo 2.16GHz)で$HOME/rpm/RPMS/i686にパッケージが作成されます。以下のファイルができました。私が作業をしたときに作成されたファイルをアップしておきます。無保証ですので各自の責任において使用して下さい。

インストールとアンインストール  

インストール  

必要なファイルをインストールします。現在インストールされているものと同じパッケージをアップグレードします。

% rpm -qa | grep glibc

などで確認して下さい。私の環境ではglibc、glibc-common、glibc-develでした。場合によってはnscdも入っているかもしれません。依存関係がややこしい場合があるので一気にアップグレードします。

# rpm -Uvh glibc-2.3.4-2vl3.3tls.i686.rpm glibc-common-2.3.4-2vl3.3tls.i686.rpm glibc-devel-2.3.4-2vl3.3tls.i686.rpm

アンインストール  

これらのパッケージが不要になったら元のglibcに戻します。FTPサイトなどからglibcバイナリパッケージを取得してダウングレードします。

# rpm -Uvh --oldpackage glibc-2.3.4-2vl3.3.i686.rpm glibc-common-2.3.4-2vl3.3.i686.rpm

こんな感じです。