分类: '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
打开此文件一看,就明白了,有这么一段:
|
1 2 3 4 5 6 |
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的显示
老套路,贴代码和截图:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
#!/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 ,代码如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#!/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 {} \;
好了~万事大吉~~嘿嘿.