当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

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

最佳解决办法

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

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

让我详细说明:

包可能依赖于其他包。如果这些软件包不可用,则无法安装软件包。因此,像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个单独的命令中编辑源列表,那么当您保存时,您将替换最新版本,这将是它最后保存的版本。这意味着中间的命令不会产生任何影响,因为您可以保存旧版本。


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

Even in Windows,multiple softwares can be installed simultaneously … is there an advantage in this or why this is a necessity in linux/ubuntu,etc…

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

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

第三种解决办法

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

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

Ubuntu用于包的dpkg系统的一部分包括”locks” /var/lib/dpkg/lock文件的功能,以防止多个dpkg(apt-get和Ubuntu软件中心是前端)覆盖自身和其他坏的,邪恶的东西。

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

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

第四种办法

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

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

第五种办法

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

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

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6212.html,未经允许,请勿转载。