#76
Last-modified: Wednesday, 02-Apr-2003 02:11:59 JST
[ トップページ/ いとしの liza (SL-C700 のページ)/ Mutt と仲間たち/ ウクレレ日記 ]


[SL-C700] Mutt と仲間たち 〜 make 編 〜

2003-04-01 ♪きむらかずし kimu*st.rim.or.jp

はじめに

Mutt と仲間たちを公開し、 LinuxZaurus での Mutt ユーザが増えはじめたかな〜と思ったら、 mutt 1.4 のセキュリティ問題で zaurus-ja での公開がとりやめになってしまいました。 これを機会に、セキュリティ強化版 mutt 1.4.1 に、 日本語パッチ mutt-1.4.1i-ja.1 を当てた mutt を作ってみることに。 日本語パッチの拡張機能で、より文字化けに強くなったり、 添付ファイル名の日本語表示等が可能になるはず。

しかしこれがまたイバラの道だったのです……。

人柱向けバイナリ公開

ふつーの UNIX っぽく /usr/local 以下につくりました。 なので zaurus-ja 版と平行運用も可能です。 ユーザ設定である ‾/.mutt/muttrc は共通で使えます。

download

mutt-1.4.1i-ja.1-liza-exec.tar.gz

tar ztvf mutt-1.4.1i-ja.1-liza-exec.tar.gz

-rwxr-xr-x root/root    737020 2003-03-31 23:33 usr/local/bin/mutt
lrwxrwxrwx root/root         0 2003-03-29 14:15 usr/local/lib/libiconv.so -> libiconv.so.2.1.0
lrwxrwxrwx root/root         0 2003-03-29 14:15 usr/local/lib/libiconv.so.2 -> libiconv.so.2.1.0
-rw-r--r-- root/root    893852 2003-04-01 14:37 usr/local/lib/libiconv.so.2.1.0
-rw-r--r-- root/root      2476 2003-04-01 14:14 usr/local/etc/Muttrc
-rw-r--r-- root/root       722 2003-03-29 05:53 usr/local/etc/mutt-ja.rc

install

すみません、 SL-C700 を 1 台しか持っていないので、これだけでインストール できるかどうか検証していません (^^;

$ su
# cd /
# tar zxvf mutt-1.4.1i-ja.1-liza-exec.tar.gz

以下は共有ライブラリ libiconv を認識させるおまじない。

# vi /etc/ld.so.conf
/lib
/usr/lib
/home/QtPalmtop/lib
/usr/local/lib

↑最後の一行を追加する。

# ldconfig -v

作り方

ちゃんとまとめる時間がないので、とりあえずメモだけ公開します。 かなり適当なので、恐いと思った人は自分で作り直した方がいいでせう。

*** gcc セルフ開発環境のマウント

$ vi /usr/local/bin/mountdev
#!/bin/sh
mount -o loop,rw -t cramfs /mnt/card/dskimg/dev_img-1.3 /usr/local/dev

$ su
# mountdev

*** swap

swap は合計 64MB 程度、用意したい。


*** 共有ライブラリの位置に /usr/local/lib を追加

# vi /etc/ld.so.conf
/usr/local/lib
↑追加

以降、ライブラリを追加したら、下記のを実行のこと。

# ldconfig -v


*** TMP を SD カードに設定

gcc が使う一時領域を SD カードにもってゆく。

$ mkdir /mnt/card/tmp
$ vi .bashrc
TMP=/mnt/card/tmp
export TMP
↑追加

*** /tmp を 3MB にする

gcc 以外のスクリプト等が /tmp を溢れさせることがあるので、

# cd /root/etc/rc.d
# mount -o remount,rw /
# cp rc.rofilesys rc.rofilesys-orig
# vi rc.rofilesys          
:1,$s/1m/3m/

再起動すると...
/tmp が置かれる /dev/shm が 3072 KB になっている。


*** /usr/local/include を用意する

各種ライブラリの make install がうまくゆかないので、
include を外に。

# cd /usr/local
# rm include ←シンボリックリンクを削除
# cp -pr /usr/local/dev/include .

*** Mutt を救おう計画

 317588 Mar 28 07:40 m4-1.4.tar.gz
 549386 Mar 28 07:07 automake-1.7.3.tar.bz2 → automake-1.4-p6 入れ直し
 811439 Mar 28 07:06 autoconf-2.57.tar.bz2
 300461 Mar 28 01:10 mutt-manual_ja-1.4i-1.tar.gz
  80251 Mar 28 01:10 mutt-1.4.1i-ja.1.tar.gz
2599487 Mar 28 01:10 mutt-1.4.1i.tar.gz
1092233 Mar 28 01:08 slang-1.4.5jp2.tar.gz  

*** Mutt 依存関係

mutt -> automake -> autoconf -> GNU m4


*** GNU m4-1.4
./configure
make
make check した?
make install
strip /usr/local/bin/m4

*** GNU autoconf-2.57
$ ./configure
$ make

標準的な perl のモジュールが必要。

*** perl 5.6.1 の標準的なモジュールを追加

perl-5.6.1 の ipk をインストールすると、
/usr/lib/perl/5.6.1
/usr/share/perl/5.6.1
にモジュール群が入る。

サーチパスに含まれるのに、
/usr/local/lib/perl/5.6.1 は存在しない。

perl-5.6.1.tar.gz より lib/ だけをひっぱり出し、SD カード
    /mnt/card/work/perl-5.6.1-lib
に置いた。
# mkdir /usr/local/lib/perl
# ln -s /mnt/card/work/perl-5.6.1-lib 5.6.1


*** autoconf つづき

$ make
$ make check
一部、エラーが出るが無視。。。

# make install


*** automake-1.7

$ ./configure
$ make
$ make check
...
PASS: autohdr2.test
PASS: auxdir.test
XFAIL: auxdir2.test
PASS: backsl.test   
...
PASS: cond16.test
XFAIL: cond17.test        
...
PASS: cond28.test
FAIL: condd.test
PASS: condinc.test      
...
PASS: extra6.test
FAIL: extra7.test
PASS: flibs.test                                               
と一部エラーが出るが無視。

# make install


*** aclocal-1.4

mutt の configure は automake-1.4 を要求するので...

*** automake-1.4-p6
$ ./configure
$ make
$ make check
...
FAIL: cond5.test
...
FAIL: error.test
...
=====================
2 of 194 tests failed
=====================
make[2]: *** [check-TESTS] Error 1
make[2]: Leaving directory `/usr/mnt.rom/card/work/automake-1.4-p6/tests'
make[1]: *** [check-am] Error 2
make[1]: Leaving directory `/usr/mnt.rom/card/work/automake-1.4-p6/tests'
make: *** [check-recursive] Error 1

テストでエラーは出るけど...
# make install

*** mutt-1.4.1

$ vi kimu
./configure --with-libiconv-prefix=/usr/local ¥
	--without-wc-funcs ¥
	--with-slang=../slang-1.4.5jp2 ¥
	--enable-default-japanese

$ sh -f kimu

# mkdir /usr/local/etc
# cp Muttrc mutt-ja.rc /usr/local/etc
# vi /usr/local/etc/Muttrc
... mutt-ja.rc を読み込むように path を変更
... color 設定をコメントに。そのままだと画面がめちゃくちゃに。 


*** S-Lang 1.4.5jp2

configure にて awk を使っているので mawk でごまかす。

# cd /usr/local/bin
# ln  -s mawk awk

$ ./configure
$ make
# make install

$ pwd
/home/zaurus/wo/slang-1.4.5jp2/src/objs
$ ls -l *a
-rw-r--r--    1 root     root      3003546 Mar 29 18:06 libslang.a
# cd /usr/local/lib
# strip libslang.a
# ls -l libslang.a
-rw-r--r--    1 root     root       331756 Mar 29 21:26 libslang.a 


*** libiconv-1.8

$ vi ABOUT-NLS

... autodetect するには、内蔵された GNU gettext を使う?

$ ./configure --with-included-gettext
...
...
hecking for string.h... yes
checking for setlocale... yes
test: Out of space		←これはいったい...
not updating unwritable cache /dev/null
configure: creating ./config.status
config.status: creating Makefile
config.status: creating lib/Makefile
config.status: creating config.h    

$ make check

# make install
...
...
if test -n "libiconv_plug.so"; then ../autoconf/install-sh -c -m 644 libiconv_plug.so /usr/local/lib/libiconv_plug.so.new && mv /usr/local/lib/libiconv_plug.so.new /usr/local/lib/libiconv_plug.so ; fi
/usr/local/lib/#inst.12467#: No such file or directory
make[1]: *** [install] Error 1
make[1]: Leaving directory `/usr/mnt.rom/card/work/libiconv-1.8/lib'
make: *** [install] Error 2           

ここで止まるので、 iconv.h がインストールされなかった?!


*** mutt-1.4.1

こっちにも --with-included-gettext オプションを。

$ vi kimu
./configure --with-libiconv-prefix=/usr/local ¥
	--without-wc-funcs ¥
	--with-included-gettext ¥
	--with-slang=../slang-1.4.5jp2 ¥
	--enable-default-japanese

$ sh -f kimu
$ make
$ ./mutt -y
... だめだ...

ちなみに、
$ ls -l mutt
-rwxr-xr-x    1 zaurus   qpe       2308307 Mar 30 00:20 mutt
$ ldd mutt
        libm.so.6 => /lib/libm.so.6 (0x40022000)
        libiconv.so.2 => /usr/local/lib/libiconv.so.2 (0x40050000)
        libc.so.6 => /lib/libc.so.6 (0x40132000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

*** mutt と iconv

わかった!!
/usr/local/include/iconv.h が、 GNU libiconv-1.8 のものではなかった。

# cd /usr/local/include
# mv iconv.h iconv.h-old
# cp -p ‾/wo/libiconv-1.8/include/iconv.h .


$ cd ‾/wo/mutt-1.4.1
$ rm Makefile
$ cat kimu
./configure --with-libiconv-prefix=/usr/local ¥
	--without-wc-funcs ¥
	--with-included-gettext ¥
	--with-slang=../slang-1.4.5jp2 ¥
	--enable-default-japanese
$ sh -f kimu
$ make
$ ./mutt -y


*** mutt 仮インストール

# pwd
/usr/mnt.rom/card/work/mutt-1.4.1
# cp -p mutt /usr/local/bin
# cd /usr/local/bin
# ls -l mutt
-rwxr-xr-x    1 zaurus   qpe       2311375 Mar 31 23:43 mutt
# strip mutt
# ls -l mutt
-rwxr-xr-x    1 zaurus   qpe        737020 Apr  1 08:33 mutt         

# chown root:root /usr/local/bin/mutt


*** zaurus-ja 版 mutt との比較

$ mutt -v
Mutt 1.4i (2002-05-29)
Copyright (C) 1996-2001 Michael R. Elkins and others.
Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.
Mutt is free software, and you are welcome to redistribute it
under certain conditions; type `mutt -vv' for details.

System: Linux 2.4.18-rmk7-pxa3-embedix (armv5l) [using ncurses 4.2]
Compile options:
-DOMAIN
-DEBUG
-HOMESPOOL  -USE_SETGID  -USE_DOTLOCK  -DL_STANDALONE  
+USE_FCNTL  -USE_FLOCK
+USE_POP  +USE_IMAP  -USE_GSS  -USE_SSL  -USE_GNUTLS  -USE_SASL  
+HAVE_REGCOMP  +USE_GNU_REGEX  
+HAVE_COLOR  +HAVE_START_COLOR  +HAVE_TYPEAHEAD  +HAVE_BKGDSET  
+HAVE_CURS_SET  +HAVE_META  +HAVE_RESIZETERM  
-HAVE_PGP  -BUFFY_SIZE -EXACT_ADDRESS  -SUN_ATTACHMENT  
+ENABLE_NLS  -LOCALES_HACK  -COMPRESSED  -HAVE_WC_FUNCS  +HAVE_LANGINFO_CODESET  +HAVE_LANGINFO_YESEXPR  
+HAVE_ICONV  -ICONV_NONTRANS  +HAVE_GETSID  +HAVE_GETADDRINFO  
ISPELL="/usr/bin/ispell"
SENDMAIL="/usr/sbin/sendmail"
MAILPATH="/var/mail"
PKGDATADIR="/opt/QtPalmtop/mutt/share/mutt"
SYSCONFDIR="/opt/QtPalmtop/mutt/etc"
EXECSHELL="/bin/sh"
-MIXMASTER
To contact the developers, please mail to <mutt-dev@mutt.org>.
To report a bug, please use the flea(1) utility.

patch-1.3.28.cvs.indexsegfault
patch-1.3.27.bse.xtitles.1
patch-1.3.26.appoct.3
patch-1.3.15.sw.pgp-outlook.1
patch-1.4.admcd.gnutlsbuild.53d
patch-1.4.admcd.gnutlsdlopen.53d
patch-1.4.admcd.gnutls.53d
Md.use_editor
Md.paths_mutt.man
Md.muttbug_no_list
Md.use_etc_mailname
Md.muttbug_warning
Md.gpg_status_fd
patch-1.4.0.cd.edit_threads.9.2
patch-1.3.24.rr.compressed.1
patch-1.3.23.1.ametzler.pgp_good_sign

$ ./mutt -v
Mutt 1.4.1i-ja.1 (2003-03-19)
Copyright (C) 1996-2002 Michael R. Elkins and others.
Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.
Mutt is free software, and you are welcome to redistribute it
under certain conditions; type `mutt -vv' for details.

System: Linux 2.4.18-rmk7-pxa3-embedix (armv5l) [using slang 10405]
Compile options:
-DOMAIN
-DEBUG
-HOMESPOOL  -USE_SETGID  -USE_DOTLOCK  -DL_STANDALONE  
+USE_FCNTL  -USE_FLOCK
-USE_POP  -USE_IMAP  -USE_GSS  -USE_SSL  -USE_SASL  
+HAVE_REGCOMP  -USE_GNU_REGEX  
+HAVE_COLOR  -HAVE_START_COLOR  -HAVE_TYPEAHEAD  -HAVE_BKGDSET  
-HAVE_CURS_SET  -HAVE_META  -HAVE_RESIZETERM  
+HAVE_PGP  -BUFFY_SIZE -EXACT_ADDRESS  -SUN_ATTACHMENT  
+ENABLE_NLS  -LOCALES_HACK  -HAVE_WC_FUNCS  +HAVE_LANGINFO_CODESET  +HAVE_LANGINFO_YESEXPR  
+HAVE_ICONV  -ICONV_NONTRANS  +HAVE_GETSID  -HAVE_GETADDRINFO  
-ISPELL
SENDMAIL="/usr/sbin/sendmail"
MAILPATH="/var/mail"
PKGDATADIR="/usr/local/share/mutt"
SYSCONFDIR="/usr/local/etc"
EXECSHELL="/bin/sh"
-MIXMASTER
To contact the developers, please mail to <mutt-dev@mutt.org>.
To report a bug, please use the flea(1) utility.

patch-1.4.1.tt.ja.1