首页»观点评论»Linux在桌面领域存在的主要问题(2013版)

Linux在桌面领域存在的主要问题(2013版)

来源:oschina 发布时间:2013-08-03 阅读次数:

 前言

  在这篇日常更新的文章中,我们仅仅讨论Linux存在的问题和不足之处(一些人认为Linux不适合桌面,这些或许就是原因)。当然了,各位应该知道的,Linux在很多领域里是要强过其它操作系统的:比如出色的包管理;多平台架构开箱即用的支持;极佳的稳定性(一般情况而言);没有泛滥的病毒和恶意软件;基本不需要重装系统;另外Linux还具有高度的定制性和便捷的脚本环境,甚至还是免费的。

  这并不是一篇诸如Windows与Linux之比较的文章,不过文章当中也会有地方拿Windows或Mac OS来作为一个参考(毕竟,它的市场占有率更高)。下面列出的大多数问题是技术性质的,也有一些是“政治性”的(不是我说的,是别人说的),例如如果某硬件生产商拒绝公开技术资料或者公开的资料不完整,那么Linux对该硬件的支持就会不完整或者BUG百出,这个问题在Linux社区里是没人能解决的。

  我想把一件事弄得清清楚楚,明明白白。这件事就是,在某些方面上,Windows平台甚至还不如Linux平台,而且已经明确说明了不适合作为桌面级平台。眼下能想到的是,我要说出Windows平台以下的一些严重问题:没有加强的文件系统和注册表架构(我已经发现了一个单个的可以完全地卸载自身的重要应用程序);没有真正的安全模式;没有清理状态;用户充当系统管理员(病毒/恶意软件带来的UAC警告,大多数用户不会理解,也不想理解);没有好的打包机制(MSI是脆弱的);没有系统的全面更新机制(包括第三方的软件);Windows很难调试,在大多数情况下Windows停止启动非正常的用户才有助于解决这个问题;Windows依赖于硬件(特别是在UEFI上运行),大多数时候你不能安全地升级你的系统(将会长生成千上万的冗余项),等等。

  或许你已经多次听说全球大部分的智能手机都已经使用了Android,也就是Linux。但是有两个问题必须清楚:1.Android并不是Linux(难道你有见过有人在他们的电脑上运行Android系统吗?)。Android只包含Linux的一个部分——内核(而且是一个已经不再更新的只由Google支持的内核)。2.Android 只是一个智能手机、平板或者其他触摸设备的操作系统,并非桌面操作系统。所以本文主要讨论的一系列的Linux系统分支和他们所包含的开源软件而并非Andriod系统。

  Gnome和Mono的创始人Miguel de Icaza对于Linux有相同的看法。他在这里反复重申了很多本文下面将要提到的意见。

  Ubuntu的开发者们决定把Ubuntu变成一个有活力的游戏平台。为了达到这个目的,他们列举了一些需要被处理的话题。令人惊讶的是,他们想到的 这个清单和下面你要读到的几乎完全吻合。

  一些Fedora的开发者 提议修改这个发行版,来让它提供更稳定的接口(APIs/ABIs)并且尽可能的防止退化。

  在 评论部分,尽情的表达你的反对意见吧。

  注意:

  列表中的绿色项目要么是部分解决,要么是不重要的,要么是有问题的,要么是有其他变通方法的。 这个列表非常需要被重新组织一下,因为这里提到的一些问题很重要,而也有一些并不重要。

  最为一名用户,你有很大几率不会到这里的任何问题。(如果你拥有正确的硬件,从来不把你的系统搞乱,并且只使用你的发行版里面很有限的一些软件)。

  在你阅读这篇前,请看看下面一些值得考虑的要点:

  • 如果你相信Linux是完美的,没有什么错误的话,请关闭此页。
  • 如果你认为所有关于Linux的批评只是为了毫无意义地诋毁Linux,请关闭此页。
  • 如果你觉得这篇文章的目的是为了说明“所有在Linux上做的事情或者Linux本身是毫无用处的”,那么你错了,请关闭此页。
  • 如果你相信Linux和Linux的用户可以不需要商业软件和游戏做好工作或者生活的话,请该关闭此页。
  • 如果你认为我在这里是为了要大力推崇Windows 或者Mac OS的话,请给关闭此页。
  • 如果你觉得我在这里是要传播谣言或者质疑Linux的话,请立即关闭此页并永远别再回来。你到底想干嘛?请继续回去参加激烈的争论和诽谤吧。

  请记住这列问题的真正的目的是要告诉大家应该更多地深入到Linux里面,而不只是单纯找些错误出来而已。

 桌面Linux的问题和主要缺点

  (对哪些憎恨读长文章的人来说,下面有一个简要版本)。

  硬件支持

  1. 视频加速器/加速(也见X系统一节)

  • Linux上的NVIDIA优驰技术和ATI的动态GPU切换技术都不是官方支持的,也不能远端使用已经实现的骇客软件来支持。至多你可以使用   BIOS设置或者在启动过程中运行图形子系统之前更改要运行的GPU来切换GPU。优驰技术现在由Linux黑客半解决(而且任何Linux发布也不直接支持它)。
  • 没有高质量的开发源代码的Intel,NVIDIAAMD驱动:
  • 开放源代码的AMD和NVDIA驱动不能正确地和完整地支持电源特性管理和风扇速度的管理
  • 所有开放源代码图形驱动实现了非常不完整和旧的OpenGL(到2013年为止,实现了OpenGL 3.1,然而OpenGL 4.3已经在2012年发布)。
  • Intel驱动比它们在Windows下的驱动很多。
  • 开放源代码的AMD和NVIDIA驱动也比它们专有的驱动要慢很多(有时是数量级的慢)。
  • 由于问题不同,所以缺乏合适的性能对比器的支持。
  • (但愿在2013年能或多或少的解决一部分)新的东西经常使系统崩溃。
  • 完整的OpenGL栈不能合法地在Linux里实现/或者导入到Linux里,因为许多OpenGL功能(例如S3TC纹理压缩和浮点数纹理)是专有的。
  • 开放源代码OpenGL栈(也称作mesa)处在极度糟糕的状况下。
  • 对许多数人来说,NVIDIAAMD的专有知识产权的图形驱动不能可靠地工作(崩溃、不支持新内核和X服务器,逐渐缓慢,超高温度,非常吵的风扇等)。
  • 专有知识产权的NVIDIA/AMD图形驱动不支持KMS和VirtualFB,以及功能实现滞后(新的X.org和新的内核版本正确的和完全的休闲和娱乐的支持,完全2D加速支持等)。除了Linux开发者通过更改API或者使得API在GPL领域外不可用而打破封闭式源代码驱动所做的一切外。
  • H.264 AVC/微软VC加速没有统一的API。VDPAU仅仅在NVIDIA GPU上支持。Intel的VAAPI仍然不成熟,仍然无法合并和由Mpalyer/ffmpeg/xin/等)接受。AMD仍然没有一个可以运行的实现。
  • 当(使用Adobe Flash)观看视频或者youtube片段,非常多的用户经历了严重的视频断裂-这个问题不但影响了专有驱动,也影响了开放源代码的GPU驱动。很明显它是X.org的“功能”。

  2.音频子系统:

  • 没有可靠的音响系统,没有可靠的统一的软件音频混合系统(除了Linux外,其他现代的操作系统都已经实现),许多旧的和/或者专有应用仍然打开哪些特别引起主要用户问题和头痛的音频输出。
  • 太多的抽象层使得用户不能确定为什么他的音频系统不能工作(ALSA内核驱动->ALSA库(->dmix)->PulseAudio 服务器->Alsa库+后端脉冲->应用)。
  • (仅仅适用于某类声卡,乐如Creative Audigy系列)建立音量级别、音频收录和甚至某些情况下的音频输出都是十分困难的。高度混淆,没有自我说明的音频通道名/设置。
  • (Linux开发者不关心向后兼容性-如见OSS通常得不到支持,OSSv4不再开发了。ALSA将胜出-喜欢不喜欢就这样了),如果你有多张声卡,那么为所有应用(例如直接使用OSS或者ALSA的旧应用)更改默认声卡是一件非常痛苦的事情。

  3.打印机、扫描仪和或多或少的其他外设:

  • 仍然有许多打印机根本得不到支持,或者只有很少地支持(利盟和佳能就位列其中)。
  • 许多打印机的功能只在Windows驱动里实现了。
  • 一些型号的扫描仪和(互联网)摄像机仍然得不到很好的支持(同时许多Windows驱动具有的功能没有了)或者更本就不支持。
  • 一些硬件的不完整或者不稳定的驱动。一些硬件的安装问题(像声卡或者电视卡/互联网摄像机/Wi-Fi卡)。

  4.膝上型电脑/笔记本的特殊按钮和功能经常无法工作(例如Fn和F1-F12组合和特定的电量节约模式)。

  5.Linux内核里有大量的 递归算法,当许多硬件同一个新的内核发布运行的时候,它难以理解地停止运行。我个人已经汇报了两个严重的音频播放递归,这两个因此得到了解决,然而大多数用户不知道如何归档漏洞,如何分割递归,如何识别失效的组件。

  6. 现代膝上型电脑使用的许多省电功能(比如PCIe的ASPM,正确地视频解码加速,深度省电状态等)得到不完全的支持的或者没有支持。因此在Linux下你将无法获得像Windows或者MacOS下同样的电池寿命,而且你的膝上型电脑运行在更热的状况下。 天哪

  7.AMD的Hondo CPU在推出的时候仅仅支持 Windows 8

  软件支持:

  1. X 系统:
    • 对于现代PC和程序来说,X.org 并不合适很大程度上,它已经过时了,而且不安全
    • 没有用于GUI程序的高层的、持久的、稳定的 (真正向前向后兼容) 标准化 API 。Win32 核心 API保持了18年的二进制级别兼容性,大对数Windows 95程序仍然能在Windows 8上运行。GTK和Qt都没有保持向后兼容。最近10年的版本中,GTK 1、2、3和Qt 2、3、4、5都互不兼容。
    • !用于切换不同键盘布局的快捷键至今仍然不太好用(这个问题9年来一直没有得到解决)。
    • !全屏应用程序使用自定义分辨率时,X.org 不会自动调节分辨率。很奇怪的是一些Linux开发者完全无视了Linux平台的游戏,但既然目前Linux和游戏毫无交集,这个问题似乎不足为虑。Valve已经发布Linux平台的Steam,他们的游戏业正在向Linux移植,但这只是沧海一粟。
    • 许多程序中,滚动会导致程序需要手动重绘
    • ! X.org 允许程序独占键盘和鼠标。如果程序出现意外,系统将无法控制,甚至无法切换至文本命令行界面。
    • ! 在设计上,X.org 的键盘处理无法正常工作。打开的菜单将导致全局快捷键无法使用(GTKQt都有这个问题).
    • 臭名昭著的 bug 12309,某些情况下GUI反应迟缓甚至无响应。这通常是由于视频驱动的不完善(因此使用软件加速的VESA驱动)。这个bug表面上已经修复但用户仍然可能遇到这个问题。
    • ! Adobe Flash Player 在Linux下有非常多的问题:不支持GPU解码和渲染,视频撕裂,甚至高档PC仍导致CPU 100%使用率、掉帧或者崩溃。2012年Adobe宣布将不会继续维护除Chrome以外任何Linux浏览器上的Flash Player。
    • !目前X.org server无法永久保存或恢复用户设置(例如X Render和Xv)。NVIDIA和ATI闭源驱动都提供自己的设置工具。
    • 无法无缝替换X.org驱动(简单来说,在保持用户会话和运行程序的同时重启X server)
    • X.org 的2D加速没有Windows上的Direct2D和DirectWrite那么成熟. 在一些基于标准的HTML5 demo(包含2D动画和变形动作)中,Windows比Linux快大概1000倍。当然,公平地说,Mac OS X也有同样的问题。
    • X.org server没有真正的安全模式。错误的设置或者有问题的驱动会使你的系统无法使用,有时甚至无法进入纯文本的控制台进行修复(现在这个问题已经部分解决了,因为现在通常GPU由核心通过KMS控制,X.org不再控制它了)。
  2. 字体渲染(这个可以由高级GUI库实现)问题:
    • ! 白色或者浅色字体在深色背景上的抗锯齿显示(没有安装Infinality补丁的时候——现在的发行版都默认安装了这个补丁)简直糟透了。
    • ! ClearType字体无法开箱即用 (我测试了一下自己编译FreeType 2.4.11,这个版本提供了ClearType技术,但显示效果糟糕透顶)。即便支持ClearType字体绘制,你也无法进行调整。
    • ! Web字体在Linux下没法
    • 由于缺乏基于RGB亚像素的完整字体微调,默认字体经常缺乏合适的字体设置,这导致很多时候这些字体看起来像一样
    • 不使用GTK或者Qt的话很难正确实现字体抗锯齿。Opera用了一年才解决了这个问题,而Google Chrome在渲染上花了八个月。
    • 一般来说大多数发行版没有包括好看的(甚至合适的)字体——这个问题正在逐步改善但是尚未完全解决。
    • 很多桌面环境下字体抗锯齿设置无法立即应用
    • 由于专利限制,很多发行版禁用了字体抗锯齿 ——这在2012年或多或少解决了。然而即使在2013年仍有很多发行版禁用了FreeType的SPR技术。
  3. Linux 核心:
    • ! Linux核心无法从显卡、声卡或者网络驱动崩溃中恢复(我很抱歉,在此我要比较一下Linux与Windows。从Windows Vista开始这项特性已经可以在多种场合下完美运行)。
    • KMS 独占显示输出,而且忽略VESA 的显示模式设置。这导致系统无法实时切换显卡驱动。
    • KMS 显示驱动无法卸载或者重新加载。
    • !! KMS 没有安全模式:有时KMS无法正确初始化显示设备,这个时候你完全无法操作你的系统。"nomodeset" 这个内核选项也许有用,但是这个选项完全禁用了KMS驱动。这个时候,要么用一个80x25的文本终端,要么用一个华丽但是不能工作的显示系统。
    • 传统的Linux/Unix (ext4/reiser/xfs/jfs/btrfs/etc.) 文件系统在U盘等大容量设备上可用性不好
    • 文件描述符和socket无法强制关闭。没有卸载就拔下U盘的确是危险的,因为这涉及固定的挂载点,某些情况下可能导致冲突甚至崩溃。基于同样的原因,对分区表和root分区的移动、调整大小无法立刻生效。
    • 对硬件传感器的支持极不完整。比如说,HWinfo32/64在我的极为一般的台式机上能侦测并显示10个硬件传感器数据源和超过50个传感器,但是lm-sensors只能侦测显示4个源和20个传感器。笔记本上的情况更糟。有时从lm-sensors上只能读到CPU核心的温度。
  4. 大量Linux发行版带来的问题:
    • ! 对系统设置、服务和设备没有统一的设置系统。例如,发行版A使用同一程序设置网络,并且将设置写入文件系统特定位置的特定文件中,而发行版B所有设置的设置方式都不一样。这会逼疯大多数用户。
    • ! 发行版之间没有统一的安装程序(或者包管理器、包格式、依赖跟踪设施)。为解决这一问题, GNU Guix 项目正在开发中,但我们不确定它是否会用于主要的发行版中。考虑一下RPM(这货有几个互不兼容的版本)、deb、portage、tar.gz、源代码发布,你就会发现这么多种方式增加了软件开发的成本。
    • ! 发行版的软件仓库没有包含所有的开源软件——库的依赖冲突本身就不允许如此。用户永远不应该为./configure && make && make install而苦恼。另外,这种方式也不安全,有时还会因为不正确的依赖停止工作。安装程序应该只需要双击安装包然后输入密码——就像Windows一样。
    • ! 应用程序开发是个问题。不同的发行版可能使用库版本、不同编译器开关甚至不同的编译器。在第三方开发者眼里这会带来一大堆麻烦事。将所有依赖的库都打包并不是解决办法,因为你可能使用的旧版本库可能含有严重的安全漏洞。
    • ! KDE和Gnome这两个最流行的开源桌面本身只能进行很少的系统配置,而每个发行版都要为自己的BootLoader、防火墙、网络、用户和组、服务等创造设置程序。这简直是浪费时间。
    • 对于ISP/ISV员工来说,Linux是他们最不愿意见到的东西。在企业内部你可以强制所有人使用同一个发行版,但是你不能强迫客户这么做。他们会自己选择发行版。
  5. ! 几乎所有的设置都应该能通过GUI进行,但现在很多情况下只能依赖控制台。Windows和Mac OS都能这么做。
  6. 缺乏约定俗成的规则。对于同一个动作,不同的应用程序可能有完全不同的快捷键,UI元素的位置和风格也可能不一样。KDE和Gnome的一些核心程序外观上有些瑕疵。比如说,KDE的开始菜单可能会变成一个巨型垃圾场(这个问题出现在Fedora 17上的KDE 4.8.5)。

  妨碍Linux流行的问题和开源的天性:

  1. ! 软件名称缺乏描述性,而且无法运行用户熟悉的Windows软件。有些无法用Wine(注意页面里面含有“regression”的行)运行的程序在Linux下没有替代品。
  2. ! 没有能与Windows下相匹敌的核心级应用程序, ArchiCAD、3ds Max、Adobe Premier、Adobe Photoshop、Corel Draw等程序缺乏Linux下的替代品。家庭用户和企业用户不会选择无法完成他们工作的Linux系统。
  3. !过去五年来Linux平台上几乎没有游戏AAA级游戏更是一个也没有。至于2013年,Valve发移植的3A级游戏只有总量的0.05%不到。Cedega(现在已经停止开发了)和Wine(非常不稳定)只能提供非常不完善的支持。另外,AMD和NVIDIA的开源显卡驱动的性能和兼容性不够,OpenGL也支持到OpenGL 3.1——这已经是4年以前的版本了。
  4. 模糊的专利和法律状态。美国Linux用户在得到合适的(符合法律和专利要求的)解码器之前无法播放很多流行的音频视频格式。

  Linux常见问题 :

  1. !!你的系统在更新了GRUB(启动装载器)或者内核后是否可以成功地(重新)启动没有任何保证-有时甚至一个小小的内核更新都能中断启动过程。例如微软和苹果为了修补安全漏洞经常性地分别更新ntoskrnl.exe和mach_kernel,却没有听过哪个这样的更新曾经危及启动过程。GRUB更新已中断我PC的启动过程大约十次。(另见下面的兼容性问题)。
  2. !!桌面版的长期技术支持无法申诉,因为极差的支持或者不支持新的硬件,特别是GPU(以及Wi-FI适配器,网卡,声卡,硬件传感器等等)。
  3. !!Linux开发人员有这样的趋势 a)抑制安全漏洞新闻 b)当所说的漏洞修补后不会通知大家 c)错误地把任意代码的执行漏洞当作“可能是拒绝服务”(多亏Gullible Jones提醒我这个问题-很久以前我打算提起这个问题,不过我一直忘记这件事)。这儿是Linux Torvals自己的完整的说明:“因此我个人认为安全漏洞仅仅是“常见的漏洞”。我不提及它们,而且我也没有有任何理由认为追踪并宣布它们是一个特别的东西是个好想法。”
  4. !在一个发布的生命周期里固定应用的版本。假如你使用了含有某个软件的某发布的10.10版本。在这个版本的10.11发布之前,这个应用已经有了更新,而且具有新的令人激动的特性,然而你却不能从官方安装,并且也不能使用它们。
  5. 一些人认为严重阻碍Linux发展和扩展的问题之一是在核心系统和用户应用之间Linux没有一个清晰的分割。换句话说(这篇文档通篇都提到)第三方开发人员不能依赖于一套固定的开发库和编程接口(API/ABI)-在大多数其他操作系统里,你可能期望你的应用在不需要重新编译和额外修补的情况下运行多年-在Linux里这经常是不可能的。
  6. 对那些在本地网络共享的实际上只需要密码认证的加密的文件来说没有本地或者/和简单的实现方案。(Samba不是本地实现的,它是SMB反向工程的实现,并且管理和安装都很难。Samba 4重新实现了许多Linux网络服务/后台进程-这看起来像是来自外太空的瑞士军刀形式的方案)。
  7. 设计的Glibc“泄露”内存。Linux下的火狐浏览器现在使用了自己的内存分配器。KDE的Koncole应用也是用了自己的内存分配程序。这儿Neil Skypuch发布了有关这个问题的非常优秀的说明。
  8. !仅仅(Gnome)没有足够(KDE)人手(X.org)-三个主要的开放源代码项目严重地人员不足。
  9. !Linux/开放源代码开发人员如果不能很容易地再现漏洞,那么他们通常没有兴趣修补漏洞。这个问题几乎困扰着所有的开放源代码项目。
  10. !大量的软件漏洞跨越所有应用。只要看看KDE和Gnome的漏洞跟踪系统-现在一些漏洞已经跟随许多版本复制达十年之久,没有人去解决这些漏洞,KDE/Gnome等等。开发者忙于添加新的特性和破坏老的API,修补漏洞当然是一项单调的和困难的琐事。在2013年仍然大量地破坏了KDE的文件索引。
  11. !过高的学习曲线(甚至在2013年,有时你必须运行命令行接口来完成某些不重要的任务)。
  12. !在Linux内核里有差的递归测试或者几乎没有递归测试(而alsa,另一个开发源代码软件里也一样),这导致这种情况:新的内核可能由于某些硬件配置而整体上不可用(软件挂起不能工作,崩溃,无法启动,网络问题,视频撕裂等等)。
  13. !Linux里的GUI网络管理令人烦恼的事。如果你的网络管理可靠地工作,那么可以认为你自己很幸运。在大多数情况下,网络管理既不能看到已经存在的eth0连接,也不能检测到它,甚至以前你从没有对这个连接做任何配置的情况下。网络管理不能更改你网卡的硬件参数,甚至像MAC地址这样的许多基本参数-在2012年,MAC地址可以修改了。你不能在Wi-Fi上建立PPPoE连接。大多数最近的网络管理发布已经解决了:在微软的Windows和MacOS X里,你可以通过DHCP指定IP地址/掩码/默认网关和自定义DNS服务器-网络管理不支持这样的配置。
  14. 在内核和用户应用之间有很差的互操作性。例如许多内核特性在引入之后若干年才获得相当好的用户实现。
  15. !Linux的安全/权限管理是一件令人苦恼的事:PAM ,SeLinux,Udev,HAL(被udisk/upower/libudev代替),PolicyKit,ConsoleKit和常见的Unix权限管理(/etc/passwd,/etc/group)都有它们各自不兼容的权限管理系统,而且分布在所有文件系统上。人们经常不能使用他们的数字设备,除非他们切换到超级用户。
  16. 没有应用级防火墙(为了清晰地说明这一点-没有方法阻止或者允许某个应用访问互联网,例如/usr/lib/firefox)-SeLinux不能解决这个问题,因为SeLinux策略默认情况下不适用于普通的用户应用,并且SeLinux本身不是防火墙应用 。
  17. 没有(易于使用)的应用级别的沙盒(例如像SandBoxie)-Fedora正在这方面努力着。
  18. (这需要全面的复查):通常观察到很慢:只要比较它们之间的启动时间,例如OpenOffice和微软的Office。如果你不喜欢这个例子,试试在Windows和Linux下启动OpenOffice。后一种情况下启动将花费更长的时间。
  19. !命令行接口(CLI)为用户应用提供错误。所有的GUI应用应该让可以的错误显示出来。
  20. !非常差的文档和缺乏好的手册/帮助系统。
  21. (Fedora,Suse,Mandriva,Ubuntu)的桌面安装存在可疑服务。
  22. !没有统一的广泛应用的包签名和验证系统(因此验证你的发布是否包含这些包渐渐地变成问题)。没有一个中心机构对包进行认证和签名。
  23. (如今认为花费20美元购买4GB的内存不是很严重的问题。)至于最新的Linux发布和桌边环境已经变成了贪婪的资源占有者。例如Ubuntu KDE 4.8.5消耗了非常巨大的1390兆内存。
  24. Linux下没有防病毒或者类似软件。巨乳你打算安装发布里没有包含的新的软件-目前没有任何方法可以检测它是否是恶意软件。
  25. !非常糟糕的向后兼容性和向前兼容性
    •  !由于不稳定或者不断更改内核API/ABI,所以对那些由于许多原因,比如它们是封闭源代码的( NVDIA,ATI,Broadocom等)或者不能控制开发或者合作开发(VirtualBox/Oracle,Vmware/Workstation等等)或者授权问题(4Front技术/OSS),不能把驱动上传到内核的公司来说,Linux就是地狱。
    •  老的应用很少能在新的Linux发布上运行(glibc的不兼容性(双重释放错误,内存误用等),没有这样的库,错误的/新的库版本)。过时的Linux GUI软件通常也不能在较新的Linux发布上运行。大多数书写的很好的windows  95的GUI应用可以在windows 7上运行(二进制级别上的15年的兼容性)。
    •  只连接C库的新的应用拒绝在老的发布商运行(甚至它们与老的发布100%的代码兼容)。
    • 新库的版本存在漏洞,递归和不兼容性
    • 发布的更新可以使你的系统不可用(内核可能引起无法启动,其他功能可能停止运行)。
    • 还有令人迷惑的事:向后兼容性在Linux上不是问题,因为所有的软件都有源代码。然而许多软件不能在较新的发布上编译,只是因为1)过 期,冲突,不再有可用的库和依赖 2)每个GCC发布更严格的遵循C/C++语法 3)用户只是不想编译旧的软件而使自己烦恼,因为他们不知道 如何‘编译’,而且他们应该也不知当如何做到这些。
    •  桌面环境(KDE/Gnome)开发人员平常地主要更改的是UI元素,配置以及行为等等。
    • 开发源代码的开发人员通常不关心超出应用所使用的场景外的行为,也就是说,没有好的理由的话核心应用的开发者不会破坏Loki安装程序使用的头/尾功能。
    • 你不能在长期技术支持的版本里运行新的应用非常频繁 。最近的例子:基于GTK3的软件(没有官方的方法可以在RHEL6上使用)和Google  Chrome(Google决定放弃长期技术支持发布)。
  26. !作者自己PC目前几个严重问题:
       1)我的ALC892音频编码器的最大音量比Windows下要3-4倍。
       2)UEFI模式挂起总是打断启动过程。
       3)RPM包管理器已坏
  27.  慢的(库)连接器,令大脑死亡的慢的连接器,无法容忍的慢的连接器(逐渐得到解决:google使用了黄金连接器)。(binutils连接器与应用的装载无关)。当从Wine启动OpenOffice的windows版本仍然比在Linux版本本身下面花更少的时间。甚至在1G赫兹CPU和慢硬盘的情   况下从Wine启动微软Office 2003只花几秒种。常常仍然没有使用黄金连接器。
      
  28. 其他不着边际的:
    1)KDE:正在解决 Kded4 漏洞
    2)slashdot站点上有关为什么人们仍然愿意使用Windows而不愿意使用Linux的大讨论
    3)slashdot站点上有关为什么Linux仍然缺乏吸引力的另一个大讨论
    4)任何一个KDE的微小更改就可以冻结整个KDE桌面。
    5)slashdot上-为什么桌面Linux仍然不能流行
    6)slashdot上-Torvals猛烈地抨击NVIDIA的Linux支持
    7)是不是开发源代码桌面正在失去竞争力?-slashdot站点(通常的共识是-没有丧失)。
    8)Linux下的Broadcom的Wi-Fi适配器是一个非常令人苦恼的事。
    9)Gnome开发人员对Gnome 3的开发状态很遗憾。
    10)去你妈的长期技术发布:Google说红帽子的企业版6是过时的产品(见鬼?!是真的吗?)
    11)对Gnome 3 API的谩骂。
    12)哦天哪: Ubuntu已经宣布了Mir,X.org/Wayland的替代者。
    13)KDE的邮件客户端不能正确地处理IMAP邮件帐户。
    14)桌面Linux的安全就是一堆垃圾(压缩的微软PowerPoint文件,大约1.3M) 。

  Linux下的软件开发

  1. 稳定的API简直就是废话:你不能在内核树之外开发内核驱动,因为很快它们就与主要的开发版本渐渐不兼容。这就是为什么RHEL和其他长期技术支持发布在企业界流行的唯一原因。
  2. 游戏开发:没有完整的多媒体框架。Flasky OpenGL支持。在2012年开放源代码大会上,GPU驱动仅仅支持OpenGL 3.1(DirectX 11级别的图形需要在OpenGL 4.0里实现的功能。DX10需要OpenGL 3.2里实现的功能)。
  3. 上面提到的许多观点也适应于这个题目,不再重复它们了。

  企业级Linux问题:

  1. 大多数发布不允许你使用这样的配置:Samba,SMTP/Pop3,Apache HTTP认证和FTP的所有用户都是虚拟的就很容易地建立服务器。LDAP也是令人痛苦的事情。对MySQL/其他DB进行认证也是非常痛苦的一件事。
  2. !没有软件(组)策略。
  3. !没有标准的软件部署方法(通过SSH上传软件确实是一个选项,不过没有其他标准的,易于使用的或者鲜明的方法-就像你通过同样的方式使用长柄大锤砸开坚果一样)。
  4. 对现在的世界来说,Unix的权限系统绝对过时且不适合。Posix的ACL系统默认情况下经常是禁止的,并且不是透明的。没有合适的GUI的话ACL非常难于配置,不过KDE的ACL编辑器不能递归性地更改ACL权限,也不能设置默认的ACL权限-使用KDE的实现几乎没有什么用处。这个问题最终在KDE 4.9中得以修补,不过我不能说Gnome/XFCE/LXDE的任何事情都像我那样不能使用它们。
  5. !没有CIFS/AD级别的替代/等同软件(由于许多原因,SAMBA不算在内):1)集中式的且易于管理的用户目录。2)简单的文件共享。3)简单地(局域网)计算机发现和浏览。
  6. 没有针对文件系统的重复数据删除和文件压缩的系统固有产品。根本没有文件系统支持单个文件加密。

  总结

  • 不稳定,漏洞回归回归回归:当用来运行的某些东西毫无理由的中止的时候,(内核和用户空间上的应用)就有惊人数量的回归,许多回归甚至导致数据丢失。总的来说,在大多数开放源代码项目(包括内核项目)里没有质量控制(QA/QC)和回归测试-例如,微软报告Winodws8 进行了1,240,000,000小时的测试后才能有新的内核版本。而每个Linux内核发布比作一个新的Windows版本的话,我猜,应该进行10,000小时以下的测试。妨碍正常工作流的严重的漏洞可能要花几年才能得到解决。许多关键的硬件(比如GPU,Wi-Fi卡)没有得到适当的支持。
  • 硬件问题:Linux下许多设备和设备特性仍然很少得到支持或者根本就不支持。许多硬件(例如Broadcom的Wi-Fi适配器)不能使用,除非你已经有一个可运行的互联网连接。新的硬件经常在引入数个月之后才渐渐得到支持。管理像打印机、扫描仪、摄像机、互联网摄像机,音频播放器,智能电话等设备的专门的软件几乎总是不存在-因此你不能完全控制你的新iPad,并更新你Galaxy SIII的固件。Linux图形支持是个大麻烦,因为内核/X.org的API/ABI不断地在更改,而且NVIDIA/ATI/Broadcom等公司不想分配更多的资源,浪费它们的金钱仅仅去跟随开放源代码软件的疯狂的更改速度。
  • 缺乏标准,碎片化,无保证的而且过多的变体:太多的Linux发布具有不兼容的和不相似的配置,打包系统和不兼容的库。不同的发布为了配置自己的计算机设置完全使用了不同的桌面环境,不同的图形化和控制台应用 。例如基于Debian的发布强迫你使用与维护任务相关的某个系统的严格地基于文本的'dpkg-reconfigure'应用。
  • 开放源代码开发人员之间缺乏合作内部有斗争:没有中心结构组织开放源代码栈的不同部分的开发,这常常导致一个项目引入了更改中断了其他项目(这个问题也反应在下面的"不稳定的API/ABI里)。即使开放源代码运动缺乏人力,不同的Linux发布可以找到医院并进行子项目(Gentoo开发人员将开发一个udev的替代软件;ffmpeg的不一致导致了libav的出现;OpenOffice/LibreOffice也是这种情况;新的X.org/Wayland替代-Mir)而且使用自己的方案(Ubuntu没有使用systemd)。
  • 大量的快速更改:大多数Linux发布都有非常短的更新/发布周期(在一些情况下短刀六个月,或者例如Arch是一个滚动发行版,或者Fedora的更新时每6个月进行一次),因此你经常受到你不期望的或者不需要的更改的炮轰。长期技术支持(LTS)发布大多数情况下不适合桌面用户,因为它们要保留各个版本应用的策略(而且通常没有官方认可的安装前沿应用的方法-请不要给我提及PPA和backports-这些骇客应用没有既没有官方支持,也不保证可运行)。长期技术支持发布的另一个给人印象深刻的问题是长期技术支持发布的内核经常不支持新的硬件。
  • 不稳定API/ABI以及缺乏真正的兼容性:在新的发布里使用旧的开放和封闭源代码的软件是非常困难的(许多情况下,由于核心的Linux组件比如内核,GCC或者glibc发生更改,使得使用旧软件变得不可能)。几乎不存在向后兼容性,这使得为Linux发布创建封闭的源代码应用变得非常困难和代价高昂。没有开发人员或者维护人员参加的开放源代码项目如果它的依赖没有满足就简单地删除,因为较旧的库已经过时而且它们不再可用了。由于这个原因,例如大量的KDE3/QT3应用在现代的Linux发布上已经不可用了,甚至都没有替代的软件存在。在主要的Linux内核树之外开发的驱动是一项折磨人的且昂贵的令人讨厌的工作。Linux下没有WinSxS替代软件-因此没有简单的方法安装相互冲突的库。
  • 软件问题:极少的游戏和极少的符合AAA标准的游戏(Humble的独立游戏套装和突袭油田-两个独立的,很少出现的-在2012-2013年里由几个Valve/Steam标题广告加入的(而Windows每年有几千个游戏发布)不能真正的算在内)。没有熟悉的Windows软件,没有微软的Office(LibreOffice在正确地打开微软Office生成的文档方面还有几个主要的问题待解决),没有本地CIFS(简单的配置和使用,以及密码保护和共享加密的网络文件)的等同软件,没有活动目录或者等同的软件。
  • 金钱,热情,动机和责任:多年前我就预测自由和开放源代码软件(FOSS)的开发人员将开始从这个平台上流走,因为自由和开放源代码软件(FOSS)不再是他们的游乐场。这个平台需要大量的精力和时间,也就是说,娱乐已经结束,开发人员需要真正的金钱才能真正努力的工作。缺乏资金背景的FOSS开发显示出疲乏和理想的幻灭。毕竟FOSS平台需要资金驱动的开发者,因为资金不足的项目开始衰落,而且关键的漏洞一直存在了好多年。有人曾经说“终于解脱了”,然而问题是这些僵死的项目经常没有替代软件或者类似功能的后继者。

 作者的评论

  许多Linux的新用户或者只使用了非常小部分应用的人很快就不会搭理说出像“对我来说,Linux下的音频运行的很好。”或者“Linux下我从没有遇到任何视频问题。“这样的猜猜是什么的全部列表,存在数千个有大量问题的用户,因为他们有各自不同的一套硬件或者软件。自己帮帮自己-去访问Ubuntu或者Linux.com论坛,计算一下包含"我已经删除了PulseAudio,而且现在我的音频可以运行了“或者”我最终发现我能使用最新的驱动而不是 NVIDIA二进制驱动(或者相反),这样我的问题解决了。“

  还有另一个重要的事情是批评者没有理解你的说法。如果某个东西在Linux不能运行,人们不关心是哪个出错了,他们自动地并且确定 地认为这是Linux出错了。对一般用户来说,Linux只是另一个操作系统,他或者她不关心是否某个特定的公司ABC选择不支持Linux或者没有发布全功能的Linux驱动-他们辛苦得到的硬件只要不能运行,就认为Linux不能运行。人们不关心Skype在某个环境下每五分钟就崩溃-即便实际上Skype是一个很糟糕的软件,它有许多小的问题而且有时在Windows和MacOS下也崩溃。

  我想纠正一个常见的误解:Linux对旧软件的支持比Windows要好许多。有部分是这样的,不过还有不是这样的。例如既不是最新的也不是专有知识产权的NVIDIA驱动对旧的NVIDIA的GPU就有很好的支持。最新的OpenGL加速器几乎没有加速。NVIDIA的二进制驱动不支持Xrandr的许多关键特性或者不支持现代LinuxGUI(如Gnome 3 或者KDE4)进行专有的加速所需的功能。假设你的旧硬件仍然得到奇迹般地支持,那么Linux驱动几乎总是只提供Windows驱动所提供功能的一小部分,因此说Linux对硬件的支持更好一点无论怎么说也是不公平的,只是因为你没有花费20分钟去安装驱动。

  一些评论让我惊讶:“这非常糟糕。我的意思是它完全是半真半假的说明和看法。就是那个NVIDIA的优驰(那么不要使用它,请使用Intel或者其他的)。"别扯了,先生!我已经购买了膝上型电脑而且在Wine/双启动下玩了游戏,而你却对我说,首先我不应该买?我恳切地建议你不要把你的看法强加给哪些可以从玩高质量的游戏真正得到快乐的人身上。说SSHFS是Windows文件共享的替代是我整个生命中听到的最荒唐的事情。

  值得注意的是开放源代码社团的最直言不讳的参与者是相当无礼和超级理想化的人,他们蛮横地要求一切都要开放源代码且免费,否则根本就没有权利存在在Linux里。采取这样的态度的话,许多公司完全不理会且回避Linux桌面就毫不令人吃惊了。Linux Torvald曾经谈过这个问题:自由软件世界里总有些“极端分子”,而且这是我不再称呼我所做的为“自由软件”的一个主要原因。我不想把它与那些只是排斥和怨恨的人联系起来。

  最重要的是上面的列表不是一种观点。几乎每个列出的观点都与关注这个观点的文章、主题和讨论相连接,为了证明我没有把它拖出我的<批评>。那么请一直核查你的“是否属实”。

  我不会真正地为把slashdot的评论引用为我这儿所写内容的证明材料而道歉,因为这么做我有一个非常强大的理由-/.crowd非常大,它大部分由聪明人、IT专家、科学家等组成-如果这儿的评论获得晋升为有真知灼见的+5,那么它通常意味着许多人持有同样的观点或者有同样的经历。顺便说一下,如果某人把这篇文正提交到slashdot.org,我将非常高兴(我已经提交给一次,但是我的提交被拒绝了)。我先前曾说过要用”当然“替代”常常“,但是自从这篇文章被称作”歇斯底里的胡话“(反驳见这儿)后,我决定不再使用这个词了。

  如果有人感兴趣的话,那么我可以发布一系列让用户和开发者都觉得Linux适用他们的口味,可用,给他们带来快乐并具有吸引力的必要措施,不过聪明的读者凭借着自己的力量可能已经推断出了一切:-)。

  从好的方面说

  如果你认为Linux很烂 - 那么你就大错特错了。如果我要罗列关于Windows系统的问题,那会跟这个一样长。内部的Windows问题是几乎无法修复的,除非微软公司来处理。相较于此,Linux的问题确实更加用以解决一些。

  幸运的是,目前有几个项目正致力于统一Linux桌面并且使其真正现代化和统一。他们是systemed,Wayland,由Fedora最先提出和实施的文件系统统一,以及其他。Valve Software目前正在针对Linux开发Steam(数字游戏分布和管理系统)和源码引擎,所以Linux用户有机会最终得到几个AAA职称。NVIDIA目前正在探索寻求在Linux下对Optimus的支持。

  Linus Torvalds 坚信现在已经很稳定了 - 尽管我并不赞同这个观点;)。

  Ubuntu开发者已经听过我的意见并且已经创建了一个新的统一打包格式,更多相关信息请点击 这里 和 这里

  附言

  有时我有理由说Linux确实令人讨厌,而且我确实憎恨它。这周(2012年第32周)Alan Cox独自关闭了 两个功能请求,后来也没有提供任何说明、评论、一点儿也没有、空的、什么都没有。Lennart Poettering根本就 关心我想怎样使用 我的系统,而且我甚至不想提到以前以前曾经遇到过的那两个件事情。一般的Linux开发人员这么说:“我是一名开发人员-我更确切的了解用户想怎样使用软件和系统”。最终的结果是大多数创新让大家感到愤怒和讨厌-Gnome 3,Unity,KDE4.0就是强迫Linux用户接受这样的趋势的最好例子.

  再附言

  我猜人人都喜欢开开心心,因此如果你想知道人们怎么到达这个页面的,这儿有一个导向这个页面的非常不完整的Google查询列表:2012年10月的关键词列表可在 这儿找到,字体相关的关键词列 在这儿

  字体问题:假如你已经到达了这个页面,那么你仍然需要好的/最佳的/顶级的/免费的Linux字体, 从这儿下载这些字体。

  好像许多人来这个站点是为了寻找 2013年最佳的桌面Linux发布的。

  © 2009-2013 Artem S.Tashkinov.最近修改2013年5月26日,最新版本在 这儿可以找到

  英文原文:Major Linux Problems on the Desktop 2013 edition

QQ群:WEB开发者官方群(515171538),验证消息:10000
微信群:加小编微信 849023636 邀请您加入,验证消息:10000
提示:更多精彩内容关注微信公众号:全栈开发者中心(fsder-com)
网友评论(共0条评论) 正在载入评论......
理智评论文明上网,拒绝恶意谩骂 发表评论 / 共0条评论
登录会员中心