如何下载 APT 及其所有依赖项?

如何下载 APT 及其所有依赖项?

我正在尝试下载 APT 及其所有依赖项,以便使用 dpkg 离线安装 APT。由于您不能简单地使用apt-get download apt我所采用的方法,因此我尝试生成依赖项列表,然后我可以手动使用它apt-get download package-name来检索。

我尝试过这些:

apt-cache showpkg package-name

apt-cache depends packagename

dpkg -I pkg-name1_version.deb

它们无法正常工作。我需要一种方法来列出 APT 的依赖项,以及依赖项依赖项;整个树。根据“ sudo apt-get install apt --reinstall”APT 有 302 个依赖项+子依赖项。使用我找到的答案生成的列表似乎只列出了第一级依赖项,因为它们太短了。

答案1

要么是我大错特错,要么就是apt有 302 个依赖项 + 子依赖项根本就是错的。apt那么,如果某个发行版依赖于 ,它怎么能声称自己是轻量级的呢?至少,在我的笔记本电脑上,重新安装时apt没有提到任何依赖项,所以我不确定你从哪里得到这个数字。我编造了脚本检查一下。在 Ubuntu 14.04 上,我得到了 24 个依赖项:

dpkg gcc-4.8-base gcc-4.9-base gnupg gpgv install-info libacl1 libapt-pkg4.12 libattr1 libbz2-1.0 libc6 libgcc1 liblzma5 libpcre3 libreadline6 libselinux1 libstdc++6 libtinfo5 libusb-0.1-4 multiarch-support readline-common tar ubuntu-keyring zlib1g

我随后了解到apt-rdependshttp://xmodulo.com/2013/07/how-to-check-package-dependencies-on-ubuntu-or-debian.html

我安装并运行了它,过滤了依赖项,进行了排序和比较,找到了与脚本相同的列表。所以我可以放心地得出结论,这些都是您需要安装的软件包apt。我认为可以根据您要安装的软件包忽略其中一个gcc-4.[89]。请注意,此列表已从 Ubuntu 12.04 中精简,在 Ubuntu 12.04 上运行此脚本(在服务器上)会给我 28 个依赖项:

coreutils debconf dpkg gcc-4.6-base gnupg gpgv install-info libacl1 libapt-pkg4.12 libattr1 libbz2-1.0 libc6 libc-bin libgcc1 liblzma5 libreadline6 libselinux1 libstdc++6 libtinfo5 libusb-0.1-4 multiarch-support perl-base readline-common tar tzdata ubuntu-keyring xz-utils zlib1g

大概这些软件包已经精简了。我必须说,对coreutils和的依赖减少是令人吃惊的。debconf

附注一下,我同意apt-rdepends手册页中给出的这个错误:

  apt-rdepends exists.  This functionality should really reside in apt-
   cache itself.

apt-cache工具提供了四个相关命令布赖安非正统语法我已经讨论过:

  • depends:列出(前向)依赖项。这还包括所有推荐的软件包,还包括休息冲突替换部分。我们只需要看看依靠预先依赖包。
  • rdepends:不幸的是,命名冲突apt-rdependsapt-rdepends和我前面提到的脚本都会检查依赖关系r递归地,而该apt-cache命令正在寻找r永恒依赖项 - 依赖于所考虑软件包的软件包。使用此命令检查由依赖于您要更改的软件包的特定版本的软件包所导致的潜在破坏。
  • showsrc:此命令提供有关用于构建包的源包的信息。单个源包可用于构建多个二进制包 - 每个包可能依赖于其他包,也可能不依赖于其他包。apt例如,依赖于libapt-pkg,但不依赖于libapt-inst,两者都由apt源码包使用此命令可以深入了解您应该安装的其他软件包,这些软件包可能不是依赖项,但可能需要更大的实用性,
  • showpkg:除其他功能外,此命令还列出了反向和正向依赖项。反向依赖项列在一个简单的列表中,但正向依赖项有点混乱 - 我仍然不确定数字的含义。无论如何,单个命令更depends清晰rdepends

因此,如果我们需要看看全部一个包可能直接或间接依赖的包apt-rdepends就是我们所需要的。

答案2

您应该关注的软件包只有 4 个:libapt-pkg4.12apt-utils和。apt 软件包的其他依赖项是 Ubuntu 所有安装的标准配置。为什么我说只有这 4 个软件包libapt-inst1.5apt

apt-cache showsrc apt
[...]
Package-List: 
 apt deb admin important arch=any
 apt-doc deb doc optional arch=all
 apt-transport-https deb admin optional arch=any
 apt-utils deb admin important arch=any
 libapt-inst1.5 deb libs important arch=any
 libapt-pkg-dev deb libdevel optional arch=any
 libapt-pkg-doc deb doc optional arch=all
 libapt-pkg4.12 deb libs important arch=any

如你所见,唯一真正来自 apt 源的软件包重要的是那些。

由于该libapt-pkg4.12软件包非常稳定(目前没有实验版本,但所有其他软件包都有新版本),建议您将它们一起安装。

还请记住,升级后,您可能会破坏所有这些软件包的反向依赖关系。首先apt-cache rdepends libapt-pkg4.12 apt-utils libapt-inst1.5 apt检查是否有任何软件包依赖于特定版本的 apt。

答案3

您可以使用立方体在这种情况下。Cube 会下载应用程序及其所有依赖项,您可以设置是否使用 apt-get 或 dpkg 来安装它们。只需在“设置=>首选项=>安装程序选项卡”中选择 dpkg 作为默认安装程序,而不是 apt-get

查看本教程以了解更多信息:http://community.linuxmint.com/tutorial/view/1583

答案4

Xubuntu 包含在基础安装中apt-offline解决这种情况的方法是,前提是你已经安装了 apt。它会确定需要下载哪些依赖项并将其映射出来,这样你就不会在处理此类下载包时遇到问题。在线文档设置包含一章有关如何使用该工具

相关内容