数据文件位置问题
这个问题比较棘手: 前面配置kde-i18n-zhcn时/usr/share/locale/zh_CN可以用别的目录映射,那是因为这个目录还不是很大;现在/usr/share下并没有一个叫做fcitx的目录供我们映射,难道我们要映射整个/usr/share? 显然是M:I-3.
fcitx是否一定要从/usr/share/fcitx读取数
难道就没有什么办法了么?在编译的时候指定了prefix=
想到别的程序也应该有这样的问题,我看了一下Knoppix里面
perl -pi -e 's|/usr/share/games/tuxkart|./
(注意两个字符串长度需要是一样的)
然后用一个wrapper确保真正启动可执行程序时当前目录在
cat <
#!/bin/sh
cd `dirname $0`/../games
./tuxracer $*
EOF
chmod 755 $DESTDIR/bin/tuxracer
所以fcitx的install.sh可以做成这样:
[ ! -d $DESTDIR/usr/share/fcitx ] && mkdir -p $DESTDIR/usr/share/fcitx
cp -a fcitx/usr/share/fcitx/* $DESTDIR/usr/share/fcitx/
# copy executables
[ ! -d $DESTDIR/usr/bin ] && mkdir -p $DESTDIR/usr/bin
cp -a fcitx/usr/bin/* $DESTDIR/usr/bin/
chmod 755 $DESTDIR/usr/bin/*
cp -a fcitx/usr/bin/fcitx $DESTDIR/bin/
perl -pi -e 's|/usr/share/fcitx|./../share
# add a wrapper $DESTDIR/bin/fcitx
cat <
#!/bin/sh
cd `dirname $0`/../usr/bin
exec ./fcitx $*
EOF
chmod 755 $DESTDIR/bin/fcitx
但经过实际试验,并没有成功,fcitx还是无法找到码表和词库
用strings fcitx | grep usr/share/fcitx发现并没有什么匹配的结果
最后发现只能用./..来替换/usr
perl -pi -e 's#/usr#./..#' $DESTDIR/usr/bin/fcitx
环境配置
环境变量似乎比较好解决,无非是修改~/.bashrc(或者/etc/environment文件,如果~/.bashrc不好使的话),然后source一下。慢着! X启动的时候,是否会去读取~/.bash_profile? 记得从gdm等启动X回话的时候是不读取的。
如果这里也不读取,就比较麻烦。为了确认这一点,在~/
echo "~/.bash_profile called: **ITEMS**quot; >> /tmp/xsession_test.log
然后用root在控制台重新启动xsession:
/etc/init.d/xsession restart
结果发现没有 :-(
所以只好改用saveconfig保存文件的方式,而且这样的话这里就简单得多了
$ sudo vi /etc/X11/Xsession.d/45xsession
--- etc/X11/Xsession.d/45xsession.orig 2005-03-17 11:01:20.000000000 +0800
+++ etc/X11/Xsession.d/45xsession 2005-03-18 10:35:28.000000000 +0800
@@ -745,6 +745,13 @@ EOF
done
}
+export XMODIFIERS="@im=fcitx"
+unset LC_ALL
+export LC_ALL=zh_CN.GB2312
+if [ -x $HOME/.dist/bin/fcitx ] ; then
+ $HOME/.dist/bin/fcitx &
+fi
+
# Check for sufficient Real Memory for starting KDE or GNOME
# (We don't want to end in a swap-a-lot loop.)
REALMEM="$(awk '/MemTotal/{print $2}' /proc/meminfo)"
@@ -753,7 +760,8 @@ if [ "$REALMEM" -lt 25000 ]; then
starttwm
else
case "$DESKTOP" in
- kde|KDE) [ "$FREEMEM" -ge "60000" ] && startkde || starttwm lowmem 82; ;;
+ kde|KDE) sudo mount --bind $HOME/.dist/usr/share/locale/zh_CN /usr/share/locale/zh_CN
+ [ "$FREEMEM" -ge "60000" ] && startkde || starttwm lowmem 82; ;;
gnome|GNOME) [ "$FREEMEM" -ge "45000" ] && startgnome || starttwm lowmem 67; ;;
larswm|LARSWM) [ "$FREEMEM" -ge "35000" ] && startlarswm || starttwm lowmem 64; ;;
enlightenment|ENLIGHTENMENT) [ "$FREEMEM" -ge "35000" ] && startenlightenment || starttwm lowmem 64; ;;
+++ etc/X11/Xsession.d/45xsession 2005-03-18 10:35:28.000000000 +0800
@@ -745,6 +745,13 @@ EOF
done
}
+export XMODIFIERS="@im=fcitx"
+unset LC_ALL
+export LC_ALL=zh_CN.GB2312
+if [ -x $HOME/.dist/bin/fcitx ] ; then
+ $HOME/.dist/bin/fcitx &
+fi
+
# Check for sufficient Real Memory for starting KDE or GNOME
# (We don't want to end in a swap-a-lot loop.)
REALMEM="$(awk '/MemTotal/{print $2}' /proc/meminfo)"
@@ -753,7 +760,8 @@ if [ "$REALMEM" -lt 25000 ]; then
starttwm
else
case "$DESKTOP" in
- kde|KDE) [ "$FREEMEM" -ge "60000" ] && startkde || starttwm lowmem 82; ;;
+ kde|KDE) sudo mount --bind $HOME/.dist/usr/share/locale
+ [ "$FREEMEM" -ge "60000" ] && startkde || starttwm lowmem 82; ;;
gnome|GNOME) [ "$FREEMEM" -ge "45000" ] && startgnome || starttwm lowmem 67; ;;
larswm|LARSWM) [ "$FREEMEM" -ge "35000" ] && startlarswm || starttwm lowmem 64; ;;
enlightenment|ENLIGHTENMENT) [ "$FREEMEM" -ge "35000" ] && startenlightenment || starttwm lowmem 64; ;;
然后重启动(或者象nvidia模块那样在exit.sh里面执行一下/etc/init.d/xsession restart)
备注:
当启动时添加参数lang=cn后,/etc/init.d/knoppix-autoconfig会自动对KDE的配置进行修改,使其启动时使用zh_CN; 如果配置成中文后,以后启动又用了home=....选项,则保存下来的设置会生效。所以这方面不用再担心。回头看输入法: 启动时若添加了lang=cn,knoppix-autocon
为了减少依赖,干脆不考虑lang=cn的情况
没有评论:
发表评论