我们已经知道如何 下载一个包及其所有依赖项 在 Ubuntu 及其衍生产品中。 今天,我们将看到如何在 Ubuntu 中下载包的递归依赖项。 换句话说,我们将下载依赖项的依赖项。
假设您正在尝试安装一个名为 a.deb. a.deb 包依赖包 b.deb 再次包 b.deb 依赖于包 c.deb. 在这个方法中,我们不仅下载了a.deb的依赖,还下载了b.deb和c.deb的依赖。 当您使用 apt-r依赖 命令。
在本地下载具有依赖项的包有三个主要目的。
- 避免一遍又一遍地重复下载同一组软件包。 例如,如果你想在多个系统上安装 Vim 编辑器,你可以下载 Vim 和所有必需的依赖项,将它们保存在 U 盘中(或通过 LAN 传输它们),然后在其他系统上安装 Vim。
- Save Internet 带宽和时间。
- 在非 Internet 连接的系统上安装软件包。 这是在本地下载具有依赖项的包的主要原因。 您可以在联网的系统中下载软件包,然后通过USB驱动器或局域网将它们传输到离线系统中并在没有互联网的情况下安装它们。
原因可能因您而异。 如果您想在离线系统上安装软件包,这种方法肯定会有所帮助。
在 Ubuntu 中下载包的递归依赖项
出于本指南的目的,我们将采用 维姆 程序为例。
首先,让我们使用以下命令列出 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
这些是 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 的依赖项的依赖项。
使用“ls”命令检查所有依赖项是否已下载:
$ ls
以下是我的 Ubuntu 18.04 桌面中 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 命令
APTapt命令递归下载依赖dpkgLinux包管理Ubuntu