I am LAZY bones? AN ancient AND boring SITE

分类: 'gentoo' 的归档

键盘快捷键问题

gentoo和ubuntu共用/home,又发现新问题了:在ubuntu下设置了音量大小和静音的快捷键以后,到了gentoo下就不能用了,同样,gentoo下设置好以后,ubuntu下也不能用.
仔细看了键盘快捷键的设置界面,发现ubuntu下设置的是类似 XF86AudioMute/XF86AudioRaiseVolume/XF86AudioLowerVolume 之类的字符串,而gentoo下则是 0x**的键值,很明显是gentoo没有给键值定义名称,于是用 xev把几个键的键值都记下以后,写了一个 /etc/X11/Xmodmap 文件,我的内容如下(不同型号的硬解应该不一样):

keycode 160 = XF86AudioMute
keycode 176 = XF86AudioRaiseVolume
keycode 174 = XF86AudioLowerVolume

然后重启X,就两边都正常了,娃哈哈…

升级了ubuntu后,gentoo的gnome启动不了问题

昨天,刚把ubuntu升级成了8.10,就一整天用的都是ubuntu,也觉得挺好的.
今天又想用gentoo了,把menu.lst恢复(一早就知道ubuntu会覆盖这文件的,所以早有准备)以后,启动到也正常.到了gdm,输完用户名和密码以后,傻住了,splash都没出来…
到tty1下面看了一下 .xsession-errors 文件,发现在启动什么seahorse组件的时候,报没有 libgail-gnome ,可能是ubuntu下的gnome更新以后,多启动的东西吧,但是这东西gentoo下还没安装,于是马上eix了一下,gentoo下也有现成的包,emerge了一个,就又正常了~
所以遇到问题,多看看日志输出,还是很有好处的…

谁启动了我的eth0

我的gentoo系统,之前一直存在着一个小问题: 系统启动的时候,都会去尝试启动eth0,然后尝试去DHCP,即使网口根本没插网线也是如此,于是乎这时候DHCP就肯定不成功了,每次都等个10多秒钟,超时了,才能继续后续步骤.结果启动过程就无缘无故地多了10多妙,嘿嘿.
也看过rc-update的结果,也没有多出什么东西来.那是谁启动了我的eth0呢?
后来在irc上问了wd老兄,终于知道了,这个是openrc启动的,而且貌似和udev有关系.
解决方法就是在 /etc/rc.conf 里面的rc_plug_services一项修改为:
rc_plug_services=”!net.eth* !net.wlan*”
这样就不在启动的时候初始化我的网络了,而是到了登录gnome以后,由我的NetworkManager来选择连到什么网络,哈哈,这才是我需要的.
另外, /etc/rc.conf 里面还有一项比较有意思的,就是 rc_parallel=”YES” 可以开启并行启动特性,理论上也可以提高一点启动速度.做完这些后,我的本本从grub到gdm可以输用户名,大概是25s.不是很快,内核里面应该还有一些可以优化的,呵呵.

nautilus徽标研究

不知道广大gnome用户会不会经常用到nautilus的徽标功能.反正我是经常用徽标来表示某些文件的状态的,比如,经常下电影看,看过了要刻盘这么一件事.我会在下载电影前就建个目录,电影下好了,字幕什么的都调好了,就放个标记,说明可以看了,然后看完了,觉得有刻盘价值的也给个标记,不然就直接删了.等要刻盘的内容到了一张DVD的容量的时候,就会刻盘,然后再给个已经刻盘的标记,下次空间不够,就优先删了这些已经刻过的.
本来在ubuntu下,这样用一直好好的,但是由于最近转到gentoo,把用户目录挂过来以后,就发现不对了,一些文件原来有两个标记的,现在只有1个了.分析下原因,既然那个徽标能显示出来,那就说明gentoo的nautilus肯定支持徽标(废话),并且数据也是和ubuntu存在同一个地方的.那还有一个显示不出来,就肯定是gentoo支持的徽标种类和ubuntu的不一样,所以解决的思路就是找到这些徽标是放在哪里的,然后把ubuntu的和gentoo的同步一下.
于是我就找啊找啊,终于找到了这些图标原来藏在 /usr/share/icons/gnome/*/emblems 下面,而且我那个显示不出来的那个图标就是 /usr/share/icons/gnome/48×48/emblems/emblem-certified.png 同时还有一个 /usr/share/icons/gnome/48×48/emblems/emblem-certified.icon 文件,里面存的是各种语言的名称.
所以,解决方法就是把那两个文件复制到gentoo的相应目录,但是后来又发现gentoo下是没有 /usr/share/icons/gnome/48×48/emblems 这个没目录的,你可以自己建立此目录并且在 /usr/share/icons/gnome/index.theme 文件里面加入加入目录信息或者像我一样偷下懒,把文件放入 /usr/share/icons/gnome/scalable/emblems 目录下,虽然那png文件不是矢量的,但是事实证明不影响使用.
放好文件以后,如果不想重启的话,可以执行 sudo gtk-update-icon-cache /usr/share/icons/gnome 刷新图标缓存.然后到nautilus里面去看看,消失的徽标又回来了,哈哈.

PS1:文件也可以放入 ~/.icons/hicolor/48×48/emblems 这样的目录下,或者直接在nautilus的 编辑-背景和徽标 里面添加,但是这里居然只能添加不能删除….
PS2:哪个文件用了那些徽标的数据,在 ~/.nautilus/metafiles 目录下的,已加徽标文件的父目录对应的xml文件内.

read-edid这个包出错了

要emerge个lm_sensors,依赖了x11-misc/read-edid-1.4.1-r1这个包,而且编译当中出了点错,装不上了.

i686-pc-linux-gnu-gcc -O2 -march=pentium-m -pipe -fomit-frame-pointer -Wl,-O1 -o parse-edid parse-edid.o
lrmi.c: 在函数‘set_regs’中:
lrmi.c:305: 错误:‘IF_MASK’未声明(在此函数内第一次使用)
lrmi.c:305: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
lrmi.c:305: 错误:所在的函数内也只报告一次。)
lrmi.c:305: 错误:‘IOPL_MASK’未声明(在此函数内第一次使用)

这样一大串,我就不解了,后来在gentoo的bugs里面找到了这个bug,希望能早点解决,哈哈.
流水帐记录之.

gentoo下的gnome-osd

ubuntu论坛里有个可用性已经不错的歌词脚本,如果用上gnome-osd显示,效果很好的,昨天想在gentoo下试试,结果发现gentoo下根本就没有这个包,汗了,这个应该是gnome组件里面的一部分啊,怎么会没有呢?
于是到overlay里面找,发现了这个,下载了ebuild文件,安装,但是configure的时候就失败了,理由是找不到python2.4和2.3,心想这一定是个比较老的ebuild的,那时候应该还没有python2.5,于是想花点时间修改configure脚本算了,倒也是修改好了,也安装上了,但是gnome-osd-client的时候,却又是一堆错误,而且一看就知道是python的错误.才发现这个代码确实是不兼容python2.5的.
但是回头想想,ubuntu里面的python不也是2.5的嘛,于是肯定只有一个可能,就是这个源码包不是最新的,从那个ebuild的源码包顺藤摸瓜,终于找到了最新的下载地址,于是顺手改了下ebuild的文件,不知道有没有可能放进gentoo-china的overlay呢?

解决了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脚本又可以用了~~

也用上2.6.27的内核了

话说这gentoo的更新还真够快的,前几天才发布的2.6.27正式版内核,今天就进了portage.于是就编译,用上了.
没有什么大问题,因为之前的ipw3945和alsa-drivers都是另外安装的,而这次我决定把他们都弄到内核里面,这样就不用在每次换内核以后,都重新安装那几个包了.也因此,内核也增长到了2.5M以上,呵呵.
重启以后,发现alsa的声音没有任何问题,至于无线,iwconfig里面能看到,设备由原来的 eth1 变成了 wlan0.但是 ifconfig里面缺没有了,而且 ifconfig wlan0 up 居然提示:”SIOCSIFFLAGS: 没有那个文件或目录”.irc问了一下,说是由于缺少firmware,而且 dmesg 里面会有一堆这样的信息:

firmware: requesting iwlwifi-3945-1.ucode
iwl3945: iwlwifi-3945-1.ucode firmware file req failed: Reason -2
iwl3945: Could not read microcode: -2

解决方法就是安装这个包: iwl3945-ucode 装完之后 ifconfig wlan0 up就正常了,哈哈.
这下可以把这些包都卸载了: net-wireless/ipw3945 net-wireless/ipw3945d media-sound/alsa-driver

gentoo下的bash-completion

基本上就是 emerge bash-completion ,然后安装提示,在 ~/.bashrc 里面加上一行 [[ -f /etc/profile.d/bash-completion ]] && source /etc/profile.d/bash-completion
然后就搞定了,因为我的 /home 是和ubuntu共用的,所以稍微修改了一下,两个系统不同部分这样处理了,如下:

if echo “`uname -a`” | grep gentoo >/dev/null ; then
[[ -f /etc/profile.d/bash-completion ]] && source /etc/profile.d/bash-completion
alias au=’sudo emerge –sync && sudo emerge -avuDN world’
alias ai=’sudo emerge -av’
alias ar=’sudo emerge -av –unmerge’
alias as=’eix’
else
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
alias au=’sudo apt-get update && sudo apt-get upgrade’
alias ai=’sudo apt-get install’
alias ar=’sudo apt-get remove –purge’
alias as=’apt-cache search –names-only’
alias aw=’aptitude show’
fi

还有一点点小问题,就是我的系统(wd的也是)里面 source /etc/bash_completion 以后, echo $? 看到的是1,但是oceanboo的就是0,而且文件的md5sum都是一样的.这问题貌似不怎么影响使用,就是有点不解而已.
另外,bash-completion的更详细用法可以参见这里

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 里面改。