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

Jes*_* ii 31 software-center package-management apt

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

Jo-*_*tad 30

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

有可能解决这个问题,所以我希望在未来,这会得到补救,但这确实意味着重新创建或重写现有工具,所以我认为它不会有很高的优先级。

让我详细说明:

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

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

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

  • @MycrofD:我真的不知道该评论的重点是什么。当然,您可以使用 Ubuntu 一次下载多个软件包。你不能用 apt-get 和基于它的工具来做到这一点。这显然与您谈论的发行版无关。 (2认同)

Alv*_*var 11

一次只能安装一个包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并阻止任何其他命令使用它们。

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

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


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

即使在 Windows 中,也可以同时安装多个软件......这是否有优势,或者为什么这在 linux/ubuntu 等中是必需的......

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

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

  • @Alvar:编辑以在底部包含类似的 Windows 行为:不希望人们误以为 Windows 以某种方式“优越”;) (2认同)

jrg*_*jrg 7

首先,让大家知道这个答案是我从我对dpkg和 的经验中收集到的apt。我还没有查看实际的软件中心代码来确定这一点。

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

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

安装软件时会发生什么?发生的事情是它开始sudo apt-get install chromium-browser(以 Chromium 为例)。

当这种情况发生时,锁就会启动。一旦添加了多个要安装的包,接下来会等待第一个包完成,然后再启动下一个apt命令。