分页: 1 / 1

[教学]GNU/Linux有windows下的修复安装吗?我“爱机”出毛病了,不重装怎么办?

发表于 : 2007-08-27 10:24
xiechy
修复和安装是两个概念阿!

windoze由于封闭性,而且由于面向的客户对计算机并不熟,用户不知道哪些“系统文件/软件”是错误之所在,对出错的提示也一般不会看或看不懂(试问,有几个人在win下会打开日志服务并查看?),哪些是要重新安装的,哪些是不用的;哪些是文件错误,哪些只是设置问题;所以只好把“修复/重装”捆绑在一起,但是其实这样效率比较低下,而且有时候重装并不能解决问题,毕竟机器的“智力”,也就是判断问题的能力相对有主观能动性的人是不可以相比的~

对gnu世界来说,一般是由一个base system加上外在的软件包组成的模块化非常强的系统。对debian系的gnu/linux来说,就是用debootstrap来构建的系统(gentoo系仿bsd的就是所谓stage压缩包啦~),这个系统内包含的软件包不是用dpkg/apt系统来安装,构建的,通常包含些很基本的软件,例如find,grep,ed,ldconfig等等,当然,apt和dpkg也包含在内,不然以后怎么“自举”阿?。在base system之上,可以用包管理系统来一个一个的安装,配置等等。例如设么xorg,vim什么的~

但是并不是说base system的包的内容就不可以替换,因为虽然他们不是用apt/dpkg装的,但是他们也包含了在apt/dpkg数据库内,所以对于一个构建好了的系统,你是看不出来哪些是base system的,哪些不是,对系统内的任何包,都是可以替换,升级的。也就是说base system虽然装的时候是“铁板一块”,但是在装完了之后,确和其他包一样只是一堆小积木搭起来的宫殿骨架~

好了,现在回到主题上来,那么GNU/linux下有修复安装吗?
应该说,既有,又没有~
为什么说有呢?由于包的模块性,如果你的系统出了问题,你又不知道毛病处在哪里的话,那就把你能想到的包都重装一次就结了~做一个长长的列表,然后就可以喝杯咖啡好了~什么?不知道哪里去找安装包文件?可以用apt系统download阿!实在没有网络,安装光盘上也有一堆的安装文件阿!

说没有,那又是为什么呢?
  • 毕竟没有专用的工具/安装模式直接叫做"修复安装"的。
  • "修复安装"通常是没有效的白费功夫,没有必要有这个选项。
“怎么能说是没有必要呢?对你们老手而言当然是,但我们新手很需要阿!”
stop!停止这种争论吧~这不是老手/新手的区别,而是win和GNU/linux的区别~
1、linux很难在系统文件上出错,所以出了错的话,一般就不是“替换文件/重装”能解决的~
1.1、权限:
在win下,至少8~9成的用户是管理员权限走天下(剩下那些是管服务器的),也就是说用户有“删除”系统文件的权限,很可能什么“误操作/恶意软件/病毒”,就可以悄悄的删掉,替换系统文件,这样,自然就只能“重装路,而今迈步重头越鸟”~
但是在lin下,root权限确实很少用到的,所有的新手指南都会警告用户root权限的危险性,绝大多数的用户,都是普通用户权限执行工作。所以“误操作/恶意软件/病毒”什么的当然就会对我们没有影响──你就是想破坏系统,也没有能力阿!既然系统文件不会被破坏~那重装上正确的当然也解决不了问题。
1.2、动态链接库:
大家在win下经常遇到的错误就是dll(动态链接库:包含程序运行所需的函数,可以多个程序共享使用,重用函数)错误吧?在lin下的动态连接库,叫shared object,也就是用so做扩展名的,在/usr/lib下的一堆文件。
对windoze的软件包来说,软件寻找它需要的dll的顺序是首先在可执行文件的当前目录,然后就是在系统文件夹$WINDOWS\\system32目录下(之后的还有几个,忘记鸟)~所以如果是甲软件依赖一个公用的乙库,那么甲软件包的安装包会怎样呢?它会在安装包中自带上乙库的dll文件,然后直接把它覆盖到$WINDOWS\\system32下,这样,万一一个新的软件包丙,他也依赖乙库,他也自己带一个,然后覆盖到了$WINDOWS\\system32下,这样不就出问题了吗?其实一般是不会出问题的,因为这个库一般也是原始发行厂商编译的,并不是甲,或者丙有过修改,甲、丙所带的文件都一样~~但有时候这个也不一定,因为两点:
  • 库是有版本区别的,它也会升级~
  • win下的库有可能有语言(中文/英文/俄文)区别
如果万一覆盖的是系统文件,嘿嘿,可能就中文变英文鸟~例如最早的俄罗斯破解版winXP,就是用的英文版的system32.dll来覆盖的中文版的系统──内核就是英文的啦,如果重装的话,就完全是英文的拉~

好,那现在看lin下的软件,它们一般也会是gnu世界的成员~以源代码的形式发放~在源代码里,它可不会再带上什么他依赖的第三方库~他只会在你编译的时候,告诉你“俺缺了这个库,编译不了,你小子赶紧着去自个装一个吧”~然后所有的你的依赖这个库的软件,都只依赖一个你自己装的这个库~这样才能够缩小源码包的体积,而且这样你装的库不会被覆盖。

1.3注册表:
“重装不止是复制文件阿,还有注册表的信息添加阿!我就不信lin能这么先进,连配置都不需要~”
恩,确实,安装一个系统并不是简单的复制文件就完了,什么检测硬件生成硬件配置文件…………等等一些辅助功能,对这些,在包管理中一般用脚本来执行,在dpkg系统中就是所谓的post/pre inst/rm脚本,对这个,我们可以重装一下软件包来作到。另外顺便说句,对全系统范围内,是不存在什么注册表的,虽然gnome的gconf系统有点类似,但这个也受到很多人的诟病。

2、既然重装一般没有作用,那怎么解决问题呢?
简单,一般来说,直接吧问题描述一下,www.google.com/linux 去搜,google知道滴~80%以上的问题,都可以这样解决。
如果比较复杂,那么看log文件,在/var/log/目录下,如果是x的就看Xorg.0.log如果是kernel的就看kern.log~反正就是看记录啦~接着重新去问google去~呵呵,99 %以上的问题,都可以这样解决。
不过上面的两点都是要求一定的英文水平的哦!很多中文的站点,只是互相复制粘贴文章,重复的多,有用的少~如果能参看英语资料,这才会有比较新,比较有用的资料。

3、“在lin下的这些经验可以用在windows下吗”?
当然可以!不是有句话嘛,只有合不合格的管理员,没有合不合格的系统~
只要做到尽量不要使用管理员权限,而是创建工作用户,用工作用户进行工作,其实windows很安全~
另外,在系统出了毛病的时候,不要直接想到的就是重装,而是用点心,看看系统日志,在微软知识库中查查是什么错误,怎么解决~通常这样也是又快又好的~
如果是病毒导致的问题,那么查查诺顿病毒知识库(全英文,没有中文翻译),它会告诉你,应该首先怎么样,接着怎么样,比方说先重启到安全模式,删掉xx文件,在用xx光盘引导…………之类的,这也可以大大的补足杀毒软件自身的限制。