使用 dpkg 安装之前检查依赖项并生成下载脚本

使用 dpkg 安装之前检查依赖项并生成下载脚本

我以前都是用dpkg -i *.deb命令安装包进行离线安装的。因为所有的 deb 文件都在一个文件夹中。

我想要避免依赖错误并停止安装软件包破碎的

最终我的目标是检查依赖关系并仅为上述文件夹中缺少的包生成下载脚本(如果不满足所有依赖关系)。这样我可以先下载缺失的包,然后自信地安装包dpkg -i *.deb

apt-cache showpkg $(find -iname '*.deb' -exec dpkg --info '{}' \; | awk '/Package:/ {print $2}')显示依赖项,但列表太长且无助于检查是否在所提及的文件夹中满足(存在)或不。还会dpkg -I *.deb出现以下错误:

   dpkg-deb: 'cabextract_1.4-4_i386.deb' contains no control component 'chromium-codecs-ffmpeg-extra_34.0.1847.116-0ubuntu2_i386.deb'
   dpkg-deb: 'cabextract_1.4-4_i386.deb' contains no control component 'flashplugin-installer_11.2.202.350ubuntu1_i386.deb'
..
..
so on for each deb

因此,这些命令对我来说没用。

进一步澄清:

  1. 首先检查我的文件夹中的所有 deb 依赖项。
  2. 根据已经安装的包,检查这个 deb 是否能够安装并且没有依赖性错误。
  3. 如果是则执行dpkg -i *.deb
  4. 否则列出缺失的包未安装或未在提及的文件夹中

谢谢。

答案1

您可以随时尝试试运行安装前,

dpkg --dry-run -i *.deb

答案2

您可以使用以下命令获取软件包依赖项列表:

find *deb -exec dpkg -f {} Depends \;

答案3

您也可以尝试以下方法

 dpkg -I package
 apt-cache rdepends package.deb
 apt-cache showpkg package-name

如果它只是一个 .deb 文件,那么这个是几个步骤的组合

 ar -x <package-name>.deb
 tar -xzf control.tar.gz
 grep Depends control

或者

 apt-cache depends package-name

例如

 apt-cache depends mplayer

但我认为最后一个选择可能对你最有利

相关内容