pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


Samba 3.0 を使ってみようと思うテスト

Samba 3.0 で日本語を扱う際は次のURLに書かれているように glibc か libiconv にパッチした上で適切な RPM を導入する必要があるようです。

ftp://ftp.samba.gr.jp/pub/samba-jp/samba-3.0-ja/README.TXT

では CentOS 4 ではどのように対応すべきか、という話になりますが、実は glibc はパッチ済みであり、特に問題はなさそうです。CentOS (RHEL) は Fedora をベースにしていますので、Fedora 向けの設定でよい筈です。

以下はこれについて検証した手順を示しています。

作業手順概略

CentOSglibc に対する SRPM を展開する。
GNU から配布されている glibc を展開する。
展開した GNUglibc に通常の手順でパッチをあてる。このときにパッチされたファイル一覧を控えておく。
md5sum 等でパッチされたファイルと CentOSSRPM に含まれるファイルを比較して判断する。

用意するもの

CentOS glibcSRPMパッケージ
GNUglibc
glibc へのパッチ

作業内容

まず最初に glibc の内容を SRPM から調べてみることにします。次のコマンドで SRPM の入手を試みます。


up2date --get-source glibc
しかし、この方法では何故かうまく入手できなかったので、代わりに RHEL 4 の SRPM を次のように入手してインストールします。


wget http://ftp.kddilabs.jp/Linux/distributions/RedHat/redhat/linux/enterprise/4/en/os/i386/SRPMS/glibc-2.3.4-2.src.rpm
rpm -ivh glibc-2.3.4-2.src.rpm

この作業の目的はソースコードglibc 向けの修正が適用済みかどうかを確認することですので、次のように実行してソースコードを展開します。


cd /usr/src/redhat/SPECS
rpmbuild -bp glibc.spec
もしもパッケージの依存関係に不足があれば yum install 等でインストールします。

さらに、比較用の glibc と対応するパッチを入手します。glibchttp://www.ring.gr.jp/pub/GNU/glibc/ から入手できます。指示通りにパッチすると、次のファイルが更新されることがわかります。


patching file iconvdata/CP932.irreversible
patching file iconvdata/EUC-JP-MS.irreversible
patching file iconvdata/Makefile
patching file iconvdata/cp932.c
patching file iconvdata/euc-jp-ms.c
patching file iconvdata/gconv-modules
patching file iconvdata/tst-tables.sh
patching file localedata/charmaps/EUC-JP-MS
patching file localedata/charmaps/WINDOWS-31J

そこで次のように md5sum を実行してみることにします。


md5sum glibc-2*/iconvdata/CP932.irreversible glibc-2*/iconvdata/EUC-JP-MS.irreversible glibc-2*/iconvdata/Makefile glibc-2*/iconvdata/cp932.c glibc-2*/iconvdata/euc-jp-ms.c glibc-2*/iconvdata/gconv-modules glibc-2*/iconvdata/tst-tables.sh glibc-2*/localedata/charmaps/EUC-JP-MS glibc-2*/localedata/charmaps/WINDOWS-31J

この結果は次のとおりです。


88d15a7c827dd69eab113879233f611c glibc-20041219T2331/iconvdata/CP932.irreversible
88d15a7c827dd69eab113879233f611c glibc-2.3.2/iconvdata/CP932.irreversible
cd525ae9d5686b75715ffa0be250c886 glibc-20041219T2331/iconvdata/EUC-JP-MS.irreversible
cd525ae9d5686b75715ffa0be250c886 glibc-2.3.2/iconvdata/EUC-JP-MS.irreversible
9b307aa149f36293207cee33d7cb3d04 glibc-20041219T2331/iconvdata/cp932.c
9b307aa149f36293207cee33d7cb3d04 glibc-2.3.2/iconvdata/cp932.c
00f24f0b8b34ec055a8bddf01f059329 glibc-20041219T2331/localedata/charmaps/EUC-JP-MS
00f24f0b8b34ec055a8bddf01f059329 glibc-2.3.2/localedata/charmaps/EUC-JP-MS
b04e38295a41a71d3fab0aaaf9edeba2 glibc-20041219T2331/localedata/charmaps/WINDOWS-31J
b04e38295a41a71d3fab0aaaf9edeba2 glibc-2.3.2/localedata/charmaps/WINDOWS-31J

e2adcd78151e95f93e8f3c0841c87115 glibc-20041219T2331/iconvdata/Makefile
2b5f9712a553320ec8dc08e2fc3ccf59 glibc-2.3.2/iconvdata/Makefile
f4aa0a5a9c7b40110c7696a06143a9d1 glibc-20041219T2331/iconvdata/euc-jp-ms.c
571cf16dec830803d8a1ea416f065726 glibc-2.3.2/iconvdata/euc-jp-ms.c
5a6444ee2ec0d8a8edda59d92c7f4bb2 glibc-20041219T2331/iconvdata/gconv-modules
0d446b91cbf301738ef8566503e490c5 glibc-2.3.2/iconvdata/gconv-modules
04f5083cc61bb8fa742f90488bb01822 glibc-20041219T2331/iconvdata/tst-tables.sh
179cf6310f45a3a6f0b1a2e511ac5f26 glibc-2.3.2/iconvdata/tst-tables.sh

つまり次の4つのファイルについて違いが存在しています。


glibc-2*/iconvdata/Makefile
glibc-2*/iconvdata/euc-jp-ms.c
glibc-2*/iconvdata/gconv-modules
glibc-2*/iconvdata/tst-tables.sh

これが glibc のバージョンの違い (2.3.2 と 2.3.4) に依存するならば、CentOSSamba 3.0 で日本語を使っても大丈夫ということになりますから、早速検証しましょう。

diff -u glibc-2*/iconvdata/Makefile


--- glibc-20041219T2331/iconvdata/Makefile 2004-04-18 07:00:58.000000000 +0900
+++ glibc-2.3.2/iconvdata/Makefile 2005-03-03 13:31:37.041608432 +0900
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2002, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
# This file is part of the GNU C Library.

# The GNU C Library is free software; you can redistribute it and/or
@@ -51,14 +51,14 @@
GB18030 ISO-2022-CN-EXT VISCII GBBIG5 CP10007 KOI8-T \
GEORGIAN-PS GEORGIAN-ACADEMY ISO-IR-209 MAC-SAMI ARMSCII-8 \
TCVN5712-1 libJISX0213 EUC-JISX0213 SHIFT_JISX0213 \
- ISO-2022-JP-3 TSCII IBM866NAV CP932 EUC-JP-MS PT154 RK1048
+ ISO-2022-JP-3 TSCII IBM866NAV CP932 EUC-JP-MS

modules.so := $(addsuffix .so, $(modules))

include ../Makeconfig

ifeq (yes,$(build-shared))
-tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 bug-iconv4
+tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4
ifeq ($(have-thread-library),yes)
tests += bug-iconv3
endif
@@ -172,7 +172,7 @@
mac-sami.c ibm1160.c ibm1160.h ibm1161.c ibm1161.h \
ibm1163.c ibm1163.h ibm1164.c ibm1164.h jisx0213.c jisx0213.h \
euc-jisx0213.c shift_jisx0213.c iso-2022-jp-3.c \
- tcvn5712-1.c armscii-8.c tscii.c ibm866nav.c pt154.c rk1048.c
+ tcvn5712-1.c armscii-8.c tscii.c ibm866nav.c

# We build the transformation modules only when we build shared libs.
ifeq (yes,$(build-shared))
@@ -213,7 +213,7 @@
iso8859-13 iso8859-14 iso8859-15 mac-uk sami-ws2 \
iso-ir-197 tis-620 koi8-u ibm874 cp10007 koi8-t \
georgian-ps georgian-academy iso-ir-209 mac-sami \
- iso8859-11 ibm866nav pt154 rk1048
+ iso8859-11 ibm866nav

gen-special-modules := iso8859-7jp

これは対応するコードページが追加されているだけのようなので、多分大丈夫。

diff -u glibc-2*/iconvdata/euc-jp-ms.c


--- glibc-20041219T2331/iconvdata/euc-jp-ms.c 2003-08-14 17:37:44.000000000 +0900
+++ glibc-2.3.2/iconvdata/euc-jp-ms.c 2005-03-03 13:31:37.156590952 +0900
@@ -1,4 +1,4 @@
-/* Mapping tables for EUCJP-MS handling.
+/* Mapping tables for EUC-JP-MS handling.
Copyright (C) 1998,1999,2000,2001,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by MORIYAMA Masayuki , 2003.
コメントブロック内の違いなのでこれは同一ファイル。

diff -u glibc-2*/iconvdata/gconv-modules


--- glibc-20041219T2331/iconvdata/gconv-modules 2004-08-03 07:08:06.000000000 +0900
+++ glibc-2.3.2/iconvdata/gconv-modules 2005-03-03 13:31:37.163589888 +0900
@@ -1,5 +1,5 @@
# GNU libc iconv configuration.
-# Copyright (C) 1997-2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 1997-1999, 2000-2002, 2003 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
#

@@ -299,7 +299,6 @@

# from to module cost
alias ISO-IR-126// ISO-8859-7//
-alias ISO_8859-7:2003// ISO-8859-7//
alias ISO_8859-7:1987// ISO-8859-7//
alias ISO_8859-7// ISO-8859-7//
alias ISO8859-7// ISO-8859-7//
@@ -394,8 +393,6 @@
alias ISO8859-15// ISO-8859-15//
alias ISO885915// ISO-8859-15//
alias ISO-IR-203// ISO-8859-15//
-alias ISO_8859-15// ISO-8859-15//
-alias LATIN-9// ISO-8859-15//
alias ISO_8859-15:1998// ISO-8859-15//
module ISO-8859-15// INTERNAL ISO8859-15 1
module INTERNAL ISO-8859-15// ISO8859-15 1
@@ -406,8 +403,6 @@
alias ISO-IR-226// ISO-8859-16//
alias LATIN10// ISO-8859-16//
alias L10// ISO-8859-16//
-alias ISO_8859-16:2001// ISO-8859-16//
-alias ISO_8859-16// ISO-8859-16//
module ISO-8859-16// INTERNAL ISO8859-16 1
module INTERNAL ISO-8859-16// ISO8859-16 1

@@ -1009,7 +1004,6 @@
module INTERNAL IBM1046// IBM1046 1

# from to module cost
-alias IBM-1047// IBM1047//
alias CP1047// IBM1047//
alias 1047// IBM1047//
alias OSF10020417// IBM1047//
@@ -1143,8 +1137,6 @@
# from to module cost
alias GB13000// GBK//
alias CP936// GBK//
-alias MS936// GBK//
-alias WINDOWS-936// GBK//
module GBK// INTERNAL GBK 1
module INTERNAL GBK// GBK 1

@@ -1220,7 +1212,6 @@
# from to module cost
alias 874// IBM874//
alias CP874// IBM874//
-alias WINDOWS-874// IBM874//
module IBM874// INTERNAL IBM874 1
module INTERNAL IBM874// IBM874 1

@@ -1563,12 +1554,3 @@
# from to module cost
module TSCII// INTERNAL TSCII 1
module INTERNAL TSCII// TSCII 1
-
-# from to module cost
-module PT154// INTERNAL PT154 1
-module INTERNAL PT154// PT154 1
-
-# from to module cost
-alias STRK1048-2002// RK1048//
-module RK1048// INTERNAL RK1048 1
-module INTERNAL RK1048// RK1048 1

これも対応するコードページの追加だけのようです。

diff -u glibc-2*/iconvdata/tst-tables.sh


--- glibc-20041219T2331/iconvdata/tst-tables.sh 2004-04-18 06:59:40.000000000 +0900
+++ glibc-2.3.2/iconvdata/tst-tables.sh 2005-03-03 13:31:37.166589432 +0900
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# Contributed by Bruno Haible , 2000.
#
@@ -205,8 +205,6 @@
ARMSCII-8
TCVN5712-1
TSCII
- PT154
- RK1048
#
# Multibyte encodings come here
#
これも対応するコードページの追加だけのようです。

従って CentOSglibc には森山将之さんがおつくりになったパッチは適用済みです。たぶんオリジナルの glibc 自体にこのパッチはすでに取り込まれているのでしょう。