【问题标题】:How to get recursively dependencies for package with versions? [closed]如何递归地获取带有版本的包的依赖关系? [关闭]
【发布时间】:2018-12-08 23:44:33
【问题描述】:

我需要在无法访问互联网的系统上安装一个软件包(该软件包包含网卡驱动程序)。

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

如何在系统 A 上使用正确版本递归下载所有依赖项,然后再将其安装在系统 B 上?

【问题讨论】:

标签: linux ubuntu package packages


【解决方案1】:

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

【讨论】:

  • 更好的是,他可以简单地将整个 Docker 容器保存为一个镜像文件并在离线主机上运行该镜像。已经为这种情况找到了容器以避免依赖地狱。
  • @MohammedNoureldin 但他首先需要在系统 B 上安装 docker。
  • @Abdullatif Eymash 我在 virtualbox 中使用了 apt-get --download-only 和系统 B 的映像,然后我将 apt 缓存复制到了真实的系统 B 并通过 dpkg 安装了软件包。问题解决了 THX
【解决方案2】:

最好限制主机访问互联网。但是,作为补丁管理解决方案,您应该设置一个本地镜像 - 这将集中您对整个组织的补丁需求。它不仅限于 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 存储库。您可以复制那里存在的行,将服务器域名更改为本地服务器。然后,您不需要任何 linux 主机与网络外部的任何主机通信,从镜像中提取的一台服务器可以。它肯定会帮助您改善安全需求。

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

【讨论】:

    猜你喜欢
    • 2018-10-20
    • 2020-01-25
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2010-09-18
    相关资源
    最近更新 更多