分类: 'gentoo' 的归档
终于用上了9.1的官方A卡驱动
经过好几天的折磨(详情可以看这里),总算成功用上了新的A卡驱动。
之前一直是用的8.552的驱动,可以开compiz,但是mplayer用xv不行,开个 googleearth也闪得厉害。
也曾经升级到 8.561 ,就已经发现了问题,当时是开了gdm的,开机以后,出来gdm的界面,但是都来不及输入用户名和密码就黑掉了,过一会儿又会显示gdm,又挂掉,如此反复,6次以后会出来提示说挂了6次,不启动了。那时候觉得 8.561和8.552差不多,就mask了8.561的版本,回退到8.552了,也正常了。
但是最近这个8.573据说是解决了闪的问题,更新蛮大的,所以又想升级,但是还是和8.561一样的错误,一到gdm就崩溃。连续重启动。
然后经过千辛万苦,终于发现是 /etc/X11/xorg.conf 的 Section “Device” 一段里面的 Option “TexturedXRender” “on” 引起的错误。把这行注释以后,就整个都好了。哈哈。但是说来也怪,这个配置文件是ubuntu生成的,在ubuntu下运行没问题,在gentoo的8.552版本驱动下也没问题的啊。。。
还有,就是为什么我开了compiz以后,google-earth还是会闪呢?貌似没有多大的提高啊。。。谁能告诉我还需要如何配置吗?
取消电源按键的事件处理
之前的现象是在gnome-power-preferences里面,设置了”按下电源按钮时:”为”询问”.但是其实真的按下电源按钮的时候,gnome-power-manager的对话框确实出现了,但是根本来不及点,一闪而过的就关机了…
后来,TX告诉我是acpi搞的鬼,处理方法就是修改下 /etc/acpi/default.sh
打开此文件一看,就明白了,有这么一段:
case "$group" in button) case "$action" in power) /sbin/init 0 ;; |
直接把 /sbin/init 0 那行注释掉,就好了,哈哈…
gnome-do 初体验
gnome-do最近的更新可谓热火朝天,而且最近搞出了个docky模式,貌似很好玩,使我的心里一直痒痒的.
但苦于这玩意是依赖mono的,之前一直不想装那么多包,所以一直没尝试.但是今天装一个以前ubuntu下用过的16进制编辑器Bless的时候,发现这个也是基于mono的,加上之前的tomboy,我不得不承认基于mono的软件还是挺多的,于是终于一股脑把这些都装上了,哈哈,系统里多了mono和一堆dev-dotnet的包.然后终于尝试到了gnome-do.
我的gnome-do是目前最新的0.7.98.启动以后,默认是经典样式的,在首选项里面可以改成docky模式.还是蛮好玩的,先上个图:
第一印象就是这个东西的美工真不错,说实话linux下很多软件的美工都不怎么样,但这个是例外,呵呵.
另外,在可用性上,还有很大的提升空间.super+space出来搜索界面以后,我输入”gnome-ter”都还不能出来”gnome-termial”,后来才知道,原来在中文环境下,要输入”终端”才能执行,那就汗了,我的fcitx在搜索窗口根本无效…而且这个关键字还不能自己定义,这样对中文用户来说,可用性就大打折扣了.
还有就是从panel拖启动器到dock的时候,有的图标会丢失,显示一个华丽的叉叉,哈哈.而且也不能自定义启动器的图标.
另外给个警示,但愿是我RP差的原因,我第一次启动gnome-do的时候,在首选项里面 勾了那个 “show notification icon”,然后画面就冻结了…除了鼠标能动,ctrl+alt+backspace都不能用了,还得我alt+printscreen+b才了事.但是后来又无法重现此问题…
更新 e-file 到 20081230
更新 e-file 到 20081230 版本
没有其他的该动,只是判断了一下运行脚本的机器是否为gentoo。
如果不是,会有一行警告,其实基本的功能也还是可以用的,当然安装状态之类的肯定就查不到了。
下载地址
glibc 升级以后,locale-gen 出现段错误
今早升级了 glibc ,etc-update 的时候 /etc/locale.gen 保留了原来的,然后 locale-gen 的时候就
/usr/sbin/locale-gen: line 264: 7515 Segmentation fault “${DESTDIR}”usr/bin/localedef ${LOCALEDEF_OPTS} -i “${input}” -f “${charmap}” -A “${ALIAS}” –prefix “${DESTDIR}” “${locale}” [ !! ]
已知 locale-gen 是调用 localedef 的,如下:
# /usr/bin/localedef -c -i en_US -f UTF-8 -A /usr/share/locale/locale.alias –prefix / en_US.UTF-8
Segmentation fault
而这个 /usr/bin/localedef 就是glibc里面的文件,大家有没有相同问题的?
另外,发现glibc 有这个 patch:1040_all_2.3.3-localedef-fix-trampoline.patch 删掉它也是一样的错。
目前临时的解决办法,是从别人那里拷贝一个同版本的二进制文件,替换掉自己的 /usr/bin/localedef ,然后locale-gen就好用了,系统也正常了,但是这样问题的原因仍然没有找出来.在 sir的gentoo版发了个帖子,看看能不能找到原因.
e-file 更新至 20081201
很多人反映不喜欢e-file依赖w3m,原因可能是觉得w3m多少有点大,其实我倒是觉得w3m蛮小巧实用的,但是对于一个百来行的脚本来说,依赖个w3m可能确实有点不太合适吧.于是一直想改成依赖curl,因为这个应该默认都有安装.
而且,Daniel老兄(我猜应该是 portagefilelist.de 的人)告诉我,portagefilelist.de 其实是支持 csv 格式输出的,这样对于我的脚本来说,简直是件天大的好事,因为省去了解析烦人的HTML了,哈哈.
于是很快就改好了新的e-file,目前已经更新至gentoo china overlay.
ChangeLog:
20081201:
去掉了w3m的依赖.
代码太长了,贴起来有些难看,呵呵.就不多此一举了,这里的代码应该马上也会更新: http://www.portagefilelist.de/index.php/Tools#e-file_.28serach_from_cmd_line.29
更新了e-file
之前发布的e-file,看起来好像还是挺受欢迎的,没多久,就有人给写了ebuild文件,进了gentoo-china overlay.于是打算再稍微完善一下.
周末去了趟上海,也没空更新这个脚本,拖到今天,终于弄好了,呵呵.
ChangeLog:
20081125:
优化代码结构
增加本地已安装版本的显示
增加Homepage和Description的显示
老套路,贴代码和截图:
#!/bin/sh #AUTHOR: bones7456 (bones7456<at>gmail<dot>com) ##License: GPL #e-file is like apt-file for gentoo, but data is online VERSION=20081125 function printhelp(){ cat <<EOF This is e-file ($VERSION) Usage: `basename $0` filename EOF } if [[ $# -ne 1 ]];then printhelp exit 1 fi URL="http://www.portagefilelist.de/index.php/Special:PFLQuery2?file=$1&searchfile=lookup&lookup=file#result" w3m -dump -cols 3000 $URL | awk ' BEGIN{ FLAG=0 FOUND=0 "emerge --info | grep PORTDIR" | getline split($0,PORTDIR,/\"/) } { if($1=="dir" && $2=="package"){ FLAG=1 next } if($1=="Retrieved" && $2=="from"){ if(FOUND){ for(pkg in vers){ split(pkg,ii,/\//) NF=0 cmd="ls -tgGd --time-style=+%c /var/db/pkg/" pkg "* 2>/dev/null" cmd | getline if(NF==0){ installed=0 }else{ installed=1 install_time="" for(i=4;i<NF;i++)install_time=install_time " " $i install_time=substr(install_time,2) split($NF,install_arr,pkg "-") } NF=0 cmd="(grep -h HOMEPAGE " PORTDIR[2] "/" pkg "/*.ebuild | tail -n 1)2>/dev/null" cmd | getline if(NF==0){ HOMEPAGE="" }else{ split($0,tempArr,/\"/) HOMEPAGE=tempArr[2] } NF=0 cmd="(grep -h DESCRIPTION " PORTDIR[2] "/" pkg "/*.ebuild | tail -n 1)2>/dev/null" cmd | getline if(NF==0){ DESCRIPTION="" }else{ split($0,tempArr,/\"/) DESCRIPTION=tempArr[2] } setcolor(1,32) if(installed){ printf("[I] ") }else{ printf(" * ") } clearcolor() printf("%s/",ii[1]) setcolor(1,29) printf("%s\n",ii[2]) setcolor(0,32) printf("\tAvailable Versions:\t%s\n",vers[pkg]) if(installed){ printf("\tLast Installed Ver:\t") setcolor(7,34) printf("%s",install_arr[2]) setcolor(0,35) printf("(%s)\n",install_time) setcolor(0,32) } if(HOMEPAGE){ printf("\tHomepage:\t\t") clearcolor() printf("%s\n",HOMEPAGE) setcolor(0,32) } if(DESCRIPTION){ printf("\tDescription:\t\t") clearcolor() printf("%s\n",DESCRIPTION) setcolor(0,32) } printf("\tMatched Files:\t\t") clearcolor() printf("%s\n\n",files[pkg]) } }else{ print "No matches found." } exit } if(FLAG==1 && NF!=0){ T=1 split(vers[$1 "/" $2],vers_arr,/ /) for(i in vers_arr){ if(vers_arr[i]==$NF){ T=0 break } } if(T)vers[$1 "/" $2]=$NF " " vers[$1 "/" $2] T=1 split(files[$1 "/" $2],files_arr,/; /) for(i in files_arr){ if(files_arr[i]==($3 "/" $4)){ T=0 break } } if(T)files[$1 "/" $2]=$3 "/" $4 "; " files[$1 "/" $2] FOUND=1 } } function setcolor(a,b){ printf("%c[%d;%d;%dm",27,2,a,b) } function clearcolor(){ printf("%c[0m",27) } ' |
从图中看到的,其实 portagefilelist.de 的数据也是比较旧的,sys-process/dcron的版本还停留在 2.9 的年代,而本地安装的,早已经是 3.2 了.
脚本下载地址
重新用回官方A卡驱动
我的x1700卡,之前一直因为ati-drivers暂时不支持xorg-server,所以用的是开源驱动,但是开源驱动对我这个卡的支持真的是比较烂,没有3D加速,开不了compiz,glxgears也只有100FPS左右…所以之前一段时间,我还是经常回ubuntu下去,不知道ubuntu从哪里来的驱动,8.10的xorg-server也是1.5.2的,但是驱动却可以用…呵呵.
前几天,AMD官方终于更新了驱动的版本,而这个版本的一大重要特性就是开始支持xorg-server的新版本了,现在gentoo的portage里面也有了,所以我就理所当然得用回官方驱动了.
用回ati-drivers以后,一开始也有点问题,但是参考wiki,基本上就搞定了,哈哈,gentoo终于又可以compiz喽.
$ glxgears
12412 frames in 5.0 seconds = 2482.345 FPS
12551 frames in 5.0 seconds = 2509.578 FPS
这个也正常了.
e-file 根据文件名查询gentoo包的脚本
一直想在gentoo下实现一个类似ubuntu的apt-file的功能,幸好已经有 http://www.portagefilelist.de 这个网站了,就花了2小时写了个小脚本直接到这个站取数据了,感觉效果还可以,先发出来,算是预览版吧,以后会再完善的.
输出格式参考了 eix ,代码如下:
#!/bin/sh #AUTHOR: bones7456 (bones7456<at>gmail<dot>com) #VERSION: 20081120 ##License: GPL #e-file is like apt-file for gentoo, but data is online if [[ $# -ne 1 ]];then echo "Usage: `basename $0` filename" exit 1 fi URL="http://www.portagefilelist.de/index.php/Special:PFLQuery2?file=$1&searchfile=lookup&lookup=file#result" w3m -dump -cols 3000 $URL | awk ' BEGIN{ FLAG=0 FOUND=0 } { if($1=="dir" && $2=="package"){ FLAG=1 next } if($1=="Retrieved" && $2=="from"){ if(FOUND){ for(i in ver){ split(i,ii,/\//) printf("%c[%d;%d;%dm* ",27,2,0,32) printf("%c[0m%s/",27,ii[1]) printf("%c[%d;%d;%dm%s\n",27,2,1,29,ii[2]) printf("%c[%d;%d;%dm\t",27,2,0,32) printf("Available versions:\t%s\n",ver[i]) printf("\tMatched File:\t\t") printf("%c[0m",27) printf("%s\n\n",file[i]) } }else{ print "No matches found." } exit } if(FLAG==1 && NF!=0){ ver[$1 "/" $2]=$NF " " ver[$1 "/" $2] file[$1 "/" $2]=$3 "/" $4 FOUND=1 } }' |
截个图:
脚本下载地址
修改了gentoo的组ID
由于我的/home分区是ubuntu和gentoo公用的,这样不管在哪个系统,都能很方便地公用程序的配置.但却又引发了一个小问题:
ubuntu下 我的用户是 uid=1000,gid=1000的,gentoo下,1000这个gid却被dhcp组占用了,生成的用户组id是1004.
这样就出现了一个怪现象,原来在ubuntu下,用户创建的文件,到了gentoo下,就被当初了dhcp组;gentoo下创建的文件在ubuntu下又是无法识别的组了.由于机器上只有一个用户,所以虽然此问题并没有给我带来什么麻烦,但总归是个隐患.于是想修正它,其实方法也很简单:
就是在ubuntu下,把gentoo根分区挂到 /mnt/gentoo ,然后
sudo vim /mnt/gentoo/etc/group
把里面的1004改成1000,1000改成1004,保存退出.
sudo vim /mnt/gentoo/etc/passwd
把里面的 lily:x:1000:1004::/home/lily:/bin/bash 改成 lily:x:1000:1000::/home/lily:/bin/bash
再执行:
sudo find /home/ -gid 1004 -exec chgrp -h 1000 {} \;
sudo find /mnt/gentoo -gid 1000 -exec chgrp -h 1004 {} \;
好了~万事大吉~~嘿嘿.