* NPTL/TLS対応glibc [#e927c232]
 * NPTL/TLS対応glibc &Vine4; [#e927c232]
 Vine 4.2のglibcはNPTL(Native POSIX Thread Library)とTLS(Thread Local Storage)に対応してません。以前はあまり困ることもなかったのですが、最近困る状況がちょこちょこあったので再構築してみました。~
 &color(red){''glibcは非常に重要なライブラリで、環境構築に失敗するとシステムが起動しなくなります。実システムで行うときは自分の行っていることをよく理解した上で作業してください。''};
 
 ** SRPMパッケージの取得 [#ye9c1d10]
 とりあえずシステムは最新の状態にしておいた方がいいと思いますので、aptで最新の状態にしてから取得します。
  # apt-get update
  # apt-get upgrage
 ソースの取得は一般ユーザーで行います。
  % apt-get source glibc
 これで$HOME/rpm以下にファイルが配置されたはずです。
 
 ** SPECファイルの修正と準備 [#e15e5e67]
 *** SPECファイルの修正 [#odc3d992]
 再構築する前に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ファイルの修正 [#o128228a]
 $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などのパッケージが作成されないようです。
 
 ** ビルド [#re37c0b2]
 ファイルの設定が終わればリビルドします。
  % cd $HOME/rpm/SPECS
  % rpm -bb --target=i686 glibc-vl.spec
 1時間ほど(Core2 duo 2.16GHz)で$HOME/rpm/RPMS/i686にパッケージが作成されます。以下のファイルができました。私が作業をしたときに作成されたファイルをアップしておきます。無保証ですので各自の責任において使用して下さい。
 - &ref(compat32-glibc-2.3.4-2vl3.3tls.i686.rpm);
 - &ref(compat32-glibc-debug-2.3.4-2vl3.3tls.i686.rpm);
 - &ref(compat32-glibc-devel-2.3.4-2vl3.3tls.i686.rpm);
 - &ref(glibc-2.3.4-2vl3.3tls.i686.rpm);
 - &ref(glibc-common-2.3.4-2vl3.3tls.i686.rpm);
 - &ref(glibc-common-extra-2.3.4-2vl3.3tls.i686.rpm);
 - &ref(glibc-debug-2.3.4-2vl3.3tls.i686.rpm);
 - &ref(glibc-devel-2.3.4-2vl3.3tls.i686.rpm);
 - &ref(glibc-profile-2.3.4-2vl3.3tls.i686.rpm);
 - &ref(glibc-utils-2.3.4-2vl3.3tls.i686.rpm);
 - &ref(nptl-devel-2.3.4-2vl3.3tls.i686.rpm); <-- これができていればちゃんとTLSオプションも認識されています
 - &ref(nscd-2.3.4-2vl3.3tls.i686.rpm);
 
 ** インストールとアンインストール [#g42cda41]
 *** インストール [#ta094508]
 必要なファイルをインストールします。現在インストールされているものと同じパッケージをアップグレードします。~
  % 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
 
 *** アンインストール [#u2e4bfea]
 これらのパッケージが不要になったら元のglibcに戻します。FTPサイトなどからglibcバイナリパッケージを取得してダウングレードします。
  # rpm -Uvh --oldpackage glibc-2.3.4-2vl3.3.i686.rpm glibc-common-2.3.4-2vl3.3.i686.rpm
 こんな感じです。