问题描述
我的问题很简单——我想了解更多关于 dpkg 的信息——它有什么作用?
最佳回答
如前所述,dpkg
是一个低级系统工具,用于提取、分析、解压缩和安装或删除 .deb 文件。但是,最好使用 Software Centre
或 Gdebi
来安装或删除从其他来源获得的 .deb 文件,因为这两个程序具有依赖性解析。
但是,尚未解释的是使用 dpkg
和 apt-get
进行更新的剖析。例如,如果我们调用 apt-get
来安装 cheese
,则分析依赖树并由 apt-get
获取必要的文件,然后将它们传递给 dpkg
以提取、分析并安装到正确的位置,并根据其中的脚本进行配置.
dpkg
在每个 .deb 文件中读取的脚本很重要,因为它们向程序提供有关软件包安装、删除和配置的信息。因此,当您查看 /var/log/dpkg.log
时,会发现很多关于 ‘triggers’ 的详细信息,并且包会经历不同的解包和配置阶段。在他的博客中,Raphael Hertzog(他是 dpkg
包的关键 Debian 开发人员和维护者)explains more about dpkg triggers 和 dpkg
检查和配置包的方式。
我们现在开始了解 dpkg
的核心功能;它熟练地处理 Debian 软件包,而不是它们的依赖项。例如,使用 dpkg-deb
,您可以执行各种操作来分析和手动从 .deb 档案中提取文件;有关详细信息,请参阅 man dpkg-deb
。
每个包的状态都列在 /var/lib/dpkg/status
中,它可以与 grep
一起使用来检查特定的包。也可以调用 Dpkg
来重新配置已配置的特定包(请参阅 man dpkg-reconfigure
):
sudo dpkg-reconfigure <package>
或者,如果更新出现问题并且某些包的配置仍未完成,则对所有未配置的包进行配置:
sudo dpkg --configure -a
有关专注于 dpkg
和 apt-get
的精彩教程,请参阅 Debian Handbook 的第 5 章和第 6 章,这是可用的最佳讨论。在您的终端中输入 man dpkg
或在线查看 the Ubuntu manpages 以查看所有可用选项,例如使用 dpkg -l
列出当前安装的包。
次佳回答
dpkg 是一种从 .deb 安装或删除已安装包的命令行方式。例如,如果您的主目录中有一个 .deb 文件,运行 dpkg -i yourpackage.deb
将为您安装该包。我发现这至少对我有用,因为有时当单击 .deb 文件时,它会加载 Ubuntu 软件中心,但从未真正安装它或出现问题。
第三种回答
一如既往,man
命令是一个很好的起点。\n man dpkg
可以为您提供所有选项,但是:
dpkg 是基于 Debian 系统的包管理器。它可以安装、删除和构建包,但与其他包管理系统不同,它不能自动下载和安装包及其依赖项。
所以基本上它是没有依赖解析的 apt-get,它用于安装 .deb 文件。
不过我警告你:在大多数情况下,不推荐使用 dpkg 卸载软件包。最好使用处理依赖关系的包管理器,以确保系统处于一致的状态。
例如,使用 dpkg -r zip
可以删除 zip 包,但依赖于它的任何包仍将被安装并且可能不再正常运行。
您可以在 server guide 和 elsewhere 中阅读更多相关信息。