如何配置conda以使用缓存代理?
到目前为止,我有:
我认为SquidMan的设置正确。如果将其关闭并尝试浏览Internet,则会收到错误消息“代理服务器拒绝连接”。对于http和https网站,以及我直接输入IP地址(两者之间都没有DNS)的情况,都会发生这种情况。
编辑的.condarc是这样的:
proxy_servers:
http: http://127.0.0.1:8080
https: http://127.0.0.1:8080
这些地址与系统代理设置中的地址相同-似乎可以正常浏览。
作为测试,我正在循环 康达安装python = 3.6 康达安装python = 3.7 康达干净--all
,希望看到这些python软件包的下载速度非常快。 但是它们总是非常缓慢。
我检查了SquidMan设置。有一个“最大对象大小”,也许可以防止缓存conda下载。他们太大了吗? 因此,我将这些设置调到最大(远大于conda下载),然后重试。结果相同。
如何配置squidman与conda配合使用?
答案 0 :(得分:0)
听起来您可能已经正确配置了所有内容,以通过squid代理流量。但是,conda使用https下载其软件包。在基本配置中,squid只能将SSL连接从客户端传递到服务器。该流量已被加密,因此无法缓存。您可以使用的选项是:
使用squid's ssl bump feature来使鱿鱼解密并重新加密通过它的数据。进行此设置有些棘手,因为您必须生成一个自签名证书,并使其受到conda的信任(使用conda install --insecure
可能是conda所需的全部)。
使用特定于conda的代理服务器。 Anaconda,Inc.提供了a product这样的服务器,因此您不太可能在开源conda工具中找到对此的很多内置支持。 Sonatype的Nexus存储库管理器还声称可以代理conda存储库in its documentation。
使用conda的内置支持进行本地缓存。由于您在问题中引用了conda clean
,因此您已经知道此缓存,并且必须有一些不使用它的原因。对于单台机器,conda pkgs_dir应该可以很好地工作。对于多台计算机,也许可以通过网络共享pkgs_dir来解决,或者将本地计算机上的所有.tar.bz2和.conda文件复制到每台计算机的pkgs_dir中。
添加第二层代理。 conda允许您使用http协议指定频道。您可以设置一个代理服务器来接受http请求并将其作为https请求传递。您可以将鱿鱼缓存代理置于此http-https代理的前面。这样,squid将看到可以检查和缓存的普通http流量,并且您仍然可以仅访问https的conda存储库。例如,使用nginx,您可以使用一个简单的conf文件来完成此操作,例如:
server {
listen 80;
server_name localhost 127.0.0.1;
location / {
proxy_pass https://repo.anaconda.com/;
}
}