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 向けの設定でよい筈です。
以下はこれについて検証した手順を示しています。
作業手順概略
CentOS の glibc に対する SRPM を展開する。
GNU から配布されている glibc を展開する。
展開した GNU 版 glibc に通常の手順でパッチをあてる。このときにパッチされたファイル一覧を控えておく。
md5sum 等でパッチされたファイルと CentOS の SRPM に含まれるファイルを比較して判断する。
作業内容
まず最初に glibc の内容を SRPM から調べてみることにします。次のコマンドで SRPM の入手を試みます。
しかし、この方法では何故かうまく入手できなかったので、代わりに RHEL 4 の SRPM を次のように入手してインストールします。
up2date --get-source glibc
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 向けの修正が適用済みかどうかを確認することですので、次のように実行してソースコードを展開します。
もしもパッケージの依存関係に不足があれば yum install 等でインストールします。
cd /usr/src/redhat/SPECS
rpmbuild -bp glibc.spec
さらに、比較用の glibc と対応するパッチを入手します。glibc は http://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-31Je2adcd78151e95f93e8f3c0841c87115 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) に依存するならば、CentOS で Samba 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-MSmodules.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 ibm866navgen-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
#
従って CentOS の glibc には森山将之さんがおつくりになったパッチは適用済みです。たぶんオリジナルの glibc 自体にこのパッチはすでに取り込まれているのでしょう。