TIP On Problem Solving
出自Gentoo Linux Wiki
注意: 此页面未完成,你也可以开始编辑,帮忙完成
本文是为刚开始使用Gentoo, 还不了解如何处理系统的错误的 新手 所写,对其它发行版也有一定的参考价值。
目录 |
[编辑] 实体篇(一)
当我们安装系统或升级过程遇到问题的时候,第一个要想清楚的是从何入手。本篇主要介绍可能产生错误的地方和其他可以提供排错信息的地方。
[编辑] 一、文档
Gentoo的文档的主要来源有官方的 Gentoo官方文档 和非官方的 Gentoo维基 。现在还有中文版的 Gentoo中国 和 Gentoo中文维基 。Gentoo的文档是公认的种类齐全,品质优良,提供了对使用中出现的绝大部分问题的解决方法。
有句老话:尽信书不如无书。在使用文档的时候,我们要时刻想到:写文档的人的系统环境可能跟你不一样;写这文档的时候,软件包版本可能跟你不一样。文档可能过时,且并非总是正确的。
[编辑] 二、使用者
使用者指的就是安装和使用Gentoo的人。所我遇到的问题来看,大约有70%的问题是由使用者自身的原因引起的。比如使用不谨慎,安全意识不够等等。
我把使用者放到这里是为了说明,当遇到问题的时候,不要总是怪别人,静下心来,想想自己做过什么,也许就是你不经意的一个命令,导致了问题的发生。
[编辑] 三、portage
在每时每刻有可能有新的ebuild加入,也会有老的ebuild移出portage,维护portage是件困难的事,因为其中涉及到许多软件之间、软件和库之间的错综复杂的依赖关系。我们敬仰ebuild开发者,因为有他们替我们做了这么多的工作,才会有现在这样一个完整的、统一的portage供我们使用。同时我们也该认识到,他们也是人,他们也会出错,这是我们应该容许的。
所以当你升级中遇问题时,请不要着急,给开发者一点时间,说不定第二天升级的时候就解决了。
[编辑] 四、软件包版本
软件包升级本身也可能引入bug,请认识到这一点。
遇到某包升级遇到的问题时,也许降级是一个好的方法。
[编辑] 五、配置文件
主要有 /etc ,/usr/kde/*/etc 和 $HOME 下的 隐藏文件。
配置不正确引起的问题很多,更常见的是非正常的关机 引起的配置文件错误。这种情况下,你只需把配置文件删除或改名,即可确定是否配置文件的问题。
[编辑] 六、/var/log 下的log
log文件并非引起 错误的来源,但也可以为我们提供足够的信息供错误分析。
比如 xorg.conf 的配置错误一般在 /var/log/Xorg.0.log 里有所体现。
还有第三方的日志工具也会将它们记录的log放到该目录下。 比如著名的syslog-ng,它将log记录在/var/log/messages中,包括内核启动过程等的各项记录都会保存在该文件中。
[编辑] 七、man 和 doc
上面的doc 指的是 /usr/share/doc 。
遇到问题先试一下 man 往往会节省你很多时间。对Gentoo而言,比较实用的有man portage、man make.conf、man emerge等
[编辑] 方法篇(二)
以下介绍一些比较有效的方法。具体的解决手段意会即可以,千万别照搬。
[编辑] 一、经验法
笔者把经验法大致分成以下三类:
[编辑] (1)向高手提问
这是很多新手自然而然想到的方法,但是我建议应该把这当成最后的手段。
我认识的大部分学Linux的人,在有一定的经验后,都很乐意向新手回答问题,但几乎没有一个人能坚持下来。
为什么呢?因为那实在不是一件愉快的事...
关于怎么样向他人提问,权威的解释在: Gentoo的问题解决之道
[编辑] (2)在文档中查找相似问题
坦白说,本人刚用Gentoo时,有很多时间就是用来看文档的。
[编辑] (3)根据自身的经验
不要忘了自己曾经解决过的问题,特别是在重装的时候。
[编辑] 二、排除法
根据可供排除的程序之间的关系,我将排除法分成如下几类,并各举一个例子,以助理解:
[编辑] (1)并列排除法
例:compiz-fusion 有三个可用的窗口装饰器,分别为:
GTK Window Decorator,
KDE Window Decorator, Emerald。
当你的启动compiz后,发现窗口标题栏消失的时候,为了排除是否自己使用的窗口装饰器的问题,可换用另外两个窗口装饰器试试
[编辑] (2)链式排除法
指一个软件的启动或运行过程中,先后与几个因素有关。
例:一般我们为了方便进入图形界面,会安装登录管理器(dm),所以这时进入图形界面的顺序是这样:
xdm-->X->kdm/gdm-->kde/gnome/...
当我们遇到无法进入图形界面的问题时,可用startx绕过dm,从而可确定是否dm的问题,以此进行排除。
[编辑] (3)树状排除法
这是比较复杂的情况,同时也是比较符合现实的。
例:在配置一个基于apache+mysql+php的站点时,显然出现的问题可能与apache,
mysql和php有关,同时关于这三个软件,又有如下关联:
apache是否正确启动,是否载入php支持,与/etc/apache2和/etc/conf.d/apache2的配置有关.
php能否正常运行与版本的兼容、是否编译了apache支持、php的配置文件等因素有关。
mysql是否正常工作与mysql本身的配置、用户名及密码、用户的权限等因素有关。
如果把这些关联关系画在一张图上就组成了一棵树。
[编辑] (三)程序输出分析法
这是分析程序的log、标准输出、调试信息等进行排错的方法。
例:这是我遇到过多次的问题,stardict在X不正常挂起后,启动不了。
于是我在bash中手动打入"stardict",
回车,结果发现stardict输出一行:
error: .stardict/stardict.cfg is a null file (大致意思是这样)
于是
rm .stardict/stardict.cfg
问题解决。
[编辑] (四)最小化系统法
又称不相关因素排除法。这是在关联因素实在太多时,相当有效的一个方法。
比如:你第一次安装显示驱动、xorg-x11和kde,却无法进入桌面,怎么办?排除法?要排除的因素太多了...
可尝试使用最小化系统法,解析如下:
1、只使用最基本的xorg-x11和vesa驱动启动桌面:
把 /etc/env.d/90xsession 中的 XSESSION 的行注释掉
把 /etc/X11/xorg.conf 中的驱动换成 vesa
这时用 startx,会进入一个极简单的桌面环境(叫twm或dwm?)。
如果有问题,检查 xorg 的配置或log吧。
2、运行 kwin --replace& 或 metacity --replace&
检查窗口管理器是否正常工作
3、startkde & 或 gnome-session &
尝试在此环境下启动kde/gnome,虽然结果与正常的启动会有所出入,但可以得到很多信息。
4、尝试使用专业显示驱动启动X
