Ubuntu 8.04 (amd64) で Wnn8 + scim-wnn + wnn7egg を使う
昨晩,[id:munepi:20081018:1224339999](ATOK X3 for Linux (with iiimecf) vs. Wnn8 for Linux (with wnn7egg) on GNU Emacs 22)で ATOK X3 の文句を言いまくったので,今晩は Wnn8 + scim-wnn + wnn7egg (with libwnn7) の使い方を書きます.
Ubuntu に限らず,今時の xorg 7 + utf8 なディストリで Wnn8 を使うためのメモだと思います.VineSeed でも近々 scim-wnn や scim-honoka などを rebuild して,使えるようにする予定です.
wnn8-le, wnn8-utils の deb を再構成
wnn8-le, wnn8-utils の xlibs 依存を DEBIAN/control から抜きます.
展開 mkdir -p wnn8-utils_1.00-1_i386/DEBIAN dpkg-deb --extract wnn8-utils_1.00-1_i386.deb wnn8-utils_1.00-1_i386 dpkg-deb --control wnn8-utils_1.00-1_i386.deb wnn8-utils_1.00-1_i386/DEBIAN/ 再構成 dpkg-deb --build wnn8-utils_1.00-1_i386
wnn8-le も同様な作業を行います.
Wnn8 のインストールスクリプトの修正
inst.utf8 をちょこっと修正します.
--- inst.utf8 2007-10-16 01:10:51.000000000 +0900 +++ inst_ubuntu8.04.utf8 2008-10-19 21:33:55.000000000 +0900 @@ -1,4 +1,6 @@ #!/bin/sh +### inst_ubuntu8.04.utf8 for Ubuntu 8.04 (amd64) + ### ### Wnn8 for Linux Install/Uninstall Script Ver1.00 ### (c) Copyright OMRON SOFTWARE Co., Ltd. 2005 @@ -28,10 +30,10 @@ SOLARIS= # solaris かどうか # Linux バンドル時はディストリビューション名を定義 # {redhat|vine|turbo|debian|ia64} -BUNDLE_DIST="" +BUNDLE_DIST="debian" #バンドルディストリビューションの表示名 -BUNDLE_DIST_NAME="" +BUNDLE_DIST_NAME="debian" #-------------------------------------------------- # インストールするパッケージファイル名 @@ -131,7 +133,7 @@ J_WNN7SUSEP_NAME="Wnn7 SUSE9.2 bundle pa ### パッケージインストールコマンド PKGINST_L="rpm -i" PKGINST_F="pkg_add" -PKGINST_D="dpkg -i" +PKGINST_D="dpkg -i --force-architecture" PKGINSTCMD= ### パッケージ削除コマンド
後は,inst_ubuntu8.04.utf8 を走らせて,Wnn8 の本体をインストールします.
jserver の init script でうだうだ吐くのが気になる場合は,Fedora 8 x86_64 で Wnn8 Linux を使う [id:munepi:20080711:1215785570] にも書いたパッチを当てるとおとなしくなります.
--- /etc/init.d/wnn8.orig 2005-01-24 00:00:00.000000000 +0900 +++ /etc/init.d/wnn8 2008-04-10 17:50:56.000000000 +0900 @@ -14,8 +14,11 @@ case "$1" in start) echo -n "Starting Wnn8 jserver: " - daemon /usr/sbin/jserver - echo +# /usr/sbin/jserver -pno 22273 -message_locale C >/dev/null 2>1 & +# daemon /usr/sbin/jserver + daemon /usr/sbin/jserver > /dev/null +# echo + action "" /bin/true touch /var/lock/subsys/wnn8 ;; stop)
libwnn7 のインストール
Ubuntu(Debian でも)では libwnn7 パッケージがないので,自前でビルドします.
libwnn7-20011017-1vl5.src.rpm*1を VineSeed から取ってきて rpm2cpio で展開すると,必要なパッチも出てきますので,後は以下の Makefile で呪文を唱えるだけです.
# libwnn7 for Ubuntu 8.04 (amd64) # based on libwnn7-20011017-1vl5.src.rpm INCLUDEDIR=/usr/include/wnn7 LIBDIR=/usr/lib all: build prep: clean tar jxf Wnn7SDK.tar.bz2 patch -p0 < Wnn7-SDK-64bit.patch patch -p0 < Wnn7-SDK-do-not-return-random-data-in-functions.patch patch -p0 < Wnn7-SDK-gcc4.patch patch -p0 < Wnn7-SDK-malloc.patch patch -p0 < Wnn7-SDK-static.patch patch -p0 < Wnn7-SDK-vine.patch build: prep cd src && make World -f Makefile.ini ls src/Wnn/include/*.h src/Wnn/jlib/*a src/Wnn/jlib/*.so* | \ sed -e 's|src/Wnn/include|${INCLUDEDIR}|g' \ -e 's|src/Wnn/jlib|${LIBDIR}|g' > manifest install: install -m 755 -d ${INCLUDEDIR} install -m 644 src/Wnn/include/*.h ${INCLUDEDIR} install -m 644 src/Wnn/jlib/*.a ${LIBDIR} cp -a src/Wnn/jlib/*.so* ${LIBDIR} /sbin/ldconfig uninstall: @if [ ! -f manifest ]; then exit 1 cat manifest | xargs rm -f rm -rf ${INCLUDEDIR} /sbin/ldconfig clean: rm -rf src ### end of file
scim-wnn v1.0.0 のインストール
libwnn7 と同様に,Ubuntu(Debian でも)では scim-wnn パッケージがないので,自前でビルドします.
scim-wnn-1.0.0-1vl5.src.rpm*2を VineSeed から取ってきて rpm2cpio で展開して,後は以下の Makefile で呪文を唱えるだけです.
# scim-wnn for Ubuntu 8.04 (amd64) # based on scim-wnn-1.0.0-1vl5.src.rpm PKG=scim-wnn-1.0.0 PREFIX=/usr LIBDIR=${PREFIX}/lib all: build require: sudo apt-get build-dep scim scim-anthy prep: clean tar zxf ${PKG}.tar.gz patch -p0 < ${PKG}_for-wnn8.patch build: prep cd ${PKG} && \ bash configure --prefix=${PREFIX} && \ make install: cd ${PKG} && make install # remove unpackaged files rm -f ${LIBDIR}/scim-1.0/*/Helper/*.{a,la} rm -f ${LIBDIR}/scim-1.0/*/IMEngine/*.{a,la} rm -f ${LIBDIR}/scim-1.0/*/SetupUI/*.{a,la} /sbin/ldconfig uninstall: make uninstall /sbin/ldconfig clean: rm -rf ${PKG} ### end of file
wnn7egg のインストール
こちらも VineSeed の wnn7egg-1.02-1vl5.src.rpm*3を取ってくると,必要な物は揃います.
以下のスクリプトは wnn7egg を byte-compile します.このスクリプトは,Debian の wnn7egg_1.02-7.diff.gz を元にして,VineSeed の wnn7egg-1.02-1vl5.src.rpm に取り込んだものを改変しました.
#!/bin/sh # This script is to bytecompile wnn7egg v1.02-1. # This particular script hasn't been tested, so be careful. ### modified wnn7egg-install.sh contained in wnn7egg-1.02-1vlmp2.src.rpm FLAVOR="emacs" PACKAGE="wnn7egg" #ELDIR=/usr/local/share/emacs/site-lisp/${PACKAGE} ELDIR=${HOME}/lib/emacs/${PACKAGE} EL_ONLY="eggrc-wnn7 wnn7egg-edep.el its-v309" FILES="wnn7egg-cnv.el wnn7egg-leim.el wnn7egg-jsymbol.el wnn7egg-lib.el \ wnn7egg.el wnn7egg-com.el wnn7egg-rpc.el busyu.el" FLAGS="--no-site-file -q -batch -l path.el -l ./wnn7egg-lib.el \ -f batch-byte-compile" echo -n "install/${PACKAGE}: Byte-compiling for ${FLAVOR} ..." # Byte compile cd ${ELDIR} echo '(setq load-path (cons "." load-path) byte-compile-warnings nil)'> path.el ${FLAVOR} ${FLAGS} ${FILES} > CompilationLog 2>&1 #rm -f ${FILES} path.el rm -f path.el echo " done." exit 0; ### end of file
eggrc-wnn7 の辞書を Wnn8 用にして,母音過不足補正機能を nil にします.
cp -a eggrc-wnn7_for-wnn8 eggrc-wnn7 patch -p0 < eggrc-wnn7-boinkabusoku-nil.patch
wnn7egg の設定は基本的に以下でおkです.
wnn7egg-vl.spec の Description: にも書いておきました.
(setq emacs-ime "wnn8") (if (or (equal emacs-ime "wnn8") (equal emacs-ime "Wnn8")) (progn (setq load-path (append '("~/lib/emacs/wnn7egg") load-path)) (global-set-key "\C-\\" 'toggle-input-method) ;; Shift-Space または 半角/全角 でも起動 ;(global-set-key [?\S-\ ] 'toggle-input-method) (global-set-key [zenkaku-hankaku] 'toggle-input-method) ;; canna like toggle keybind ;;(global-set-key "\C-o" 'toggle-input-method) (load "wnn7egg-leim") (set-input-method "japanese-egg-wnn7") (set-language-info "Japanese" 'input-method "japanese-egg-wnn7") ;; "nn" で「ん」を入力 (setq enable-double-n-syntax t) ;; 候補選択モード ;(egg-use-input-predict) (setq egg-predict-realtime nil) ;; インライン候補選択モード (setq egg-predict-mode "inline") ;; ウインドウ候補選択モード (setq egg-predict-mode "window") ;; 候補リスト表示 ;(define-key wnn7-henkan-mode-map " " 'wnn7-henkan-select-kouho-dai) ;; ;; 1234567890%#%"'/\| を「半角」で入力 ;; (let ((its:*defrule-verbose* nil)) ;; (its-define-mode "roma-kana") ;; (dolist (symbol '("1" "2" "3" "4" "5" ;; "6" "7" "8" "9" "0" ;; "#" "%" "\"" "'" "/" "\\" "|")) ;; (its-defrule symbol symbol))) ;; デフォルトの句読点「、。」を「,.」に変更する (setq use-touten-for-comma nil) (setq use-kuten-for-period nil) ;; 逆変換を可能にする;; 自動的に読み込まれるので不要 ;(load "eggrc-wnn7") ;; 部首・画数変換を可能にする wnn7egg には busyu.el はない (load "busyu") ) )