Linux新人必读,Linux发行版选择和软件安装的一些原则性问题

jackyjkchen 2012-07-17 10:47:45
关于Linux的传言和谣言众多,本座今天来澄清寰宇。


有些东西在论坛回答问题时已经说烂了,本帖也是对我自己的一些总结

1.使用前,通过各种途径多去了解Linux,包括正面的和反面的
袁萌袁大头虽为人诟病,但他的有一项统计却值得深思——每年4、5月和10、11月(ubuntu、fedora的发布期),Linux用户数会有一次井喷,半个月或一个月后退回原状,以至于10年来Linux桌面用户的实际占有率基本没有增长……这暗示了一个让人很不愿意承认的现实——Linux“退货率”极高。

是什么造成这种高退货率?你可以说是大部分用户不习惯Linux,但是有一个因素不得不考虑,那就是Linux在许多用过它的用户眼中并没有某些人吹嘘的那么好。诸如“Linux可以让Linux上的Windows虚拟机比真正的Windows更快速更稳定”之类让人啼笑皆非的谣言多年来充斥于网络,而可怕的是这些话特容易传到菜鸟们耳朵里……

一个很现实的例子便是Linux用户总喜欢向菜鸟宣传“Linux资源占用低,在旧电脑上飞快”,却总有意或无意的忽视一个重要前提——不用X,或者得用轻量级桌面,一些菜鸟们信以为真,真的就在老掉牙的电脑上装Ubuntu 12.04……unity卡、gnome3卡、kde卡,ubuntu本身稳定性又很一般,你觉得这些用户能在Linux上坚持下来的可能性有多少?其实在目前桌面应用极度吃资源的情况下(chrome之类的怪物,动不动吃1G多内存),基本没有所谓的“适合旧电脑的Linux桌面”了,在旧电脑上用Linux桌面,从桌面选择到软件选择都非常有讲究,不是一个菜鸟能搞得定的!

不得不说,本座当年就深受其害。被一帮教徒忽悠了之后,本座极度痛恨Linux,导致真正进入Linux世界晚了3年,但这3年本座并没有白费,通过书籍也好,通过网络也好,作为Windows的支持者和Linxuer论战也好,从根本上理解了Linux,所以“真正”开始Linux生涯后,进步极快。



2.使用前,搞清楚发行版的定位,心态要正常,不要有不切实际的期待
本座游离在Linux世界外的3年,最大的收获便是搞清楚了Linux发行版的定位,而且通过编程的学习和实践了解了软件开发的规律。
大体上,Linux发行版分为如下3大类
1.企业级定期发行版
典型代表RHEL(CentOS、Scientific)、SLES和Debian Stable,2年以上的发行周期,软件包一般落后于最新版1-3年,如果作为桌面使用,只有这类发行版才能勉强达到Windows桌面的稳定性,因为相对于Windows那个可能会造成系统崩溃的内核级图形界面(必须严格测试),Linux下的大型Desktop Environment的代码实现质量都差得远,X Window崩溃或异常在Linux下相当常见。
本座喜欢这种发行版。

2.桌面级定期发行版
典型代表Ubuntu、Fedora、OpenSUSE,通常半年的发行周期,软件只落后最新版几个月甚至就是最新。这类发行版使用人群最广,但对于稳定性的争论也最激烈,经常有人抱怨一天得重启几次X,而另一些人则否认这个现象。我们不能说其中一方绝对在说谎,在假设两方都说了真话的前提下,结论其实就只有一个了——这类发行版,有一定稳定性,但是测试时间不足,bugfix不够,在不同环境下表现出不同的稳定性。因此,如果你用这种发行版,稳定也好,不稳定也好,任何情况都可能发生,并且因为定期发行版生命周期内只有bugfix,随着时间的推移,稳定性会逐渐提高。
Ubuntu基于Debian,Debian 4之后,Ubuntu LTS其实都扮演了一个Debian Stable的测试版的角色——通常提前一年发布,而软件包版本和一年后的Debian Stable差不多,所以Ubuntu LFS一般在发布一年之后也能达到比较高的稳定性,这就是软件开发的规律。
就本座的使用心得看,大部分的半年为周期的发行版其稳定性小于或等于Debian Testing,当然不绝对,Debian Testing会周期性的滚动更新或冻结版本,所以不同时期的Debian Testing稳定性是不同的。

3.滚动发行版
Arch、Gentoo、Debian Sid是典型,特点是软件包版本不固定,会滚动升级,能提供最新的软件。视发行版的定位和价值观,其稳定性会有一些差别,比如普遍的口碑是Arch不如Gentoo和Debian Sid稳定,但软件包更新更快。
对于这类发行版,其稳定性是不可保证的,但人们通常不会说自己的坏话,Arch用户和Arch的wiki中一些言论很有代表性。比如问及Arch是否稳定时,Arch的wiki采取了避重就轻的态度。简而言之,就是——上游软件包不稳定,Arch就不稳定,但责任不在Arch(Arch的哲学是尽量少打补丁,少做Bugfix,其滚动发行的特点也决定了bugfix是没什么意义的,这和Debian/RHEL有时候补丁比源码包还大的情况形成鲜明对比)。

所以,你对Linux的期待到底是稳定还是新鲜,决定了你的发行版选择,如果你的选择与你的期待不相符,后果往往是杯具的。

本座多次强调过,以软件开发的规律,以操作系统套件的规模(注意是套件而非内核或基本系统,OpenBSD因为只维护基本系统,半年一次发行也能做到比较稳定,你维护一个几十行的程序,大可以1小时为发布周期……),你没有至少2年的发行周期和至少1年的测试期,很难做到稳定。最后要说的是,商业版本的操作系统,Windows也好,Linux也好,大都有较长的发行周期。如果M$想学Ubuntu,他完全可以这么做——
Windows 8 DP(开发者预览)作为Windows 8发布
Windows 8 CP(消费者预览)作为Windows 9发布
Windows 8 RP(发布预览)作为Windows 10发布
Windows 8 RTM(正式版)作为Windows 11 LTS发布,并提供长期支持……
好了,我想大家应该明白了。



3.严格按照发行版的定位去使用Linux和安装软件,少看网上的菜鸟小报文章
这一节的前提是你做到了前一部分的要求——对发行版的定位有了清晰的了解。

在Linux/Unix区,我经常能见到这样一些问题——我按照链接XXX安装了XXX软件,不能编译/不能运行/运行有问题……

首先我们列一下Linux的软件安装方式
1.官方软件仓库安装
2.第三方软件仓库安装
3.软件发布者自己打包
4.编译安装
因为Linux发行版间二进制不兼容,所以随拷随用的绿色软件比较少

软件来源是操作系统稳定性的最大影响因素,Windows不稳定的最主要原因在于生态环境过于开放,软件来源极其混乱(有统计显示Windows的各种错误,责任在M$不不到5%)。Linux发行版大都提供了软件仓库,也就是提供了一个可认证的可靠软件来源,因此,没有特别的原因(软件仓库没有,软件仓库版本过旧),就不应该使用第三方软件源,更不应该随意编译安装。

第三方软件源的可靠性以及是否应该使用根据发行版、软件源、操作系统应用定位的不同而不同,如RHEL/CentOS,首先得明确如果作为生产环境服务器的话,尽量采取“禁止安装任何官方软件仓库以外软件”的策略(Oracle数据库等有质量保证的商业产品除外),不过作为桌面的话,因为RHEL的软件仓库比较小,许多东西没有,rpmforge、epel、rpmfusion都是可用的第三方源,其可靠性的差别可上网查询,有人认为rpmforge要更可靠(存疑,我也仅仅是看了一些网上的小报文章,我个人用RHEL,绝对禁止安装任何官方仓库以外的东西,如果你有官方仓库以外软件的需求,我觉得你不太适合RHEL)。
对于Debian这样官方软件仓库庞大的发行版(只要是开源软件,几乎无所不包),Stable唯一的弱点就是某些软件版本稍微旧了些,如果你受不了这些稍旧的软件,请使用Debian Testing或Ubuntu。
对于如下组合,我个人只能说是奇葩——
Debian Stable + Testing或Sid的软件源,更新过后不就是Testing或Sid么?那你干嘛还用Stable安装,难道你认为以Stable为基础能更稳定?(真的有人这么认为的)恰恰相反,软件跨版本更新过程中带来的各种不可预知因素,导致Stable升级出来的Testing或Sid绝大多数时候还不如直接安装的Testing或Sid稳定。你说你只想有选择的更新,比如Stalbe + Sid的某一个软件,不是不可以,但apt的软件依赖一带一大串,真的能够如你所愿么?
Ubuntu LTS + 更新的非LTS仓库 + PPA(ubuntu的第三方仓库),原因同上,童鞋(或者说菜鸟),你不适合LTS……

编译安装是个极具争议的话题,实际上,对于稳定性和安全性要求较高的场合,编译安装大部分时候应该是被禁止的,编译选项、软件配置的不同都可能造成不可预料的后果,所谓的编译安装提高性能,鉴于C/C++编译器对SIMD支持极其有限,大部分时候效果也是极低。越是重视安全稳定的操作系统,对编译安装的态度越是保守。最注重安全的OpenBSD,不推荐构建内核,不推荐ports,总之除了关键安全补丁(以源码发布),不推荐任何编译安装。
我们来看几个事实:
1.gentoo、LFS等以编译安装为主的发行版,明确声明高等级优化轻则反而损失性能,重则造成软件行为不正常,gentoo直接说你用官方教程外的高等级优化导致的问题,本发行版概不负责,你也别提交bug
2.Debian、RHEL等喜欢狂给软件、内核打补丁的发行版,其软件原版有时不能正常使用,对于这一类发行版,下源码configure、make、make install是非常不智的行为,即便要编译安装也应该使用发行版提供的srpm、deb-src等,用官方构建工具编译安装,而在官方已经提供了这些软件的二进制版本的情况下,你编译安装除了制造更多的CO2,还有什么意义呢?
3.一个很打击编译安装爱好者信心的实例——去google“MySQL 登录 漏洞”,使用没有充分测试的所谓“优化”版本,是得不偿失的。

所以,如果你不是大牛,不知道自己在干什么的情况下,谨慎使用编译安装,网上的文章,99%是菜鸟或装B者写的,当你水平提高到一定程度,你会发现网上无可靠来源的东西可信度低于10%(菜鸟写的也有一部分是对的……)。如果想学习,推荐使用gentoo发行版,甚至LFS。LFS是唯一适合configure、make、make install三部曲安装软件的发行版,因为他所有软件都是这么装的。
所谓“服务器都是LFS完全定制”的,更是菜鸟们的谣言,LFS主要是个学习和研究环境,他是用来乱折腾玩极限的,如下帖子是LFS的一个应用场景http://topic.csdn.net/u/20120625/23/30a95467-6a5a-4ed4-a237-bb728d4ac3ad.html,好,你应该知道LFS是用来干什么的了……
...全文
3432 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
WizardOz 2014-08-04
  • 打赏
  • 举报
回复
我是因为Emacs才坚持使用Linux作为工作机的。在Windows上没本事配置出好用的Emacs。其它方面,真的没多大区别。PS:我觉得Linux只适合作为服务器使用便携设备定制系统和程序员使用三种用途。
noal0502 2014-08-04
  • 打赏
  • 举报
回复
我在Linux设备上搞了两年开发,但是进步很慢,求指教。
百曉生 2014-08-03
  • 打赏
  • 举报
回复
引用 24 楼 u010957746 的回复:
[quote=引用 23 楼 u012421456 的回复:] [quote=引用 21 楼 u010957746 的回复:] 还是放不下ubuntu 12.04
其实以前也是,当然,总共接触ubuntu的时间也不算长[/quote] 我也是新人,嘿嘿。一起学习~[/quote]
loong0306 2014-08-03
  • 打赏
  • 举报
回复
引用 23 楼 u012421456 的回复:
[quote=引用 21 楼 u010957746 的回复:] 还是放不下ubuntu 12.04
其实以前也是,当然,总共接触ubuntu的时间也不算长[/quote] 我也是新人,嘿嘿。一起学习~
百曉生 2014-08-03
  • 打赏
  • 举报
回复
引用 21 楼 u010957746 的回复:
还是放不下ubuntu 12.04
其实以前也是,当然,总共接触ubuntu的时间也不算长
百曉生 2014-08-03
  • 打赏
  • 举报
回复
引用 21 楼 u010957746 的回复:
还是放不下ubuntu 12.04
我现在也是ubuntu 12.04
loong0306 2014-08-03
  • 打赏
  • 举报
回复
还是放不下ubuntu 12.04
bjwtufv 2014-08-03
  • 打赏
  • 举报
回复
up 现在在用ubuntu 14 个人感觉比win7要好
caewow 2014-07-26
  • 打赏
  • 举报
回复
学 习 学 习 了
百曉生 2014-07-26
  • 打赏
  • 举报
回复
嗯,感觉楼主说的很有道理,关注一下,感谢楼主
gbjackie11 2014-07-18
  • 打赏
  • 举报
回复
学习了,看了明白了许多
Rocloud 2014-05-11
  • 打赏
  • 举报
回复
工信部:支持国产Linux系统研发 望用户使用国产系统 Linux不知不覺地成了国产系统
Karma1670 2014-05-05
  • 打赏
  • 举报
回复
软件依赖性是我认为Linux系统最不舒服的一个原因
Rocloud 2014-05-02
  • 打赏
  • 举报
回复
个人不喜欢吸血的ubuntu
剑指七星 2014-04-30
  • 打赏
  • 举报
回复
我比较的懒,大部分安装软件都是用yu/apt-get安装的,实在懒得去瞅那一坨长长的软件依赖
cckoldy 2014-04-30
  • 打赏
  • 举报
回复
有道理,看君一帖,胜读十年书
mobz 2012-08-23
  • 打赏
  • 举报
回复
好贴。
ycf128 2012-08-23
  • 打赏
  • 举报
回复
学习下~~
jackyjkchen 2012-07-25
  • 打赏
  • 举报
回复
因此,在发行版本身就是i586/i686优化的情况下(已是普遍现象),除了极个别的需求,编译安装对性能上的提升是非常有限的
jackyjkchen 2012-07-25
  • 打赏
  • 举报
回复
根据本座的实测编译安装的优化效果

对于按i386或i486编译的软件,使用i586或i686指令集往往能获得可察觉的性能提升

对于本就使用i686编译的软件,使用Core 2等更高级指令集编译,只有极少部分软件效果较好,如gmp、ffmpeg等运算密集型软件,而且,就对源码的观察看,也不是因为C编译器优化的缘故,而是直接生效了这些软件包的SSE汇编实现

目前C/C++编译器对于跨平台通用代码的SIMD优化能力都很弱
加载更多回复(6)

2,161

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 UNIX文化
社区管理员
  • UNIX文化社区
  • 文天大人
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧