我想知道为什么软件中心不下载所有要求的应用程序,并在完成下载时一一安装。或者相反,为什么软件中心在另一个正在安装时不下载应用程序
sudo apt-get install
可以安装任意数量的软件包。您需要知道软件包名称。
我想知道为什么软件中心不下载所有要求的应用程序,并在完成下载时一一安装。或者相反,为什么软件中心在另一个正在安装时不下载应用程序
sudo apt-get install
可以安装任意数量的软件包。您需要知道软件包名称。
Answers:
这是一个好问题。这是因为它基于apt-get和其他人使用的相同打包工具。这些软件的设计方式是希望您提供所有要安装的软件包,然后其余的都是自动的。在大多数情况下,这非常好,但是对于软件中心而言,这会引起一些问题。您可能需要先选择要安装的软件包,然后单击一个按钮以实际下载并安装它们,或者必须将应用程序排入队列,然后逐个下载并安装。如果您要安装一个应用程序,则比使用这些额外的点击会提供更好的用户体验,但是在“购物”时也很烦人。
可以解决此问题,因此我希望将来会对此进行补救,但这确实意味着重新创建或重写现有工具,因此我认为它不会具有很高的优先级。
让我详细说明:
一个程序包可能依赖于其他程序包。如果这些软件包不可用,则无法安装该软件包。因此,像apt-get这样的工具将首先下载您要求的所有软件包以及它们依赖的所有软件包,等等,然后再安装所有这些软件包。因此,您通常可以一次性提供所需的所有软件包,然后将它们首先下载然后安装。
选择在软件中心中安装应用程序时,通常会希望该应用程序立即开始下载和安装。但是,为了确保一切正常,在任何一次只能进行一次安装。因此,在安装应用程序时,必须等到该应用程序完全下载并安装后,才能开始下一次下载和安装。
可以通过不使用apt-get来安装软件包来解决此问题,而是手动下载软件包,然后在准备好之后使用dpkg来安装它们。您仍然无法同时安装两个软件包,但是您可以在先前开始的安装完成时开始下载新软件包。在某些情况下,这样可以节省很多时间,所以这是一个好主意。但是在大多数情况下,这并不重要,因此可以将精力集中在其他地方。
您一次只能使用安装一个软件包sudo apt-get install
,但可以使用一个命令安装多个软件包。像这样:
sudo apt-get install ubuntu-desktop lubuntu-desktop
这将同时安装ubuntu-desktop
和lubuntu-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安装脚本:)
sudo
,但是在包管理方面,由于给定了运行时间,因此只有一个这样的应用程序可以在给定的时间安装或删除包,因为运行apt
可以锁定。sources.list
尝试运行其他程序包管理应用程序,则该程序不会锁定该文件,因此不会运行。
首先,要知道这个答案是根据我对dpkg
and的经验收集的apt
。我没有查看实际的软件中心代码来确定这一点。
这是底层软件设计的限制。
dpkg
Ubuntu用于软件包的系统的一部分包括“锁定” /var/lib/dpkg/lock
文件以防止多个dpkg
(apt-get
并且Ubuntu Software Center是前端)覆盖其自身以及其他不良行为。
安装软件时会发生什么?发生的事情是它开始sudo apt-get install chromium-browser
(以Chromium为例)。
发生这种情况时,将启动一个锁定。一旦添加了多个要安装的软件包,接下来将发生的事情是直到第一个完成后才开始下一个apt
命令。
如果同时安装所有软件包,则仅需执行一次操作,例如刷新菜单,索引字体和重新配置库。第二个优点是希望不会经常发生,但是,如果您要安装彼此排斥的软件包,请在下载所有软件包之前先了解一下。
当您一次安装或升级许多软件包时,最后一个优势最为重要:如果必须回答问题,则在安装过程中所有问题都会互相追问。因此,您可以继续工作,而不是每隔5分钟就被另一个问题困扰。
apt-get的两个实例不能同时运行的原因是因为应用程序正在读取/写入几个对系统操作至关重要的文件。通过apt-get操作读取或写入文件,而另一个执行该操作时会导致配置错误和/或文件损坏的问题。因此,当执行apt-get操作时,它会“锁定”所需的文件,因此无法同时执行另一个操作,也就是它会引发一个标志,告知其他操作文件正在使用中。
但是,可以使用apt-fast命令同时下载apt所需的文件(或者从许多来源下载)。
您可以在其他程序正在安装时(例如在terminal1中)下载该程序包
sudo apt-get install vlc
然后在另一个终端2中下载另一个软件包
sudo apt-get download openssh-server
查看apt-get可用的其他选项,请参考其man简单类型
apt-get <press tab on your keyboard>