通过dpkg -i packageA.deb安装软件时,是否会自动下载并安装packageA所需的依赖项?这与使用apt-getaptitude有什么不同?

评论

相关(尤其是有关依赖项):askubuntu.com/q/40779/250300

#1 楼

否,dpkg仅安装一个软件包,因此执行dpkg -i packageName.deb只会安装此Deb软件包,并且会通知您任何需要安装的依赖项,但不会安装它们,并且不会配置packageName.deb,因为很好。
apt-get是一个软件包管理系统,用于处理基于Debian的Linux发行版上的Deb软件包安装。软件包管理系统是一组工具,可以帮助您轻松地安装,删除和更改软件包。所以apt-get就像一个聪明的dpkg
我喜欢这样思考时间轴(以下只是我从经验上讲的内容。它只想让您了解整个事情):


他们想出了一种将应用程序文件“存储”在“包”中的方法,以便可以轻松地安装它。因此,Deb软件包(.deb扩展文件)就诞生了。

.deb文件包含应用程序运行所需的文件,以及(我喜欢称呼它)“元数据”包含其他信息,例如应用程序需要的依赖项的名称。如果要查看.deb文件的内容,可以使用命令dpkg -c packageName.deb,如果要查看此“元数据”信息,请使用命令dpkg -I pacakgeName.deb(如果只想查看依赖项,请执行dpkg -I packageName.deb | grep Depends )。



他们需要一个工具来安装这些.deb文件,因此他们提出了dpkg工具。但是,此工具将仅安装.deb文件,但不会安装其依赖项,因为它没有这些文件,并且也无权访问“存储库”以从中获取依赖项。


然后,他们提出了apt-get,它可以使上一点中的问题自动化。在引擎盖下,apt-get基本上是dpkg(我认为apt-getdpkg的前端),但是很聪明的人会寻找依赖项并安装它们。它甚至查看当前安装的依赖项,并确定其他任何软件包都未使用的依赖项,并通知您可以删除它们。


aptitude随后出现了。它使用apt-get使用的库,并且实际上具有交互式UI(用户界面)。如果要查看此UI,只需在终端中键入aptitude。那是aptitude。与apt-get相比,它利用这些库提供了更多的选项和特权。例如,aptitude将自动删除合格的程序包,而apt-get需要单独的命令才能执行此操作。但是,最后,执行sudo aptitude install packageName.deb至少应与sudo apt-get install packageName.deb相同。我可能不知道这里和那里可能存在细微的差异,但是它们都将查找依赖项并完成所有这些工作。您可以在此处阅读答案,以获取有关aptitudeapt-get之间区别的更多信息。
aptitude没有超级母牛的力量。

编辑:显然,它有。 aptitude -v[v[v[v[v]]]] moo

aptitude可能默认未安装。要安装它,请执行sudo apt-get install aptitude或单击以下命令:aptitude 。

Extra

以下信息并没有真正直接回答“ dpkg和aptitude / apt有什么区别? -得到?”但这有助于整体发展。


来自卡洛斯·坎德罗斯(CarlosCampderrós)的评论如下:
gdebi是另一种在apt-getaptitude之间混合的工具。当您使用它安装.deb软件包(gdebi packageName.deb)时,它将识别丢失的依赖项,使用apt-get安装它们,然后最终使用dpkg安装和配置该软件包。它甚至具有一个简单整洁的GUI,可为您提供有关.deb软件包,软件包中包含的文件以及需要安装哪些依赖项的信息。要查看此GUI,您可以执行gdebi-gtk packageName.deb。您可以尝试通过将gdebisudo apt-get install gdebi一起安装来尝试使用它,或单击以下命令:gdebi 。

我不想让任何人感到困惑,但只是给您图片的另一部分,还有另一个受欢迎的地方Linux软件包格式称为RPM,其文件扩展名为.rpm。此软件包格式用于基于RPM的Linux发行版(例如Red Hat,CentOS和Fedora)。他们使用命令rpm安装软件包,而yum是它的前端,这是一个聪明的选择。因此,他们的.rpm文件是我们的.deb文件,他们的rpm工具是我们的dpkg工具,而他们的yum是我们的apt-get
从下面的Paddy Landau评论:
alien是在.rpm.deb软件包之间转换的工具。因此,如果遇到遇到.rpm软件包的情况,并且想要在Ubuntu(或任何其他基于Debian的发行版)上安装,可以使用命令alien rpm_packageName.rpm将其转换为.deb,然后再安装使用dpkg。您可以使用.deb进行相反的操作(将.rpm转换为alien -r packageName.deb)。

评论


这非常有用,而且正是我想要的。 Tx!

– Aniket Thakur
2013年6月17日13:59



此外,您可以使用将apt-get / aptitude与dpkg混合使用的gdebi(apt-get安装gdebi-core)。您可以使用gdebi some_package.deb对其进行调用,它将分析其依赖关系,调用apt-get安装缺少的依赖关系,并在满足所有依赖关系后,再调用dpkg最终安装您的软件包。

–卡洛斯·坎德罗斯(CarlosCampderrós)
2013年6月17日14:25

@Alaa在Extra下,您还可以提及Alien在.rpm和.deb之间转换包。这对于可用于RPM但不可用于DEB的软件包很有用(反之亦然)。例如,使用Alien packagename.rpm使它可用于Ubuntu。

–帕迪·兰道(Paddy Landau)
2013年6月25日9:44



@AlaaAli aptitude不是apt-get的前端。这两个程序都是libapt-pkg库的前端。

– Eliah Kagan
2014年10月3日在22:59



@edwardtorvalds AskUbuntu是一个问答网站。从数千个旧问题中在网站上搜索您的答案,如果找不到,请提出自己的问题,比我更多有经验的人也希望能够回答。

– Alaa Ali
2014年11月20日在17:17

#2 楼

apt-get

通过apt-get进行的软件包管理与/etc/apt/sources.list文件并行运行。

apt-get install <package_name>
将新软件包安装到计算机上。

apt-get build-dep <package_name>
此命令搜索存储库并安装的构建依赖项。如果程序包不在存储库中,它将返回错误。

apt-get install <package1_name> <package2_name> <package3_name>
apt-get允许安装多个程序包。

auto-apt run <command_string>
调用时,auto-apt命令会在缺少文件访问权限时自动安装软件包。如果程序尝试访问已知属于卸载程序包的文件,则auto-apt将使用apt-get安装该程序包。此功能需要apt和sudo才能起作用。

访问apt-get指令页面

aptitude


aptitude提供dselectapt-get的功能,例如以及在这两个程序中都找不到的许多其他功能。

aptitude拥有自己的外壳,该外壳可以通过键盘或鼠标激活,并在终端窗口中运行。

aptitude build-dep <package>-安装程序包的构建依赖性-表示编译(或构建)其源程序包所需的程序包。例如,许多软件包都需要debhelperautotools来构建,但不需要运行它们。

访问aptitude指令页面

dpkg

是用于安装,构建,删除和管理Debian软件包的工具。链接

dpkg -i <package.deb>将Debian软件包安装到您的计算机上。据我所知,它没有安装任何依赖项。

有关详细信息,请在终端窗口中键入dpkg --help

指南

可以在这里找到文件管理指南

#3 楼

我认为最重要的一点也是要注意的一点是,您应该使用apt-get工具来安装软件包。 (也可以使用aptaptitude)。

这是因为dpkg的目的是要安装软件包而无需安装相关软件包。
因为仅使用dpkg安装软件包,可能会导致依赖关系解析最终可能会因系统损坏而出现问题。

您应该使用命令行apt-getapt(自14.04起)工具来安装软件包。这些工具正在为您使用dpkg,同时内部也具有依赖项解析机制。

#4 楼

尽管这个问题有很好的答案,但我想说些更详细。


dpkg(或Fedora系列中的rpm)是一种低级工具,可以安装和删除。软件包文件,它不会安装
依赖项或从存储库中搜索它。

aptapt-getaptitude(或Fedora系列中的yumdnf)是高级的-或如此在第一个答案中提到的
dpkg的前端! -执行元数据搜索和依赖性的工具。

我想解释一下它们在Linux软件包管理任务中的区别:

用于安装,卸载或更新来自存储库的软件包,我使用高级软件包(apt-get installapt-get updateapt-get remove),但是对于从软件包文件进行安装和升级,我使用低级的软件包(dpkg -i package_file)。
要在存储库中搜索,我使用高级工具(apt-cache search search_str
要检查已安装的软件包和文件,我使用低级软件包。
dpkg -l-s-S有关更多信息,请参阅手册man dpkg | less
对于软件包元数据,我使用高级软件包,例如apt-cache show dpkg