我以前都是用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
因此,这些命令对我来说没用。
进一步澄清:
- 首先检查我的文件夹中的所有 deb 依赖项。
- 根据已经安装的包,检查这个 deb 是否能够安装并且没有依赖性错误。
- 如果是则执行
dpkg -i *.deb
- 否则列出缺失的包未安装或未在提及的文件夹中
谢谢。
答案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
但我认为最后一个选择可能对你最有利