第1部分
我有 CentOS,但无法访问互联网。我有一个基于 Ubuntu 的 docker 容器。我想在 Docker 容器中安装 Python。我下载了一些用于安装 Python 2.7 的 .deb 文件。我尝试使用 apt-get 安装它们。但这些命令需要访问互联网。我使用 dpkg -i 来安装软件包。我用dpkg -i libpython2.7-stdlib_2.7.6_8_amd64.deb
。然后我跟进了 apt-get install -f。系统会提示我询问有关额外软件包的是/否问题。我选择了 Y。然后我收到了一条关于无法访问某些 URL 的错误。这并不奇怪,因为底层服务器无法访问互联网。 URL 指的是python2.7-minimal_2.7.5-5ubuntu3_amd64.deb
其他内容。我特别有这个 .deb 文件。但是当我尝试安装它时,出现有关未满足的依赖项 python2.7-minimal 的错误。我很清楚这没有安装。我想要安装它。
如何python2.7-minimal_2.7.6-amd64.deb
在 Docker 中安装?
第2部分
我试图解决我不知道如何解决的问题。我获得了Python-2.7.11.tar.xz。大小为 12 MB。在 Docker 容器中,尝试了以下操作:
tar xvf Python-2.7.11.tar.xz
但我得到tar (child): xz: connect exec: No such file or directory
我验证了该文件存在。事实上,当我输入命令“tar xvf Python2.7”时,我可以按 Tab 键来完成文件的全名。是否有独立文件或其他离线方法来安装 Python?
最终请求:
理想情况下,即使只有一个部分需要工作,我也可以获得这两部分的帮助。
答案1
Mark Smith 的答案中的缓存解决方案是一个好主意;我已经成功地做到了。
另一个解决方案是,在我的计算机上建立互联网连接并通过 SSH 连接到虚拟机:在我的计算机上安装一个代理(squid),该代理具有到受防火墙保护的虚拟机的 SSH 连接。在受防火墙保护的虚拟机上声明本地代理 127.0.0.1:3128 并建立从该端口到我自己计算机的端口的 SSH 隧道。
这样您就可以动态安装、更新和修补。
答案2
我不得不在构建机器上执行此操作(尽管使用不同的包,而不是Python)几次,这些机器不允许访问互联网,并且与我的连接互联网的机器位于构建的不同部分。有点痛。
有多种方法可以递归地列出给定包的依赖项(一些给定的包)这里),这样你就可以一次性下载所有的,并尽量减少来回,但实际上我发现以下更容易:
- 在可以访问互联网的虚拟机中安装相同的操作系统。
- 将您需要的东西安装到上面。
- 复制
/var/cache/apt/archives/*
到 CD(或者无论如何将内容移至本机),然后您将拥有所需的一切。将其全部复制到/var/cache/apt/archives
目标计算机上,或者如果您想将其保持在最低限度,请根据需要一次执行一个。