总有一些美好,期待着我们去发现
RSS 图标 Email 图标 首页图标
  • 解决Ubuntu 64位下LinuxQQ无法输入中文的问题

    发表于 2011年04月4日 黄良懿 4 条评论

    著名的烂尾工程腾讯Linux QQ至今都只有个beta1不说,在这个4G内存条的价格也就值一个生日蛋糕的时代,竟然还没有64位的版本,真是逼得我不得不将其鄙视了一百遍啊一百遍。

    幸好,还可以通过强制安装来在64位下使用: sudo dpkg -i --force-all linuxqq_v1.0.2-beta1_i386.deb 。当然前提是相关的32位兼容包也都装了: sudo apt-get install ia32-libs 。完事后应该就能启动QQ登录看中文消息以及发送英文消息了,嗯,没错,这句话的言下之意就是说你输入不了中文。

    在控制台下运行qq,可以看到IM无法装载的消息。用scim的同学运气好些,有篇文章《64位ubuntu安装QQ for linux 笔记》介绍了如何搞定这个鬼扯的事。倒霉的ibus的同学们么,就跟我和这位同学(【求助】64位ubuntu下QQ无法使用i-bus~)一样的悲催。

    当然,前面的笔记既然已经指出了问题和解决的思路,那么发挥一下我们的折腾力,这事还是有得搞的。
    首先是得让qq知道要用32位的ibus文件,而非默认的文件。命令如下:

    /usr/bin/gtk-query-immodules-2.0 | sudo tee /etc/gtk-2.0/gtk.immodules.32  #用scim的前辈不厚道,给的修改好的文件内木有ibus,我们自己来生成
    sudo gedit /etc/gtk-2.0/gtk.immodules.32  #需要将其中所有的/usr/lib/替换成/usr/lib32/
    sudo vim /usr/bin/qq

    在QQ的启动脚本中第2行开始,插入以下两条命令,第一条是加入IM模块的环境变量,第二条是用来解决LinuxQQ动不动突然不见的问题的:

    export GTK_IM_MODULE_FILE=/etc/gtk-2.0/gtk.immodules.32
    export GDK_NATIVE_WINDOWS=true

    然后再在命令行下启动QQ,恭喜你,你还是会继续看到ibus无法载入的消息:)

    嗯哼,事实上,是im-ibus.so找不到,这个玩意在/usr/lib/gtk-2.0/2.10.0/immodules/im-ibus.so自然是有的,但/usr/lib32/gtk-2.0/2.10.0/immodules/im-ibus.so就木有了。
    所以,还是先sudo apt-cache showpkg ibus-gtk看看64位的版本号和文件路径,然后搞一个相同版本的32位版本去。 文件在这个目录下可以找到http://cn.archive.ubuntu.com/ubuntu/pool/main/i/ibus/,选择很多,仔细看看,选择和自己原ibus-gtk包相同版本号的i386包下,免得出些莫名其妙的问题。比如我的就是ibus-gtk_1.3.7-1ubuntu4_i386.deb。
    包下回来以后 dpkg -x ibus-gtk*.deb /tmp 将其解开,然后mv /tmp/usr/lib/* /usr/lib32/gtk-2.0/2.10.0/immodules/就好。

    再次启动qq,发现错误信息果然变了,这次是libibus.so.2没有载入,结果还是IM模块ibus无法载入。
    和前面的ibus-gtk一样的做法解决之,但要注意的是这次解出来的*.so是需要放去/usr/lib32而不是之前的immodules里,随后是lib-dbus-1-3的so也放去/usr/lib32。

    我的机器上到此就已经成功解决了中文输入问题了。 有同样问题的同学可以试试看,只是系统版本和包版本都尽量保持和系统里已经有的64位包相一致。

     

    附上我的几个相关包的下载路径:
    wget http://cn.archive.ubuntu.com/ubuntu/pool/main/i/ibus/ibus-gtk_1.3.7-1ubuntu4_i386.deb
    wget http://cn.archive.ubuntu.com/ubuntu/pool/main/i/ibus/libibus2_1.3.7-1ubuntu4_i386.deb
    wget http://cn.archive.ubuntu.com/ubuntu/pool/main/d/dbus/libdbus-1-3_1.4.0-0ubuntu1.2_i386.deb

     

    最后,按照国际管理,有图有真相是必须的:
    解决Ubuntu 64位下LinuxQQ无法输入中文的问题

    相关日志:


  • 解决Zend Optimizer无法加载及与eAccelerator的冲突

    发表于 2010年03月16日 黄良懿 没有评论

    在VPS上下载了3.3.9的Zend Optimizer,找说明安装后出现错误:

    cannot restore segment prot after reloc: Permission denied

    找了下,问题是出在SELinux上,关闭SELinux即可解决:

    1. 修改/etc/sysconfig/selinux,修改为SELINUX=disabled
    2. 执行/usr/sbin/setenforce 0立即关闭,且无需重启系统

    如果你不希望关闭SELinux的话,也可以

    chcon -t shlib_t ZendOptimizer.so

    chcon -t texrel_shlib_t ZendOptimizer.so

     

    操作后php-fpm start启动,一切正常。 但ShopEx网站返回502错误,修改php.ini输出错误日志查看后发现访问Zend Guard做了encode的php文件均无法正常执行,错误是Connection reset,但命令行查看php -v时显示Zend Optimizer已加载,phpinfo()也显示正常。
     反复尝试多次后发现是装载次序的问题,修改php.ini,使eAccelerator在Zend Optimizer之前装入即可

    相关日志:


  • 记录一些常用的Linux命令序列

    发表于 2009年09月20日 黄良懿 没有评论

    刚好最近写些shell script,翻出些平时日常用到的一些Linux命令组合使用方式,许多方法都可以略微修改后发挥其他作用。做个合集一起放在这里做下资料留存:

    查看本机所有的tcp连接状况:
    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

    查看当前机器上正在监听的端口号及进程名:
    netstat -npl|awk '($1=="tcp"){print $4"\t"$7}'|sed 's/[0-9\.]*://g'

    列出当前用户的所有进程详细信息:
    ps aux|grep $(whoami)

    查看自己最近20次登陆系统的时间和登出时间:
    last|grep $(whoami)|tail -20

    强行关闭Tomcat:
    ps aux|grep tomcat|grep -v grep|awk '{print $2}'|xargs kill -9

    不关闭Nginx重读配置文件:
    ps -ef | grep 'nginx: master process' | grep -v 'grep' | awk -F ' ' '{print $2}'|xargs kill -HUP

    关闭内存占用过多的php fastcgi进程,这里的$5和$6分别是虚拟内存和物理内存:
    ps aux|grep php-cgi|awk '(($5>150000||$6>60000) && $8=="S"){print $2}'|xargs kill -9

    相关日志: