如何下载包含所有依赖项和子依赖项的软件包?

bis*_*uke 6 apt dependencies offline software-installation

类似的问题已经被问过,但没有一个能解决我的问题:

我需要在独立的 Linux 机器上安装一个软件包,特别是 kdbg。现在我厌倦了命令

sudo apt-get install --download-only kdbg

在连接到互联网的盒子上,但它只下载我没有安装的包和依赖项。其中一些依赖项(该命令总共下载了 117 个包)具有子依赖项,而这些子依赖项具有更多依赖项,我正在陷入困境,试图从存储库中提取这些包。

现在我尝试使用其他几个命令,这些命令应该会下载所有依赖项,甚至是我已经安装的依赖项。我试过了

  1. apt-get download PACKAGE && apt-cache depends -i PACKAGE | awk '/Depends:/ {print $2}' | xargs apt-get download

  1. apt-get download $(apt-rdepends <package>|grep -v "^ ")

命令一仅下载直接依赖项,就像您在 packages.ubuntu.com 上搜索 kdbg 时找到的依赖项一样,命令二给出错误消息:

Can't select candidate version for package <package> as it has no candidate
Run Code Online (Sandbox Code Playgroud)

对于几个不同的包。

那么,重申一下我的问题,有没有办法让我下载 kdbg、它的所有依赖项、所有这些依赖项的依赖项等等?或者也许我错误地使用了上述命令之一?

提前致谢。

kar*_*rel 2

您需要运行一个命令来自动解析所有 .deb 文件的依赖项,并使用同一命令安装 .deb 文件及其缺少的依赖项。您将需要有效的互联网连接(您已经拥有)和已安装的软件进行更新,sudo apt update && sudo apt upgrade以下载任何缺少的依赖项。打开终端并输入:

apt download package-name   
apt install --simulate ./ package-name.deb # 试运行不安装任何东西

其中package-name应替换为您尝试下载的包的名称,package-name.deb应替换为您尝试安装的 .deb 文件的名称。

第二个命令不安装任何东西,它只是一个空运行模拟,列出离线机器上需要安装的依赖项。如果您下载的一个或多个 .deb 文件本身具有未满足的依赖项,您可能还需要再次运行该命令。apt install --simulate ./package-name.deb


如果您下载软件包的计算机上未安装 Ubuntu,则您可以从用于安装 Ubuntu 的同一可启动媒体启动并从 Ubuntu 实时会话下载 .deb 文件,或者访问官方Ubuntu 软件包搜索网站并手动下载 .deb 文件。

  • 请运行这个神奇命令 `man apt-get | sed -n '/-simulate/,/^$/p'` 获取完整的描述,开头如下:`-s, --simulate, --just-print, --dry-run, --recon, --no-act 不采取行动;对基于当前系统状态将发生的事件进行模拟,但不会实际更改系统。锁定将被禁用(Debug::NoLocking),因此系统状态可能会在 apt-get 运行时发生变化。` [来源](https://unix.stackexchange.com/a/324150/) (2认同)