如何递归获取具有版本的软件包的依赖关系?

时间:2018-06-29 18:26:35

标签: linux ubuntu package packages

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

限制主机访问Internet是一个好习惯。但是,作为补丁程序管理解决方案,您应该设置一个本地镜像-这将集中整个组织的补丁程序需求。它不仅限于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中配置