如何递归获取包的版本依赖关系?

How to get recursively dependencies for package with versions?

我需要在无法上网的系统上安装一个包(包中包含网卡驱动程序)。

系统 A 已连接互联网并运行 Ubuntu 14;系统 B 没有互联网连接并运行 Ubuntu 16.

如何在系统 A 上使用正确的版本递归下载所有依赖项,以便下次安装在系统 B 上?

我建议您在系统 A 上 运行 一个 docker 容器(或某种类型的虚拟化)和 Ubuntu 16.04。之后,您可以更新包索引( apt update) 然后在该系统上安装所需的软件包。最后,您可以将包索引从 /var/lib/apt 复制,并将包本身从 /var/cache/apt/archives 复制到系统 B。

限制主机访问互联网是一种很好的做法。然而,作为补丁管理解决方案,您应该设置一个本地镜像——这将集中您对整个组织的补丁需求。它不仅限于 ubuntu,您还可以托管多个 linux 发行版镜像。您真正需要的唯一东西是大容量磁盘,也许可以对其进行镜像以获得一些非关键的弹性。这也将减少使用带宽的多服务器环境,将带宽限制为一次性将更新拉到其镜像的单个主机。只需确保您有一个进程或脚本来 运行 定期检查更新。这样一来,您的主机就可以在需要时进行修补,前提是您始终掌握各种 *Nix 平台的新兴威胁和漏洞管理。

我不太喜欢重新发明轮子,所以..这里有一些操作方法参考。

  1. 操作方法:Setup a local Ubuntu Aptitude Repo(可以设置镜像 Ubuntu 14、15、16 以支持所有 linux 主机。)
  2. 操作方法:Set a local CentOS YUM Repo(以防万一您有一些基于 RH 的服务器)

之后您要做的是更改您的 /etc/apt/sources.list 以指向新的内部存储库以获取 aptitude repos。您可以只复制那里现有的行,将服务器域名更改为您的本地服务器。然后,您不需要任何 linux 主机与网络外的任何主机通信,从镜像中拉出的一台服务器就可以。它一定会帮助您完善您的安全需求。

对于基于 RHEL 或 yum 的,配置在 /etc/yum.repos.d/{reponame}.repo