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


29

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


可能只是为了节省带宽...
drnessie 2011年

1
AFAIK sudo apt-get install可以安装任意数量的软件包。您需要知道软件包名称。
sagarchalise,2012年

@drnessie不,不是!如果使用apt-get同时安装两者,则将同时下载它们,然后一次只安装它们。
阿尔瓦(Alvar)2012年

@Alvar好的。我已经在Linux Mint中做到了。但是在Ubuntu中尝试同样的方法是行不通的。怎么做?
MycrofD 2014年

@MycrofD你在想什么?
阿尔瓦(Alvar)2014年

Answers:


29

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

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

让我详细说明:

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

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

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


实际上,apt-get可以下载软件包而无需安装它们,尽管我不是100%确信可以与锁定的数据库一起使用……
JanC 2012年

同时下载和安装可能在Linux Mint中进行。它不在Ubuntu中。
MycrofD 2014年

2
@MycrofD:我真的不知道该评论的意义。当然,您可以使用Ubuntu一次下载多个软件包。您只是无法使用apt-get和基于它的工具来做到这一点。显然,无论您在谈论哪个发行版。
Jo-Erlend Schinstad 2014年

10

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

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

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


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

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

使用官方Windows安装程序(MSI)的软件包将拒绝一次运行多个实例。那是因为MSI安装程式资料库与sources.list,dpkg信息文件等。您不希望一次安装或修改多个安装程序。

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


1
如果我没看错,那么可以同时运行许多应用程序sudo,但是在包管理方面,由于给定了运行时间,因此只有一个这样的应用程序可以在给定的时间安装或删除包,因为运行apt可以锁定sources.list尝试运行其他程序包管理应用程序,则该程序不会锁定该文件,因此不会运行。
库沙尔(Kushal)2012年

@Kush它很容易被人使用,对不起,距离我收到该错误已经很长时间了。
阿尔瓦(Alvar)2012年

@Rinzwind这是什么意思?:)
Alvar

2
@Alvar:编辑为在底部包含类似的Windows行为:不想让人们误以为Windows某种程度上是“优越”的;)
ish 2012年

1
@Alvar ...非常感谢!!这清除了我的基本知识。;)
Nirmik

7

首先,要知道这个答案是根据我对dpkgand的经验收集的apt。我没有查看实际的软件中心代码来确定这一点。

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

dpkgUbuntu用于软件包的系统的一部分包括“锁定” /var/lib/dpkg/lock文件以防止多个dpkgapt-get并且Ubuntu Software Center是前端)覆盖其自身以及其他不良行为。

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

发生这种情况时,将启动一个锁定。一旦添加了多个要安装的软件包,接下来将发生的事情是直到第一个完成后才开始下一个apt命令。


4

如果同时安装所有软件包,则仅需执行一次操作,例如刷新菜单,索引字体和重新配置库。第二个优点是希望不会经常发生,但是,如果您要安装彼此排斥的软件包,请在下载所有软件包之前先了解一下。

当您一次安装或升级许多软件包时,最后一个优势最为重要:如果必须回答问题,则在安装过程中所有问题都会互相追问。因此,您可以继续工作,而不是每隔5分钟就被另一个问题困扰。


您在那里有一些有趣的观点。:)
Jo-Erlend Schinstad 2011年

2

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

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

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


0

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

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

    CD /家庭/用户/应用

  3. 然后再次输入

    须藤dpkg -i * .deb

等到安装完成。


1
仍然会一一安装.deb文件。并不是OP的要求-他希望同时安装多个.deb文件。
ish 2012年

-1

您可以在其他程序正在安装时(例如在terminal1中)下载该程序包

sudo apt-get install vlc

然后在另一个终端2中下载另一个软件包

sudo apt-get download openssh-server

查看apt-get可用的其他选项,请参考其man简单类型

apt-get <press tab on your keyboard>

这不能回答问题。
贡伯特

@guntbert我回答了问题的第二部分,他说:“或者相反,为什么软件中心在安装另一个应用程序时却不下载应用程序”,我认为他断言在安装过程中无法下载另一个软件包另一个错误。
marengz 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.