在 Ubuntu 中下载包的递归依赖项

我们已经知道如何 下载一个包及其所有依赖项 在 Ubuntu 及其衍生产品中。 今天,我们将了解如何在 Ubuntu 中下载软件包的递归依赖项。 换句话说,我们将下载依赖项的依赖项。

假设您正在尝试安装一个名为 a.deb. a.deb 包依赖包 b.deb 再次包 b.deb 依赖于包 c.deb. 在这个方法中,我们不仅下载了 a.deb 的依赖,还下载了 b.deb 和 c.deb 的依赖。 即使在使用 apt-rdepends 命令。

在本地下载具有依赖项的包有三个主要目的。

  1. 避免一遍又一遍地重复下载同一组包。 为了 example如果你想在多个系统上安装 Vim 编辑器,你可以下载 Vim 和所有必需的依赖项,将它们保存在 USB 驱动器中(或通过 LAN 传输它们)并在其他系统上安装 Vim。
  2. Save 互联网带宽和时间。
  3. 在非 Internet 连接的系统上安装软件包。 这是在本地下载具有依赖关系的包的主要原因。 您可以在联网的系统中下载软件包,然后通过 USB 驱动器或 LAN 将它们传输到离线系统,并在没有互联网的情况下安装它们。

原因可能因您而异。 如果您想在离线系统上安装软件包,这种方法肯定会有所帮助。

在 Ubuntu 中下载包的递归依赖项

为本指南的目的,我们将采取 维姆 程序作为 example.

首先,让我们使用以下命令列出 Vim 包的递归依赖项:

$ apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances vim | grep "^w" | sort -u

用你自己的包替换 vim。 如果要以列格式显示输出以便于阅读,请运行:

$ apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances vim | grep "^w" | sort -u | column

样本输出:

cdebconf       libacl1         libdb5.3        liblzma5:i386       libpython3.6-stdlib libtinfo5       vim
debconf         libacl1:i386        libdebian-installer4    libmpdec2       libreadline7        libzstd1        vim-common
dpkg            libattr1        libexpat1       libncursesw5        libselinux1     libzstd1:i386       vim-runtime
dpkg:i386       libattr1:i386       libffi6         libnewt0.52     libselinux1:i386    mime-support        xxd
gcc-8-base      libbz2-1.0      libgcc1         libpcre3        libslang2       perl-base       xxd:i386
gcc-8-base:i386     libbz2-1.0:i386     libgcc1:i386        libpcre3:i386       libsqlite3-0        readline-common     zlib1g
install-info        libc6           libgpm2         libpython3.6        libssl1.1       tar         zlib1g:i386
install-info:i386   libc6:i386      liblzma5        libpython3.6-minimal    libtextwrap1        tar:i386
列出 Ubuntu 中软件包的递归依赖项

这些是 Vim 程序的依赖关系。 请注意,安装 Vim 可能不需要所有这些。

让我们继续使用以下命令下载 Vim 包的递归依赖项:

$ apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances vim | grep "^w" | sort -u)

此命令将下载 vim 及其在当前目录中的依赖程序。 它还将下载 Vim 依赖项的依赖项。

在 Ubuntu 中下载包的递归依赖项

使用“ls”命令检查所有依赖项是否已下载:

$ ls

这是我的 Ubuntu 18.04 桌面中 Vim 程序的依赖项及其依赖项的依赖项列表:

Ubuntu中Vim包的递归依赖Ubuntu中Vim包的递归依赖

现在通过 USB 驱动器或 LAN 将所有下载的文件移动到离线系统。 然后转到您在离线系统中保存所有下载包的位置并使用命令安装它们:

$ sudo dpkg -i *

或者,您可以构建所有下载包的索引并使用 APT 包管理器安装它们。

要构建下载包的索引,请转到存储包的位置并运行以下命令:

$ dpkg-scanpackages . | gzip -c9 > Packages.gz

使用以下命令将此文件夹添加到 APT 源列表:

$ echo "deb[trusted=yes] file:///home/sk/vim ./" | sudo tee -a /etc/apt/sources.list

在这里,我已将所有文件保存在 /home/sk/vim 我的离线系统中的文件夹。 您需要用自己的路径替换此路径。

使用命令更新包索引:

$ sudo apt-get update

最后,使用 APT 包管理器安装 vim 包:

$ sudo apt-get install vim

同样,您也可以下载和安装其他软件包。

希望这可以帮助。

建议阅读:

  • 如何在 CentOS 中下载具有所有依赖项的 RPM 包
  • Camicri Cube – 在离线 Ubuntu 系统上安装软件包
  • 如何在 Ubuntu 中离线安装软件
  • 如何在不更改系统任何内容的情况下模拟 Linux 命令