网站搜索

我每天使用 Fedora Linux,但这三件事让我抓狂


当你输入dnf search时那种恐惧感——你并不是唯一。仅仅为了找到一个软件包而等待一分钟是Fedora用户普遍的抱怨。DNF的慢速度、Copr缺乏有用的软件包以及Fedora的巨大升级让我感到非常烦躁。

在我进入细节之前,我应该注意几点。我通常对Fedora没有太大意见,除了后面提到的不满。我日常使用Qubes,而Fedora是可以方便使用的虚拟机模板之一。对我来说,大多数Linux发行版本质上是相同的,除了可用的软件包和包管理器。恰好我对Fedora的不满正是它的可用软件包和包管理器。当一个发行版在这方面做得不好的时候,那就是一个大问题。

地下城与勇士真是慢得令人痛苦

我只偶尔使用DNF,总是忘记它有多么慢。通常,我只是想快速搜索一下看看某个软件包是否存在于仓库中,每当我这样做时,所有对DNF的负面情绪又会涌上心头。

通常,包管理器会让你快速执行搜索,不过DNF则不然。在DNF执行任何操作之前,它必须先刷新缓存(它的所有软件包的列表)。发行版通常将不同类型的软件(免费、非免费等)分成多个仓库,这意味着需要下载多个缓存。对于这些仓库,Fedora还有一个额外的updates仓库。一个典型的安装需要4个总仓库,而安装了Copr仓库(稍后会提到Copr)后,这个数字很容易增加到10或20个。我个人有15个。

问题在于DNF不进行并行缓存更新;相反,它是一个接一个地下载每个缓存文件。这意味着它必须在转到下一个之前等待建立和拆除每个HTTP连接,这样速度很慢。因为DNF会自动更新缓存,所以偶尔执行搜索时,我必须等大约1分钟才能得到结果。这让我非常沮丧。

APK、pacman、APT、信鸽和FedEx的速度都比DNF快。所有这些都不需要我先更新缓存(这是真实的;反驳我)。DNF要求我使用--cacheonly标志来跳过更新缓存(我经常忘记这一点)。然而,还有希望,一个启用并行缓存下载的功能正在筹备中。但该管道的交付部分也是DNF,所以如果我现在开始下载,它可能会在2030年前到达。

Copr 缺少软件包

像AUR一样,Fedora有自己的社区维护的软件,通过Copr来提供。任何人都可以发布软件包,但似乎没有人这样做。别误解我的意思,Copr上有很多软件,但从来没有我需要的软件。这让我羡慕AUR。

我之前用 Arch Linux(顺便说一下)很多年,它的一个最佳特点是 AUR。我持续使用 Arch 是因为我不想放弃 AUR。虽然安装社区维护的软件包有一些风险,但它们的便利性通常是决定性的。通过 AUR,我几乎可以找到任何东西,当我找不到时我感到惊讶。如果你感兴趣,可以从我们的指南中了解更多信息,该指南解释了 AUR。

除此之外,通过Arch的PKGBUILD文件(安装脚本)创建AUR包是简单的,因为它们易于学习、阅读和编写。另一方面,Copr并不简单。Fedora使用RPM包格式,打包自己的软件有很陡峭的学习曲线,所以我从来没有去尝试。我认为这也是Copr上缺少包的主要原因之一。

让我烦恼的不是缺少软件包,而是每次我从Copr安装东西时,它都会添加另一个软件仓库。这加剧了之前描述的DNF问题,导致它变得非常缓慢。

升级是一项令人畏惧的工作

随着年龄的增长,时间似乎在加快转动,这遗憾地意味着 Fedora 的升级似乎也来得更快了。升级是痛苦的,但当我的包管理器非常慢时,这些升级变成了一项艰巨的任务。我更喜欢 Arch Linux 的滚动版本模型,它以小的增量进行升级。是的,软件偶尔会出现问题,但更新速度快且频繁。

DNF 升级不仅需要几个小时才能完成,而且总是会遇到一些额外的问题。我没有耐心去照看升级,所以我经常使用适当的标志来让它随意处理,但不幸的是,这意味着它偶尔会(而且默默地)卸载一个重要的软件包,例如 Pulse Audio 软件包。我的系统能启动吗?通常能。它能正常工作吗?算是吧。我可以观看 YouTube 视频,但我能听到声音吗?不能。现在我必须花一个下午来弄清楚原因。

也许这种痛苦只是使用Linux的成本。Linux发行版是依赖关系和软件版本的地狱,而Linux发行版如此良好运行证明了其维护者的技巧和辛勤工作。然而,DNF仍然让我抓狂。


不过并不是所有都不好,因为Linux在过去10年中发展了很多,现在安装软件比以往任何时候都更容易,尤其是通过非软件包管理器的方式。事实上,为了解决Copr缺少软件包的问题,我使用Distrobox独立于任何发行版添加软件。我不再需要羡慕AUR,因为我现在可以随时访问它。

此外,随着即将推出的 DNF 更新,它将支持并行缓存下载,我希望这能使 DNF 在速度上与其他包管理器看齐。然而,在 Fedora 上分发升级始终是一项繁琐的工作。