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

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

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

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

让我详细说明:

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

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

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

您只能使用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个单独的命令中编辑源列表,那么当您保存时,您将替换最新版本,这将是它最后保存的版本。 这意味着中间的命令不会产生任何影响,因为您可以保存旧版本。


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

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

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

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

首先,让我们知道这个答案来自我从dpkgapt经验中得到的答案。 我没有看过实际的软件中心代码来确定这一点。

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

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

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

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

如果所有软件包同时安装,某些操作(如刷新菜单,索引字体和重新配置库)只需执行一次。 希望第二个优势不应该经常发生,但是如果你想安装在下载所有这些之前就已经知道它的另外一个包。

当您同时安装或升级许多软件包时,最后一个优势是非常重要的:如果必须回答问题,那么在安装过程中它们都将在彼此之后完成。 因此,您可以继续工作,而不是每5分钟通过一个不同的问题进行窃听。

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

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

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

一次安装多个文件的简单方法,请按照下列步骤操作

  1. 复制所有安装文件夹,例如:/ home / user / apps
  2. 打开终端并输入:

    CD /家庭/用户/应用程序

  3. 然后再次键入

    sudo dpkg -i * .deb

等到安装结束。

你下载了包,而另一个正在安装,例如在terminal1

 sudo apt-get install vlc 

然后还在另一个terminal2下载另一个包

 sudo apt-get download openssh-server 

要查看apt-get提供的其他选项,请参阅其简单类型

 apt-get