Linux桌面软件兼容性问题_linux 最漂亮的桌面_Linux桌面市场份额

流量检测机构StatCounter的最新数据表明,截止2024年12月,Linux在全球桌面操作系统市场份额仅为4.13%。这相较其在服务器市场的广泛应用,桌面端的表现堪称差强人意。这么,是哪些诱因引起了这一现况?

日前,开源运动和开源项目的忠实支持者ArtemS.Tashkinov发布长文进行了解析,企图解开其中的真相。

Linux桌面市场份额_linux 最漂亮的桌面_Linux桌面软件兼容性问题

原文链接:

以下为译文:

多年前,我写过一篇关于这个主题的文章(

),相较而言,那篇文章过分技术化、篇幅过长,还包含许多有争议的观点,因而我思索了许久,决定将其完全重画,使其更便于非技术人士理解,并阐明出这些使Linux一直无法匹配现代桌面PC的深层核心问题。

十多年前写的初版文章曾颇受欢迎,但现在这个网站的访问量十分少,由于PC早已或多或少地被淘汰了:世界上的大多数人都依赖智能手机完成一切。而PC主要被企业、专业人士、硬核PC游戏玩家以及PC感冒友所使用。

再度申明,与旧文章一样,我想明晰一点:Linux完全可以满足你的个别需求,尤其是当这种需求主要集中在将笔记本用作Web顾客端时。只需启动Firefox或Chrome就可以搞定(其实,前提是你足够辛运,系统上的硬件视频加速功能才能正常运行。但是虽然到了2024年,硬件加速一直是个问题,而Windows早在近二六年前就几乎完美解决了视频编码和解码加速问题)。

须要指出的是linux 最漂亮的桌面,这篇文章讨论的是Linux发行版,而非特指Linux内核。单独的Linux内核本身在没有应用程序运行时是毫无益处的。

Linux适宜IT专业人士。这篇文章关注的是普通用户的使用体验,即这些不愿接触终端或学习Shell命令的用户。

接出来,让我们逐一讨论以下核心问题。这种问题若果没有人投入十亿美金以上的资金,几乎不可能得到解决:

Linux并不是一个操作系统

当人们谈论操作系统时,一般想到的是一个核心操作系统,配备大量的软件红旗linux,这种软件可以在不同版本的操作系统上运行。诸如,Windows上的许多软件即使是20年前开发的(没错,20年!),在Windows11或其当前版本中仍然能正常运行。Android15(截止2024年的最新版本)支持自Android7.0起发布的所有Android软件,确保了超过8年的兼容性。

实际上,你甚至可以安装和使用更老的应用程序。而在Windows上,软件兼容性更是出众:许多32位的Windows95软件在接近30年后仍然可以完美运行于64位的Windows11。Linux上却完全不存在这样的情况。

Linux桌面软件兼容性问题_Linux桌面市场份额_linux 最漂亮的桌面

这正是Linux发行版的问题所在。对Linux发行版来说,软件的首选分发方法是为每位操作系统版本单独编译。而这些方法并不保证兼容性,大多数时侯,过去版本的软件根本没法在你当前的Linux发行版上运行。

更糟糕的是,为当前版本的LinuxX编译的软件,不一定能在当前版本的LinuxY上运行。Linux发行版普遍要求所有软件必须为其当前版本编译,或则以源代码方式提供。

但是,源代码的困局在于:普通用户不会乐意自己编译软件linux 最漂亮的桌面,其次,虽然有兴趣,也不一定能成功编译,由于软件可能依赖于特定的编译器或依赖库,而你的发行版可能不提供这种资源。据悉,各个发行版还须要维护者来支持这种软件,假如没有人乐意承当维护工作,你在该发行版中根本找不到所需的软件。

其实,熟悉Linux的读者可能会提及Linux提供了Flatpak、Snap和AppImage。这种技术企图解决软件兼容性问题,但我不会深入剖析它们的不足(

)。简单来说,它们实际上是轻量级的虚拟机。这种工具的核心原理并非真正解决兼容性问题,而是通过让用户分配并运行大量的二补码代码来规避问题,结果却毋须要地消耗储存空间、CPU和显存资源。更令人无语的是,你可以轻松地在Windows的WSL(WindowsSubsystemforLinux)中运行它们。这么,最初为什么要在笔记本上安装Linux呢?

据悉,这种工具还有另一个主要问题:软件必须被某人以轻量级虚拟机的方式打包。只有最流行的软件才能得到这样的处理,因而这些以前用过的小众应用可能永远没法使用。在64位Windows11上,与此产生鲜明对比的是,过去30年中发布的大多数软件几乎都能完美运行。我这儿并不是在讨论游戏(许多游戏确实不兼容),但这并非由于Win32的兼容性差,而是由于当时的游戏开发者没有为未来做好打算。

换句话说,每位Linux发行版都是一个独立的操作系统。至于普通用户该选择哪一个?没有人能给出明晰的答案,但是关于那个发行版“更好”或“更合适”的争辩永无止境。

有人可能会斥责说:“这些问题根本不存在!”那么,LinusTorvalds这个名子你应当据说过吧?他在2014年时几乎和我说了同样的话(

)!但是,从那时起情况有任何改变吗?绝对没有。

Linux发行版之间惟一真正的兼容性彰显在它们使用相同的Linux系统调用(这部份内容具有一定技术性)。理论上,这意味着静态链接的应用程序应当可以在所有发行版中通用。但是,现实中常常并非这么。诸如,近来许多Linux用户早已迁移到Wayland,有些人甚至完全移不仅XWayland。结果是,静态链接的X11应用程序没法再为那些用户提供服务。类似地,随着Linux的发展,许多技术早已被淘汰。

比如,基于ESound或OSS的应用程序现在难以使用,由于现代Linux发行版完全不再包含ESound或OSS,无论是以模拟还是兼容层的方式。再如,旧版系统中的devfs、libc5和a.out二补码文件也已经被淘汰,且没有任何现代代替方案或向后兼容支持。

QA/QC、Bug和回归问题

你无需理解上述所有术语,但核心问题是:Linux一直处于持续变化的状态。

回归(问题再现)时常发生,由于Linux开发者极少甚至完全不花时间检测她们的代码修改是否会引入回归或破坏原先正常的功能。她们一般只关注修补她们企图解决的问题或实现的新功能。

除了这么,Linux内核开发者一般难以接触到她们正在支持的所有硬件设备。因而,对一个设备的修改可能会影响到另一个开发者无法测试的设备。比如,在AMDGPU的Bug追踪器中,你会看见AMD开发者的申明:“抱歉,我们没有那个硬件,能够帮忙测试这个补丁?”

这些问题影响了多个Linux组件,从Linux内核到MESA(图形卡与操作系统之间的插口),甚至包括桌面环境。

软件和游戏的缺少

绝大多数应用程序仅为Windows开发。至于游戏,Linux多年来几乎没有原生的AAA大作,用户基数太小是主要诱因。虽然是CS2(反恐精英2),尽管有Vulkan的Linux版本,但其性能远不如原生Windows版本。据悉,虽然CS2拥有数百万玩家,但它很难被视为AAA大作,由于它基于已超过六年的Direct3D11,缺少光线追踪等现代光影技术。

的确,许多Windows游戏可以通过Wine+DXVK(Linux上的Win32API仿真)运行,但既然这么,直接用Windows不是更好吗?

据悉,好多游戏永远没法运行,尤其是这些拥有数百万玩家的在线多人游戏,由于它们须要内核级别的反作弊系统。典型的Linux用户可能会说:“我不玩这种游戏,你也不须要!去买个索尼PlayStation吧!”

但对于Windows用户来说,几乎所有的Linux应用程序都可以轻松运行。

更糟糕的是,Linux缺少个别特别基础的应用程序,甚至连检测系统性能是否正常的工具都没有。

本地网路上的文件和文件夹共享问题

Linux没有类似于Windows文件共享的原生技术,既便于配置,又支持手动发觉、加密和密码保护。目前Linux使用的Samba技术在设置共享文件夹时十分麻烦,尤其是在使用SELinux(中级安全机制)的发行版中。用户须要创建帐户、分配和修改密码,同时还要处理文件夹权限问题。

一些极客宣称SSHFS和NFS是挺好的取代方案,但这种工具十分不友好,功能受限,设置过程须要大量精力并阅读繁杂的指南。个别功能,例如用户/组的细细度控制,几乎难以实现。

虽然是Samba,假如须要多个用户和组的细细度权限控制,配置过程也十分复杂。更别提使用图形界面了,这一切几乎都要通过命令行完成。

资金不足

Linux上的许多软件都有大量Bug和功能缺位。这是由于Linux在桌面领域资金严重不足。其实Linux在服务器领域无可媲美,连续二十多年成为全球最流行的操作系统,但桌面领域的情况却相当低迷。

Linux在服务器上运行良好,主要是由于绝大多数资金都流向了服务器领域。但桌面用户须要面对显示器工作,还要处理音频输入和输出问题。

影响服务器提供商(如Google、Facebook和Netflix等)的Bug一般会被立刻修补,优先级特别高。但影响Linux音视频子系统的Bug可能会持续数年。诸如,Linux音频子系统的活跃维护者可能不超过三人。

硬件支持与兼容性

对于全新硬件,你可能会发觉电脑的Wi-Fi网卡、摄像头、音频甚至按键未能正常工作。这是由于在Windows中有稳定的驱动API(应用程序插口)和ABI(应用程序二补码插口),OEM厂商可以从一开始就发布驱动并确保正常运行。而在Linux中,硬件支持取决于你运行的内核版本。有时须要几个月甚至几年时间,Linux能够支持你的硬件。

其次,OEM厂商为Linux驱动工作的开发者数目一般比Windows少10到100倍。这意味着个别Bug可能会持续数月、数年,甚至永远不会被修补,由于开发人员有更高优先级的任务。

第三个问题是,Linux程序员的数目不足以确保代码库的修改完全无Bug。

最后,因为Linux的驱动一般是内核的一部份(NVIDIA等少数例外),你没法随便升级到最新版本或降级到之前能用的版本。必须切换到另一个内核版本,这既麻烦又不总是可行。

碰巧遇见的Linux安全性

Linux在桌面上的安全性几乎是“偶然的”或者“纯靠运气”。服务器的情况稍为好些,但也须要由高水平专业人士来管理。以下是一些典型问题:

大多数Linux用户随便使用sudo命令(授予系统完全访问权限),并不理解其必要性和用途。Linux缺少建立的原生杀毒软件,未能通过沙盒或仿真等方法扫描恶意软件。许多用户从网上下载并运行软件,但未验证其是否安全。大多数Linux用户会直接运行来自网上的命令,而不会确保那些命令的功能和安全性。从内部来看,Linux的安全机制十分复杂,或则用AI的话来说就是:“Linux并不总是提供一个用户友好的界面来实时处理权限问题。”当你须要在用户组之间正确共享资源时,祝你好运,试着设置好目录和文件的权限吧。许多Linux用户禁用了SecureBoot,诱因如下:

我把前面列举的内容交给了一款AI工具来作答,AI的回答是:“这些问题部份属实,责任主要在缺少经验的用户linux启动盘制作工具,用户须要使用她们的软件储存库。”好吧,那我们来瞧瞧:

“归根结底,这种问题是真实存在的,但并非不可解决。它们反映了Linux在易用性和兼容性上的改进空间,同时也突出了用户教育的重要性。”

但是,我奇怪的是,Windows、iOS、macOS或Android其实并不须要太多“教育”。似乎,这只是由于个别东西的设计本身存在缺陷?

Linux社区

可以肯定的是,你在使用Linux时一定会碰到问题。而当你企图寻求帮助时,就接见识到Linux社区的“真面目”。按照我在过去25年互联网经历中的观察,Linux社区有时会变得愈加具有挑战性,甚至是令人不悦的。

以下是你在提问时最有可能收到的“回答”:

总结

其实你会说:“Linux绝对适宜我,对我来说完全没问题。”当然,这些情况对于好多个人而言也普遍存在。并且,每位人的需求可能不同。比如,有人可能希望在Linux上运行旧软件。

但是,你是否觉得自己是极客?很有可能是的。这么,对于这些普通用户来说呢?她们可能既不想接触终端,也不想研究Linux的复杂性。她们只想安装、运行,而不须要多想。

好吧,这么该怎么解决这种问题?初期的文章对此问题有过专门的讨论:

假如须要更技术性的剖析,可以参考以下文章:《2023年Linux桌面端的主要问题》(

)。

作者:ArtemS.Tashkinov是开源运动和开源项目的忠实支持者。他参与了多个开源项目(如Linux内核、KDE、Wine、GCC、MidnightCommander和等)的Bug修补。他自1999年起开始专用Linux发行版。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复