Skip navigation.

火与冰--alva's blog

胸有激雷,面如平湖

Posts tagged with "gentoo-linux"

拯救了我的gentoo

在实验室里面呆了一段时间,也不能上网,前两天搬回宿舍,发现有好大一堆软件需要升级还有需要新安装的。忘了安装什么软件,pam-loin由于依赖关系被卸载了,但是却不知道这会造成问题。重启了之后就再也登录不了了,输入了用户名之后,等几秒钟又提示输用户名。从来没有遇到过这个情况,一下子懵了。用google搜"gentoo cann't login"的关键字,才知道是pam-login被删除,shadow没有被升级的原因。这只影响本地机的登录,不影响sshd的登录。但是我没有开sshd。不过用gentoo的liveCD就chroot过去就可以解决了。
先挂在根分区,比如是/dev/hda1
mount -t ext3 /dev/hda1 /mnt/gentoo

再挂载proc
mount -t proc proc /mnt/gentoo/proc

chroot
chroot /mnt/gentoo /bin/bash

如果/usr分区是分开的,那么也要挂载,比如我的。
mount -t ext3 /dev/hda6 /usr

更新一下环境变量
env-update && source /etc/profile

接着就开始按照正常的情况emerge更新软件吧
emerge shadow

完了之后重启就应该没有问题了。

需要自动挂载的工具吗?

在linux下有两种磁盘自动挂载工具可用,用gnome的,一般会选择gnome-volume-manager,其他系统的用户会用ivman,说实在的如果你用gnome的话,那么gnome-volume-manager无可挑剔,它和gnome和Nautilus配合的提供的功能非常的人性化,插入U盘,就会自动检测到,并且挂载,弹出文件夹。ivman也不错,但是需要一些设置。这些我都嫌麻烦,它们至少要运行几个daemon,dbus,hald,对于我这样的U盘次数用得不是很多的,其实很多人都用得不多。如果不用gnome,那么没有必要自己再搞一个,ivman个人觉得挺麻烦的,root用户运行,还是普通用户运行都不太好搞,所以我放弃它们了。今天准备用一下它们,是因为我的U盘从/dev/sda1上挂载不了,后来偶然发现我的U盘居然是/dev/sda这个设备,真是奇怪,没有见过这样的。所以能用命令挂载了,我想我就不需要它,我犯不着为了一个并不经常用的设备,来启动n个Daemon。如果我不是在启动时让它自动启动,那么到用时来启动比我用mount命令不会少。
mount -t vfat -o iocharset=cp936 /dev/sda
#仅我的U盘是这样的,其他人的是/dev/sda1

另外对于我这样的Fvwm,Rox用户其实可以让Fvwm,或者Rox来做。当点需要挂载到的文件夹时,Rox会自动挂载,退出时会提示是否卸载。而Fvwm就可以做一个按钮来实现上面的命令了。其实最好是在/etc/fstab里面加上一行,以后挂载就更方便了,这样也方便在Rox中来用。
 /dev/sda                /mnt/usb        vfat            noauto,noatime,rw,iocharset=cp936,user,umask=002  

那么以后只需要
mount /mnt/usb

就可以了。
我想对于非gnome用户,自动挂载工具是不太必要的,如果你坚持的话,那么随意,呵呵。

用utf-8码有什么好处? 我觉得没有好处,所以我换回来了

最开始系统的locale是gb2312,但是后来看到各个发型版本都是用utf-8,并且gentoo的文档也有utf-8的指南,并且rox老提示说中文的文件名为非法的utf-8字符,所以就换了。但是经过一段时间的使用,我觉得zh_CN.UTF-8,对于我来说非但没有好处,反而给我带来诸多不变。
第一,用utf-8,latex不方便,latex想要用cjk只能是gb2312编码tex源文件,虽然cjk-unicode可以用,但是在gentoo上emerge不成功。
第二,abiword在zh_CN.UTF-8码上工作,输出的其他格式的文件,除了PDF都是乱码,即使是在abiword内复制文字都是乱码。它输出的其他格式它自己再读入时也是乱码。
第三,windows的简体中文文件的默认编码是gb2312,如果文件与windows交换时,某些不识别UTF-8码编辑器打开是乱码。
不用utf-8码,并没有给我带来任何的不方便,至少现在还没有遇到,所以就决定要回来用GB2312的locale了。对没错,就这个。改回来时要觉得把gvim设置中的encoding=utf-8去掉,否则gvim菜单都不能显示,gtk会提示出错。
------另外,我现在非常满意我的系统,我觉得漂亮,迅速,干净,我主要用基于gtk的软件,使用fvwm窗口管理器,完全用gtk2的程序。下面是我的常用的主要软件列表:fvwm,Rox,fvwm-crystal,conky,audcious(取代xmms),gxine(取代mplayer),firefox,Thunderbird,opera,gftp,Eclipse,Gvim,Abiword,stardict,gqview,Xpdf,AcroReader,URxvt,Gimp,Dia,LumaQQ

gentoo中gftp的依赖有点问题

我的系统中是mask了gtk1,今天准备重新emerge一下gftp,说依赖于glib1,觉得不可能,看了一下gftp的ebuild,发现它写得有点问题。所以必须在USE中指明了gtk和gtk2(默认的)才可以基于gtk2进行编译,但是系统中gtk往往就默认为gtk1,很多人会在USE中写明了不要gtk。

从gkrellm转到conky

毫无疑问,gkrellm是一个很好的东西,它耗用系统资源少,配置方便,并且可以运行Daemon用于远程监视系统状态,它可以在计算机上运行多个实例,比如很多人就运行两个,一个用于显示本机状况,一个用于关注自己所要管理的远程的linux服务器的状态。但是在我的应用中有几个不好的地方:配置方便,但是却配置不够灵活,我想加上自己定义的文字不方便,所以文字偏小,还有显示的效果欠佳,我应用的一个透明的主题,显示的字符是模糊的。布局也不能随心所欲。还有就是我力图使我的系统完全工作在GTk2的环境中,但是在gentoo中gkrellm的依赖是错误的,它实际上依赖的是gtk2,但是却在ebuild中写了依赖于gtk1,这就造成了的不方便。现在的conky在gentoo是正式稳定的了,所以在gentoo用conky非常的方便,conky的配置很灵活,并且很方便。

gentoo-sources-2.6.15-r1的问题

gentoo2006.0默认的内核是gentoo-sources-2.6.15-r1,但是经过多次的测试我觉得这个内核是有点问题的,它的initrd有问题,在做fbsplash的时候,一样的配置,但是在这个内核中不能很快的载入initrd中的splash,要等到差不多挂载分区的时候才可以。但是2.6.14.x没有这个问题,我现在用的gentoo-sources-2.6.15-r7也没有问题。今天重新编译了,其实这也是个人爱好,无关紧要,我不喜欢那么久才出来图形的控制台。并且尝试了一下把splashutils编译进内核,测试结果发现和用initrd相比速度几乎没有提高。现在大概一秒时间就可以完成内核解压缩启动到splash了。

xorg7安装成功

,

上次没有安装成功,到xorg-server就编译出错了。一直想要用一下blender,但是不知道为什么xorg的glx一直出错,所以不能用。今天突然想要再装一下,因为看到论坛上很多人都安装成功了,决心有一个干净的环境。所以删除了xorg-x11-6.8.2只有,把/etc/X11 /usr/lib/xorg都删掉了。然后让机器在这里编译,自己下去修车了。大概一个多小时回来,居然安装成功了。以前的xorg.conf不能用了,生成一个之后,对照老的xorg.conf改了一下,还是提示说不能载入nvidia成功。所以试着吧nvidia-kernel和nvidia-glx都重新emerge了,这一次,居然都好了。glx没有问题了,哈哈,可以启动blender了,但是呵呵,不会用,没有用过,有时间来学一下。现在有了xorg7了,有时间再来尝试一下xgl,其实分成这么多小包来装,觉得好处还是多余坏处了,毕竟都是向前发展的。最后,向所有的开放源代码软件开发者维护者致敬!特别是我最心爱的gentoo的开发团队!

gvim等沉冤得雪,系统完全的从gtk1迁移到了gtk2

发现自己差点冤枉gvim了,把系统上的gtk1去掉了,给use参数加上了-gtk的参数,所以编译出来的gvim界面丑得要命,我本来都打算以后不要gvim了,直接在终端里用vim好了,但是我明明记得,原来我的gvim的界面可以随着我gtkrc-2.0的设置而变啊。所以我怀疑gvim的编译参数搞错了。所以
USE="gtk" emerge -pv gvim 

没有发现对glib1的依赖,于是大胆的加上USE="gtk"编译了gvim,结果得到了pp的gvim。
另外还有个依赖是错的,就是gkrellm,它的ebuild写的是依赖gtk1,但是实际上却不是,所以不要管它的依赖关系直接装gkrellm好了
emerge --nodeps gkrellm

当然前提是其他的除了glib1以外的依赖已经装了。
再有就是更新tck到最新版本之后,python也可以带上tcktk编译,那么idle也能用了。
现在我的系统都是pp的gtk2了!!高兴!!
其他的一些常用的gtk2的程序取代gtk1的:
音乐播放,取代xmms,用audacious,基于beep-media-player和xmms的播放器,因为beep-media-player已经停止开发了,至少beep-media-player在gentoo里就因为upstream的原因被mask了。audaciouse和beep-media-player很象,并且兼容它们的皮肤。而且它依赖的东西很少,就一个包。它的设置选项跟beep-media-player基本一样的,但是比xmms的简单多了,只要设定了标题编码utf8码转换,也没有所谓的中文问题。可能象我这样应用fvwm或者fvwm-crystal的人,需要改动fvwm的脚本来适应这种变化,或者fvwm-crystal的有些功能根本用不上了。下面介绍一个简单的暂时的方案,因为audacious是基于xmms和beep-media-player的,所以我比较了xmms和audacious的命令,发现它们的基本操作命令是一致的,所以只要在/usr/bin里建立一个链接到audacious的xmms符号链接就可以了。
cd /usr/bin
ln -s audacious xmms

这样不会牺牲你什么功能,但是可以给你一个美观的界面,并且省掉你解决中文问题的时间。
电影播放,取代mplayer,mplayer就真没有冤枉它,它确实是基于gtk1的,不过现在正在向gtk2发展,如果你用gnome,那么totem很不错,至少我用那台装了ubuntu的工作站觉得很不错,不用象装mplayer时为了放rmvb的,而格外装一个realplayer,totem都一把搞定了(据说mplayer配置一下能播rmvb,但是没有试过,懒得搞)。对于非gnome用户,装totem太奢侈了,依赖了10多个gnome的包,如果你还用好多gnome的软件还差不多,但是象我这种当初因为stardict依赖的gnome包太多还犹豫装不装stardict的人,gxine是很不错的选择,在gentoo上是叫gxine,带有基于gtk2的xine前端。
再多说一点:
gentoo用户的编译选项,win32codecs默认是关闭,这一点可以用
emerge -pv xine-lib

可以看到,你需要打开win32codecs这个选项,进行编译。
USE="win32codecs" emerge xine-lib

并且根据需要,还可以根据你的需要打开asf,dvd等等编译选项。这样编译出来的xine-lib就可以使用那些编码器了。编译完成之后,需要在对应的配置文件中改变配置文件,如果你用的是xine或者xine-ui的前端,那么配置文件是~/.xine/config;你用的gxine那么配置文件在~/.gxine/config,其他的前端类似。注意到配置文件中有这样的几行;
# path to RealPlayer codecs
# string, default: /usr/lib/codecs
decoder.external.real_codecs_path:/usr/lib/codecs
 
# path to Win32 codecs
# string, default: /usr/lib/win32
# decoder.external.win32_codecs_path:/usr/lib/win32

下载的解码器就解压缩放到了/usr/lib/codecs中
如果有了all*那个包中的编码器,无论是利用mplayer还是xine都可以当成一个全能的播放器。我不喜欢mplayer是因为它基于gtk1。有人说mplayer的性能要更好一点,这一点我感觉不出来,并且它们没有在我机器上同时存在过。xine有很多的前端,比如totem也是其中只一。你可以根据你当前的环境选择合适的图形前端,如果你用gnome,那么建议用totem,个人觉得totem很不错。而如果象我这样只用了一个fvwm的,而主要用的是gtk2程序的,那么gxine很合适你,在gentoo上它只依赖三个包,不象totem依赖很多gnome的软件包,并且gxine-0.5.x支持简体中文。

重新整理了自己的系统

这两天没有上网是我把自己的x搞坏了,因为升级了gcc到3.4.5,同时有改变了CHOST,所以为了安全,所以重新编译了整个系统,这个过程是极其痛苦的,第一天重新编译了system,将近10个小时,这还好,第二天要编译world,因为学校每晚11点熄灯,所以从早上六点起来开始编译,到了晚上11点也没有编译完,于是这个emerge -e world的命令等于是白费了。所以从昨天开始,就开始走一步看一步,接着后面的手工编译。也并不是需要编译整个系统,我先把gcc-3.3.6删除了,如果那个软件不能工作,我就编译哪一个,所以到现在也不是很清楚完不完整,反正现在是系统基本都好了。在编译完xorg之后,不能用nvidia的驱动,framebuffer也搞不出来,突然看到gentoo的guide上面有一个装modular x的指南,想着顺便装上xorg7好了,并且也意识到内核中的nvidia framebuffer support的选项是个nvidia的驱动有冲突的。改成模块的xorg,或者升级什么的也不是那么痛苦,因为xorg从此以后分成了将近300个软件包。按照它的步骤,把xorg-6.8.2打成包备份了。但是装到最后了,xorg-server死活都编译不成功,只好放弃,也就开始了删除已经装上的上百个包的过程,还好,这些软件包本来都是被mask的,所以把那些软件包列表复制到一个文本文件了,利用sed也没有费什么工夫,一条命令搞定了。
emerge -C $(sed '/^[[:blank:]]*#/d' /tmp/xorg7.mask)

去掉了nvidia framebuffer support的内核gensplash也成功了,后来才搞明白就是那个选项的原因,我原理以为选上这个对bootsplash更好了,因为是framebuffer嘛,反而让自己搞得头痛,编译内核现在应该挺熟了才对,但是一时的兴致,却让我困在了640x480的黑屏幕下。也是这个原因,我一只用着老的2.6.14-r5的内核,gentoo升级之后没有换到新内核的原因也就是搞不出bootsplash。认真比较了老内核的配置文件和导致自己失败的配置文件之后,才意识到这是唯一的不同。有的时候自己越有自信的事情,却反而弄不好了,真是奇怪。
随着自己对gentoo的了解,它越来越听我的话,自己原来越喜欢gentoo了,于是决定就花这两天时间完晚整整的整理这个系统,把gtk1去掉,以后全部是gtk+2的程序了,原来一直让我头痛的stardict的软件依赖,到了2.4.6版之后居然全部没有了,原来依赖gnome的太多太多,我只需要一个stardict,居然要装10多个gnome的软件包,有点不可接受。今天猜想是否新的版本的stardict好了呢,遂把stardict加入了package.keywords,让我惊喜的是,只有stardict一个了!高兴!
December 2009
S M T W T F S
November 2009January 2010
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