Ubuntu中下载包的递归依赖项

时间:2020-03-21 11:43:29  来源:igfitidea点击:

如何在Ubuntu中下载包的递归依赖关系。
换句话说,我们将下载依赖项的依赖关系。
让我们说你正在尝试安装名为a.deb的包。
A.Deb包取决于包B.Deb和再次依赖于包C.Deb的包。
在此方法中,我们不仅下载了a.deb的依赖关系,还不仅下载了b.deb和c.deb的依赖关系。
即使在使用APT-RDepends命令下载所有必需的依赖项后,当我们无法安装包时,这可能是有用的。

下载具有依赖关系的软件包提供三个主要目的。

  • 一遍又一遍地避免重复下载相同的包装集。例如,如果要在多个系统上安装Vim编辑器,则可以使用所有必需的依赖项下载Vim,将它们保存在U盘(或者通过LAN传输)并在其他系统上安装Vim。
  • 保存Internet带宽和时间。
  • 在非互联网连接系统上安装包。这是在本地下载依赖关系的包的主要原因。我们可以通过U盘或者LAN将其推向离线系统,并在无互联网的情况下将它们转移到离线系统。

下载Ubuntu中包的递归依赖项

出于本教程的目的,我们将以VIM计划为例。

首先,让我们使用以下命令列出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

以下是vim程序的依赖项列表以及我的Ubuntu 18.04桌面中依赖关系的依赖关系:

现在将所有下载的文件通过U盘或者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

同样,我们也可以下载并安装其他软件包。