Conda软件包的脱机安装顺序

时间:2018-04-05 23:53:44

标签: installation anaconda conda package-managers offlineapps

我们最近将Anaconda安装到企业环境中。遗憾的是,由于各种IT和网络策略的存在,我们无法使用连接存储库中的常规conda安装方法。由于某种端口阻塞,我们最终得到了一个http错误。

conda install nodejs
Fetching package metadata ...

CondaHTTPError: HTTP None None
for url <None>

An HTTP error occurred when trying to retrieve this URL.
ProxyError(MaxRetryError("HTTPSConnectionPool(host='repo.continuum.io', port=443): Max retries exceeded with url: /pkgs/free/win-64/repodata.json.bz2 (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x0000000002C597B8>: Failed to establish a new connection: [Errno 11004] getaddrinfo failed',)))",),)

但我们能够做的是从https://repo.continuum.io/pkgs/手动下载* .tar.bz2文件并执行离线安装。

conda install ./nodejs-8.9.3-hd6b2f15_0.tar.bz2

现在,我的问题是围绕着要安装的其他软件包列表的软件包。我们想要安装的软件包是r-essentials。但是查看https://repo.continuum.io/pkgs/r/win-64/r-essentials-3.4.3-r343_0.tar.bz2中包含的配方,列出了200多个软件包,其中一些已经作为Anaconda 5.1.0的一部分安装,还有一些特定于我们需要下载的r-essentials。

我们说我们经历了下载所有软件包的艰苦过程。我有些问题:

  • 我们可以创建一个批处理文件来运行每个单独包的离线conda安装吗?或者有更好的方法批量安装超过100个离线包吗?
  • 如果批量安装程序中的软件包是先前已安装的软件包,是否有任何损害?或者它会跳过已安装的软件包吗?
  • 是否需要安装软件包的特定订单?
  • 如果将来IT部门取消阻止我们的端口访问权限,我们是否可以通过存储库更新离线安装的软件包?

1 个答案:

答案 0 :(得分:1)

我在离线服务器上安装软件包及其依赖项时遇到了同样的问题。

我的解决方案是在互联网连接的服务器上进行“干运行”安装,并让conda解决依赖关系问题。根据这些示例,'dry-run'输出通过管道输出到json文件。

${HOME}/anaconda3/bin/conda install --dry-run \
cx_oracle \
sqlparse \
ujson \
--json > /tmp/anaconda_channel_pkgs.json

${HOME}/anaconda3/bin/conda install --dry-run --channel conda-forge \
altair \
python-xxhash \
--json > /tmp/condaforge_channel_pkgs.json

然后,我使用此script处理json文件,下载所需的软件包,并创建tar'd软件包及适合在脱机服务器上安装的说明。

它在Anaconda3-5.1.0-Linux-x86_64上为我工作。我希望它有所帮助。