dpkg -i和apt-get install之间的区别


16

从所有其他问答中(例如:dpkg和aptitude / apt-get有什么区别?),我知道这apt-get是一个包装,dpkg并提供了依赖性管理。

假设我要安装的东西没有任何依赖性(或者它们也同时安装),那么使用apt-getvs 安装它之间会有什么区别dpkg

例如(我正在寻找的具体差异)

  • 如果说dpkg不能从某个地方下载pkg,我必须在开始安装之前下载,而apt-get我将代表我这样做。
  • dpkg不会配置pkg,它只会复制文件。apt-get也会配置。

...

Answers:


16

dpkg -i安装*.deb软件包,也就是说您已经从某个地方下载了软件包。它还配置它们,但不下载/安装依赖项。您需要从某个地方手动下载二进制软件包文件。从不是您的发行版默认包含/启用的存储库的位置下载软件包也可能存在危险,因为第三方软件包本质上可能是恶意的。


apt-get/aptitude install 自动访问您启用的存储库和PPA索引,搜索最佳候选者,下载它及其所有依赖项,并自动安装和配置它们。

使用apt-get install -f,您可以自动安装缺少的软件包依赖项,例如通过dpkg -i


5
在此快速说明,apt-get可以从通过安装的软件包中安装依赖项dpkg -i。运行apt-get install -f以实现这一目标。
noirscape 2015年

1
@ Ev1l0rd正确,我将其添加到了答案中。
字节指挥官

2
另一个重要的区别以及使用apt-get或的一种情况aptitude是,他们记住是否手动安装了软件包(特别要求),或者是否为了满足依赖关系而安装了软件包。这样,当您以后删除软件包时,他们便能够自动删除(或至少告诉您)“自动安装且不再需要”的软件包。如果安装了每个软件包,dpkg则不仅要记住并手动删除其软件包,还要手动删除其所有依赖项(假设其他任何都不依赖于它们)。
本杰明·斯塔顿

1
@BenjaminStaton好吧,由于dpkg -i它并不在乎依赖关系,因此安装的所有内容当然都是“手动”安装的。
字节指挥官
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.