在独立区域安装软件包以进行只读Anaconda Linux安装
在工作中,我们有一个中央只读的Linux Anaconda安装,并且有几个项目需要各个项目成员的库软件包。 有没有办法conda安装软件包在为每个项目预留的可写区域?在独立区域安装软件包以进行只读Anaconda Linux安装
我们的Linux服务器也不是直接网络连接,但我们可以从Windows机器传输数据。有没有办法让windows conda为我们的Linux安装下载数据,以便我可以将下载的文件传输到Linux,然后在Linux上完成安装,而conda linux不需要直接的网络连接?
在此先感谢:-)
最好的回答这个问题有点斜:水蟒分布是专为不受限制地访问互联网的单一系统上的单个用户。任何其他用途都被视为“非标签”和YMMV,尽管没有许可限制可以阻止您尝试按照您的意图使用它。 Anaconda Enterprise是专为多用户服务器部署的防火墙限制的Anaconda而设计的商业产品。安全,治理,赔偿,支持,合作等等。查看https://www.continuum.io/了解更多详情。
但是有“解决方法”来实现你想要的,尽管是复杂的。为了它的可靠性,可重复性和可维护性,您最终将重新实现Anaconda Enterprsie中的许多功能。这里有一些提示:
项目
foo
普通用户alice
可以做conda create -p /nfs/project/foo/envs/custompython --offline anaconda; conda activate /nfs/project/foo/envs/custompython; conda install pkg1 pkg2 pkg3
你要运行归入所有权/许可问题。如果您有明智的
umask
值,那么当alice
的同事bob
尝试更新foo
项目中的pkg2
时,他会发现他无法取消链接文件alice
写在那里。你可以做的东西(如IT管理员)chown
或alice
可以做chmod
,但它有点麻烦,有很多方法可以使conda环境瘫痪,因为它期望“可写”到对于特定的环境是二进制的。在conda GH问题跟踪系统(包括我自己)中,有一个历史悠久的历史,开始一个帐户的conda env设置,然后用另一个账户进行mod,然后将其中的一个账户进行一半的操作,从而使所有的操作都不一致。请注意
.condarc
文件。我的建议是:在任何地方避免它们,但在基本的Anaconda安装中(例如,在/opt/anaconda/.condarc
之内)。当多个重叠的.condarc文件聚集在一起时(上述文档参考文献讨论这一点),各种奇怪的东西都可能发生。只要这些新环境(及其依赖项)中指定的包是基础环境中可用包的子集(或随后添加到包中),人们就可以在“脱机”模式下创建自己的环境缓存),当然也考虑版本。
您可以使用在线Windows机器通过从
repo.continuum.io
和anaconda.org
中获取软件包来下载软件包。确保你将它们下载到正确的平台上。但挑战在于:您需要下载一组能够满足您要安装的软件包的依赖关系的软件包。离线时没有一种超级简单的方式来获取这些信息。将新软件包放入Linux系统的软件包缓存后,请务必重新运行
conda index
。当心直接从他们的tarball安装软件包:这不会选择任何依赖关系,并执行所谓的“强制”安装。所以做
conda install /path/to/conda/pkg-ver.tar.bz2
实际上最类似于做conda install --force --no-deps pkg=ver
(虽然不完全相同,可以肯定)。--force
意味着安装将会发生无论如何,即使它会破坏您的环境(违反现有的软件包依赖性),并且--no-deps
意味着您将不会获得安装的任何依赖关系pkg
。