为什么软件中心不允许多次下载?

为什么软件中心不允许多次下载?

我想知道为什么软件中心不下载所有请求的应用程序并在下载完成后逐个安装。或者为什么软件中心不下载一个应用程序而另一个应用程序正在安装

答案1

这是个好问题。这是因为它基于与 apt-get 和其他工具相同的软件包工具。这些工具的设计方式是要求您提供所有要安装的软件包,然后其余的都是自动的。在大多数情况下,这非常好,但对于软件中心来说,它会导致一些问题。您要么需要先选择要安装的软件包,然后单击按钮来实际下载和安装它们,要么必须将应用程序排队,然后逐个下载和安装。如果您要安装一个应用程序,这比必须使用那些额外的点击提供了更好的用户体验,但在您“购物”时也会很烦人。

这是可以修复的,所以我期望将来能够解决这个问题,但这确实意味着重新创建或重写现有工具,因此我认为它不会具有很高的优先级。

让我详细说明一下:

一个软件包可能依赖于其他软件包。如果这些软件包不可用,则无法安装该软件包。因此,像 apt-get 这样的工具会首先下载您要求的所有软件包以及它们所依赖的所有软件包等,然后安装所有这些软件包。因此,您通常会一次性提供所需的所有软件包,然后它们会先被下载,然后被安装。

当您选择在软件中心安装应用程序时,您通常希望它立即开始下载和安装。但为了确保一切正常,一次只能进行一次安装。这就是为什么当您安装应用程序时,您必须等到该应用程序完全下载并安装后才能开始下一次下载和安装。

可以通过不使用 apt-get 安装软件包,而是手动下载软件包,然后在软件包准备好后使用 dpkg 安装来解决这个问题。您仍然无法同时安装两个软件包,但您可以在之前开始的安装完成时开始下载新软件包。在某些情况下,这会节省相当多的时间,所以这是一个好主意。但在大多数情况下,这并不重要,所以最好把精力集中在其他地方。

答案2

使用 一次只能安装一个包sudo apt-get install,但你可以用一个命令安装多个包。像这样:

  • sudo apt-get install ubuntu-desktop lubuntu-desktop

这将按照正确的顺序安装和以及它们所需的任何依赖项ubuntu-desktoplubuntu-desktop

另外,当您使用更新系统时sudo apt-get upgrade,您首先下载所有软件,然后一次安装一个包。

原因
无法一次安装多个软件包的原因是,apt-get同一时间只有一个实例可以使用权限。这是因为apt-get锁定了权限software sources,并阻止任何其他命令使用权限。

一个例子
假设你以某种方式启动了两个单独的 apt-get,正如@Rinzwind 所说,那么理论上你至少可以在使用它来查找和安装新软件的同时编辑源列表。这可能会导致你安装的程序在你升级系统的同时编辑源列表并添加不安全的存储库。这可能是一个安全问题。

另一个例子
此外,如果您使用 2 个单独的命令编辑源列表,那么当您保存时,您将替换最新版本,即最后保存的版本。这意味着中间的命令不会产生任何效果,因为您将保存旧版本。


Windows 使用“官方”(MSI)安装程序时的行为类似

即使在 Windows 中,也可以同时安装多个软件...这样做有什么好处吗?或者为什么在 linux/ubuntu 等中这是必要的?

使用官方 Windows 安装程序 (MSI) 的软件包将拒绝同时运行多个实例。这是因为 MSI 安装程序数据库类似于sources.list、dpkg 信息文件等——您不希望多个安装程序同时修改/锁定它们。

但是许多 Windows 软件包使用第三方安装程序,如 Installshield、NSIS 等,它们将同时运行,因为它们不需要访问/修改 MSI 数据库。同样,在 Linux/Ubuntu 中,没有人会阻止您同时运行、和 perl/bash 安装脚本apt-get:)tar -xzf

答案3

首先,请知悉,这个答案是根据我使用和的经验得出的dpkgapt我还没有查看实际的软件中心代码来确定这一点。

这是底层软件设计的限制。

Ubuntu 用于软件包的系统的一部分dpkg包括“锁定”文件的功能,/var/lib/dpkg/lock以防止多个dpkgapt-getUbuntu 软件中心是前端)覆盖自身和其他不良、邪恶的东西。

当你安装软件时会发生什么? 它会启动sudo apt-get install chromium-browser(以 Chromium 为例)。

当发生这种情况时,锁就会启动。一旦添加多个要安装的包,接下来发生的事情是,它会等到第一个包完成后才开始下一个apt命令。

答案4

两个 apt-get 实例无法同时运行的原因是应用程序正在读取/写入几个对系统操作至关重要的文件。当一个 apt-get 操作读取或写入一个文件时,另一个正在对该文件执行相同的操作,这将导致配置错误和/或文件损坏的问题。因此,当一个 apt-get 操作发生时,它会“锁定”所需的文件,以便无法同时执行另一个操作,也就是说,它会发出一个标志,告诉其他操作这些文件当前正在使用中。

但是,使用 apt-fast 命令可以同时下载 apt 所需的文件(或者说从多个来源下载)

https://github.com/ilikenwf/apt-fast

相关内容