如何使用apt-get安装本地.deb软件包


144

有没有一种方法可以使用apt-get在HD上安装软件包存储,例如apt-get install ./package.deb

如果没有,如何以非常简单的方式处理依赖关系?


现在可以使用。 如果仍然使用SuperUser,可以更新接受的答案吗?见下文。
mikemaccana

Answers:


121

通常我会这样做dpkg -i <deb file>,但会失败说它需要依赖关系。之后,当您执行操作时,apt-get update最后会说类似“依赖项已准备好安装”,然后建议您使用apt-get install -f

完成后,我会dpkg -i再次使用。

最近几年对我来说还不错。

编辑:再往前看,显然一个名为的工具gdebi可以做到这一点gdebi [deb file]


1
谢谢,我做了同样的“错误” dpkg,然后apt-get install -f,它的工作。
路易

2
gdebi是为我工作的工具,到目前为止,这是我见过的最简单的工具。
ctrl-alt-delor

55

Sirex或多或少都正确,但是他的答案尚不清楚。我刚刚解决了这个问题,所以这是我做的:

sudo dpkg -i /path/to/filename.deb

如果失败并根据未安装的软件包提示有关软件包的信息,则可以在运行时对其进行修复。

sudo apt-get -f install

这将安装依赖项(假设它们在您的系统知道的存储库中可用)和您最初请求安装的软件包(“ f”是“ fix”选项,“ y”是“假设是”)或“不要问我是否可以,只需安装它”选项-对于脚本化的静默安装非常有用)。在我使用的系统上,无需再次运行dpkg(Ubuntu lucid 10.04)。

我发现有趣的是,如果您在运行时不使用-f sudo apt-get install,它将列出您的软件包(由于未解决的依赖关系而未配置),并有帮助地建议:Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

编辑:

如果您要安装而不必对所有问题都回答“ y”,则可以添加y最初包含的修饰符:sudo apt-get -fy install。但是,有评论者指出,apt有时会建议您卸载整个桌面环境。我当时是在VM中进行这项工作的,没有任何顾虑,但是此帖子已更新,以反映您需要多加注意。


如果我已经将所有软件包文件放在目录中,是否有办法告诉apt这是一个新的存储库,所以我将不必强迫它安装任何没有依赖项的文件?
Berry Tsakala 2013年

2
对不起,我不知道。我建议将其作为另一个顶级问题。
Akrikos

疯狂的奇怪,这是必需的。在raspian,这将需要须藤(两者的dpkg和apt-get)sudo dpkg -i mypackages.deb
布伦特浮士德

@Rubistro根访问权限在所有系统上都是必需的。我猜答案是假设命令是由root执行的(例如,从交互式root shell或以root执行的脚本)。
Amos Shapira 2014年

2
为了你自己好,也没有添加-y选项。例如,如果在错误的时间使用了错误的软件包(至少在Debian上)尝试了此操作,则通常建议卸载整个桌面环境。
oseiskar 2014年

45

您也可以使用gdebi安装.deb文件。运行以下命令以安装gdebi,

sudo apt-get install gdebi-core

使用gdebi安装.deb软件包,

sudo gdebi /path/to/filename.deb

它还修复了依赖性。


4
请注意,gdebi仅接受一个参数,而将其余参数默默地放在地板上。这意味着,如果您同时安装多个Deb(也许是因为它们相互依赖),则需要精心制作gdebi允许它们安装的命令。IMO今年上半年击败gdebi的目的,但你仍然可以找到一个单一的文件非常有用
安东尼Sottile

@Anthony然后find -name *.deb -exec gdebi {} \;
jjmontes

3
@jjmontes仅在相互依存关系按字母顺序排列(我敢打赌)的情况下才有效
Anthony Sottile

我遵循了这个freesoftwaremagazine.com/articles/…(错误,本地存储库必须位于/ var / www / html / debs),并且突触不断尝试从远程下载,甚至没有Internet,因此gdebi在本地存储库中工作得很好!此外,.deb文件必须是chmod +r *.deb
Aquarius Power

34

是的,您建议的命令是正确的。

sudo apt-get install ./package.deb

要么

sudo apt install ./package.deb

将安装从APT以外的其他来源获得的软件包,同时使用APT功能自动解决其依赖关系。不幸的是,此apt-get功能没有在手册页中记录

有关详细信息,请参见https://askubuntu.com/a/769542/250300https://askubuntu.com/a/795048/250300


8
这应该是公认的答案。
彼得

哪个版本的apt-get添加了此功能?
Kurt Fitzner

@KurtFitzner在每个发行公告的 APT 1.1中添加了该文件(可通过askubuntu.com/a/795048/250300找到)。
Melebius
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.