I am LAZY bones? AN ancient AND boring SITE

分类: '故障分析' 的归档

解决了gentoo下的luit乱码/崩溃的问题

问题的起因是这样的: 我之前的那个sssh快速登录脚本,到了gentoo下,发现就不灵了,输完命令回车,就直接出错退出了,在排除了expect的问题和ssh本身的问题以后,很快就把问题定位到了luit,luit是个用于装换终端程序编码的东东,我的sssh脚本就是靠它登录gbk的远程服务器的.但是gentoo下,却出了问题.
于是拿个gb2312编码的fcitx的config文件做了下测试,如下:
$ luit -encoding gbk cat ~/.fcitx/config
段错误
而执行 luit -encoding gb2312 cat ~/.fcitx/config 出来的又是乱码.(ubuntu下不管是gbk还是gb2312都是正常输出的.)

然后我就strace了一下:
strace luit -encoding gbk cat ~/.fcitx/config
发现有这样的输出:

open(“/usr/share/fonts/encodings/encodings.dir”, O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=4526, …}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78ff000
read(3, “128\ngb18030.2000-0 large/gb18030.”…, 4096) = 4096
open(“/usr/share/fonts/encodings/large/gbk-0.enc”, O_RDONLY) = -1 ENOENT (No such file or directory)

马上 ls /usr/share/fonts/encodings/large ,发现有个 gbk-0.enc.gz 但是没有 gbk-0.enc 这个文件,所以上面报打开失败.而且这个文件名是从 /usr/share/fonts/encodings/encodings.dir 里读取的.所以看了下:

$grep gbk /usr/share/fonts/encodings/encodings.dir
gbk-0 large/gbk-0.enc
gbk-0 large/gbk-0.enc.gz

发现有这么两行输出,猜想会不会是顺序问题,意思把那文本里面的这两行对换了下位置,再 luit -encoding gbk cat ~/.fcitx/config 的时候,发现输出正常了,哈哈,当然sssh脚本又可以用了~~

gentoo下gedit不能自动识别编码的问题

gentoo下的gedit,无法自动识别编码,打开fcitx的配置文件之类的那种GB2312的文件,中文就是一片乱码了。
想想ubuntu下的gedit是会自动转编码的,肯定是配置问题,上irc问了,oahong告诉我个地址:http://www.linuxsir.org/bbs/showthread.php?t=310960&highlight=
解决办法就是:

gconftool-2 --set /apps/gedit-2/preferences/encodings/auto_detected "[UTF-8,CURRENT,GB18030,BIG5,ISO-8859-15,UTF-16]" --type list --list-type string

也可以在 gconf-editor 里面改。

gentoo下的firefox鼠标中键不能关闭标签问题解决方法

这个问题不难,但是也记录一下。
ubuntu和windows下的firefox,都可以中键关闭标签,习惯了这种操作方式以后,发现gentoo下的居然不是这样的,点了中键以后,居然把剪贴板的内容贴到地址栏了,呵呵。
解决办法是firefox打开about:config,然后找到middlemouse.contentLoadURL这个键值,并设置为false,就好了。

flash插件引起的怪问题?

今天发生了一件挺郁闷的事情,我的电脑突然黑屏,而且不止一次。
黑了以后可以进入tty1,发现一堆进程都还在,但是Xorg这个进程defunct掉了,而且-9都杀不死,杀它的父进程gdm也杀不死,只能reboot了事。
但是reboot了以后,不久又是黑屏,不过这次我慢慢注意到了,是在我最小化firefox的那个瞬间黑掉的。
于是想是不是firefox刚升到3.0.2版本的缘故呢?但是问了irc里面的很多人都说没问题,而且自己也不是每次最小化的时候都黑屏的。
又黑了一次之后,总结出更细的规律了,那就是,只有打开有flash的页面的时候,最小化才会黑掉。于是马上想起,之前由于某个网站的要求,我曾把flash插件升级到“shockwave Flash 9.0 r124”,应该就是这个原因了,幸好原来的so文件有备份,马上换回“shockwave Flash 9.0 r31”,至少到现在还没发现问题,再观察一段时间看看。

解决了gentoo的man乱码问题

gentoo下,装了 app-i18n/man-pages-zh_CN ,但是man ls,就是一堆地乱码,虽说大家都推荐看英文的man,但对于我这种英盲来说,有个中文的man页,还是有必要的,即使做为辅助也好。
在gentoo论坛里,其实很久以前就有人提过此问题,虽然有解决办法,但是比较麻烦,而且有点小郁闷的是,居然过了这么久,此问题的包还没有正式进入gentoo的源。
从上面那帖子里,可以知道,问题的原因就是man用的 groff/nroff 不支持utf8.解决办法也就是换一个nroff而已。照着做估计也没问题,但是后来发现gentoo-china-overlay里面其实是有groff-utf8的。所以就找了个更简单的办法:
我不想用layman把整个overlay都下载下来,所以用了如下命令:

cd /usr/local/portage 之前我就建过这个目录,没的话,参考这里
mkdir -pv app-text/groff-utf8
wget “http://gentoo-china-overlay.googlecode.com/svn/trunk/app-text/groff-utf8/groff-utf8-0.ebuild”
ebuild groff-utf8-0.ebuild manifest
emerge groff-utf8 -av
完了之后,按提示
vim /etc/man.conf 将里面的 NROFF 那行改为 NROFF /usr/bin/groff-utf8 -Tutf8 -c -mandoc

完成了。

解决gentoo硬盘访问速度问题

之前一直感觉我的gentoo系统特别慢,昨晚终于注意到,一有点什么动作,硬盘都是满负荷的。于是 hdparm -t /dev/hda 了一下,好家伙,居然只有 1.8MB/sec,ubuntu下可是有45MB/sec的哦。而且 hdparm -i /dev/hda 显示,目前用的是udma5,而不是正常的udma6。而且,ubuntu下是 /dev/sda ,按说我的sata硬盘就不应该是 hda× 的。于是修改内核选项, Device Drivers里面把 Serial ATA (prod) and Parallel ATA drivers 选上了,重新编译,用新内核启动,哈哈,居然挂不上根分区了,没启动就 kernel panic 了,而且把grub里面对root=后面改成 hda9 和 sda9 都不行,郁闷了,心想可能是SATA的选项和原来的选项冲突了?于是再把上面的 ATA/ATAPI/MFM/RLL suport 整个去掉了,重新编译一次,哈哈,这回终于好了,修改/etc/fstab,用上全套的sda×,速度终于上来了。

又是gentoo的若干新手问题

先是打开compiz没边框的的问题,原因是A卡驱动没装好,装上闭源驱动(emerge ati-drivers),然后从ubuntu复制一份 /etc/X11/xorg.conf 搞定。汗的是,原来的gentoo系统居然是没这文件的。。。分辨率什么的居然都还是没问题的。。。

然后是pidgin一打开就提示:

Invalid certificate authority signature

The certificate chain presented by rsi.hotmail.com does not have a valid digital signature from the Certificate Authority from which it claims to have a signature.

google了一下,是 gnutls 这个USE搞的鬼,全局去掉这个USE,重新编译一下,搞定。

再然后是pdf查看问题,emerge了一个evince,发现打开任何一个文件都提示:

无法打开文档
无法处理的 MIME 类型:“application/octet-stream”

来来回回搞了好久,试了很多USE都不管用,最后发现用root登录的话,是完全没有问题的,排除了一些权限之类的问题以后,最终确认原因是:我这用户的家目录原来是ubuntu的,由于ubuntu和gentoo的gnome版本不一样,导致的问题。根据提示,搜索 mime,结果就找到了元凶: ~/.local/share/mime ,删之了事。

还有就是emerge了scrot了以后,使用一直报错:

giblib error: Saving to file XXXX failed

解决办法是,加png这个USE,重新编译 giblib 。

umount -l

有时候,umount一个分区,提示设备忙,加上 -f 参数也不管用,然后 lsof 路径 又找不到任何进程,这时候就可以用 sudo umount -l 路径 卸载之。
man 如是说:

-f Force unmount (in case of an unreachable NFS system). (Requires kernel 2.1.116 or later.)

-l Lazy unmount. Detach the filesystem from the filesystem hierarchy now, and cleanup all references to the filesystem as soon as it is not busy anymore. (Requires kernel 2.4.11 or later.)

gentoo新手的若干问题解决方法

我的硬盘里,一直有个gentoo的根分区,平时都没用上,又一直没有删掉,因为感觉迟早有一天,会用到的。
前几天TX兄也转向gentoo了,要知道这家伙作为ubuntu tweak的作者,算是个ubuntu的忠实用户,以前我也一直认为还有人和我一样守着ubuntu,心理有点安慰,但是到了现在,我想,是时候开始使用上面说的这个分区了。
上一次装gentoo,纯粹是为了好玩,那时候KDE4还没出,我在新搞的gentoo里面下瞎折腾,把当时还是rc版的KDE4给编译了,结果可想而知,系统根本就不可用,于是,gentoo也就一直这么放着了。。。
所以这回,我把分区重新格式化,重新安装自己熟悉的gnome了。和以前一样,在ubuntu环境下,下载stage3和初始的portage包,挂上gentoo分区,解压,chroot进去配置,编译内核等等。。。其实总得来说还算是顺利的,下面是我遇到的几个问题总结一下,比较乱,估计对大家也没多少参考价值。。呵呵。。。

emerge gnome-desktp 的时候,到了gcc3.3那步,出错,
提示: emake failed with bootstrap-lean
找到 http://www.linuxsir.org/bbs/thread317839.html
办法是: emerge sys-libs/libstdc++-v3

出现 SSE2 instructions require GCC 4.2 or higher
USE里面禁用sse2 搞定,因为当时还没有gcc的高版本,编译了gcc4.3以后,可以执行gcc-config让系统默认用新的gcc,这时候,可以重新打开sse2这个USE,就不会再错了。

emerge gdm 的时候,才装上 nautilus ?晕
自启动gdm的方法
nano /etc/conf.d/xdm DISPLAYMANAGER改成gdm
再 rc-update add xdm default

无线参照这文章就顺利搞定了。

中文字体安装: emerge wqy-zenhei wqy-bitmapfont

fcitx 选字框乱码,安装不上xft支持(好像得自己make?),结果加上 USE=”truetype”,再编译就好了。r0bertz大大说是绕过了xft的问题,呵呵。

emerge了pidgin,居然还是没有pidgin(command not found),只有finch…晕,加上gtk这个USE,重新编译一遍解决,由此也算是深刻体会到USE的作用了。

装compiz
emerge compiz-fusion compiz-fusion-plugins-unsupported

装 fusion-icon 由于没有进官方的portage树,所以要自己建个 overlay
参见: http://bugs.gentoo.org/show_bug.cgi?id=198365
命令:

# mkdir -pv /usr/local/portage/x11-apps/fusion-icon/
# wget “http://bugs.gentoo.org/attachment.cgi?id=150337″ -O /usr/local/portage/x11-apps/fusion-icon/fusion-icon-0.1.ebuild
# nano /etc/make.conf 添加一行 PORTDIR_OVERLAY=”/usr/local/portage”
# env-update && source /etc/profile
# cd /usr/local/portage/x11-apps/fusion-icon/
# ebuild fusion-icon-0.1.ebuild manifest 可以在目录下生成一个 Manifest 文件
# emerge fusion-icon -av

声音问题我搞了蛮久的,按这个帖子居然没搞定,一直是没有声音,呵呵,其实主要是内核里面要把 device driver 下面的sound里面的都去掉,用外部的alsa模块,按照那个问题做了以后,还差一步 alsaconf 选择一下声卡,就OK了,也就是那里面的第8步,其实不用手工编辑那文件的。调节音量仍然可用命令行下的 alsamixer 。

到目前,我的系统还或多或少有些问题,但是已经基本能用了,呵呵,庆祝一下。然后还要感谢下 oceanboo 老兄的帮助,这两天回答了我一堆的白痴问题。。。呵呵

bash历史功能失效问题

今天登录某远程服务器,发现输完命令后,向上键翻历史记录的功能失效了.
看了 .bash_history 文件,发现文件大小为0,但是权限是对的.
又echo了SHELL和TERM环境变量,也正常.
后来 echo $HISTSIZE 发现是0…
找到原因了,于是在 ~/.bashrc /etc/bashrc ~/.bash_profile /etc/profile 等文件中搜索,最终在 /etc/profile 的末尾找到一句 HISTSIZE=0 ,不知道是哪个家伙干的…
赶紧加#注释掉,重新登录一次,OK了.