dpkg -i packageA.deb
安装软件时,是否会自动下载并安装packageA
所需的依赖项?这与使用apt-get
或aptitude
有什么不同?#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-get
是dpkg
的前端),但是很聪明的人会寻找依赖项并安装它们。它甚至查看当前安装的依赖项,并确定其他任何软件包都未使用的依赖项,并通知您可以删除它们。aptitude
随后出现了。它使用apt-get
使用的库,并且实际上具有交互式UI(用户界面)。如果要查看此UI,只需在终端中键入aptitude
。那是aptitude
。与apt-get
相比,它利用这些库提供了更多的选项和特权。例如,aptitude
将自动删除合格的程序包,而apt-get
需要单独的命令才能执行此操作。但是,最后,执行sudo aptitude install packageName.deb
至少应与sudo apt-get install packageName.deb
相同。我可能不知道这里和那里可能存在细微的差异,但是它们都将查找依赖项并完成所有这些工作。您可以在此处阅读答案,以获取有关aptitude
和apt-get
之间区别的更多信息。aptitude
没有超级母牛的力量。编辑:显然,它有。
aptitude -v[v[v[v[v]]]] moo
。aptitude
可能默认未安装。要安装它,请执行sudo apt-get install aptitude
或单击以下命令:aptitude 。Extra
以下信息并没有真正直接回答“ dpkg和aptitude / apt有什么区别? -得到?”但这有助于整体发展。
来自卡洛斯·坎德罗斯(CarlosCampderrós)的评论如下:
gdebi
是另一种在apt-get
和aptitude
之间混合的工具。当您使用它安装.deb
软件包(gdebi packageName.deb
)时,它将识别丢失的依赖项,使用apt-get
安装它们,然后最终使用dpkg
安装和配置该软件包。它甚至具有一个简单整洁的GUI,可为您提供有关.deb
软件包,软件包中包含的文件以及需要安装哪些依赖项的信息。要查看此GUI,您可以执行gdebi-gtk packageName.deb
。您可以尝试通过将gdebi
与sudo 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
提供dselect
和apt-get
的功能,例如以及在这两个程序中都找不到的许多其他功能。aptitude
拥有自己的外壳,该外壳可以通过键盘或鼠标激活,并在终端窗口中运行。aptitude build-dep <package>
-安装程序包的构建依赖性-表示编译(或构建)其源程序包所需的程序包。例如,许多软件包都需要debhelper
或autotools
来构建,但不需要运行它们。访问aptitude指令页面
dpkg
是用于安装,构建,删除和管理Debian软件包的工具。链接
dpkg -i <package.deb>
将Debian软件包安装到您的计算机上。据我所知,它没有安装任何依赖项。有关详细信息,请在终端窗口中键入
dpkg --help
。指南
可以在这里找到文件管理指南
#3 楼
我认为最重要的一点也是要注意的一点是,您应该使用apt-get
工具来安装软件包。 (也可以使用apt
或aptitude
)。这是因为
dpkg
的目的是要安装软件包而无需安装相关软件包。因为仅使用
dpkg
安装软件包,可能会导致依赖关系解析最终可能会因系统损坏而出现问题。您应该使用命令行
apt-get
或apt
(自14.04起)工具来安装软件包。这些工具正在为您使用dpkg
,同时内部也具有依赖项解析机制。#4 楼
尽管这个问题有很好的答案,但我想说些更详细。dpkg
(或Fedora系列中的rpm
)是一种低级工具,可以安装和删除。软件包文件,它不会安装依赖项或从存储库中搜索它。
apt
,apt-get
和aptitude
(或Fedora系列中的yum
和dnf
)是高级的-或如此在第一个答案中提到的dpkg
的前端! -执行元数据搜索和依赖性的工具。我想解释一下它们在Linux软件包管理任务中的区别:
用于安装,卸载或更新来自存储库的软件包,我使用高级软件包(
apt-get install
,apt-get update
,apt-get remove
),但是对于从软件包文件进行安装和升级,我使用低级的软件包(dpkg -i package_file
)。要在存储库中搜索,我使用高级工具(
apt-cache search search_str
)要检查已安装的软件包和文件,我使用低级软件包。
(
dpkg -l
或-s
或-S
有关更多信息,请参阅手册man dpkg | less
)对于软件包元数据,我使用高级软件包,例如
apt-cache show dpkg
。
评论
相关(尤其是有关依赖项):askubuntu.com/q/40779/250300