如何配置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.7conda clean --all
并希望看到这些python软件包的下载速度非常快。但是它们总是非常缓慢。
我检查了SquidMan设置。有一个“最大对象大小”,也许可以防止缓存conda下载。它们太大了吗?因此,我将这些设置调到最大(远大于conda下载),然后重试。结果相同。
我如何配置squidman与conda一起使用?
听起来您可能已经正确配置了所有内容,以通过鱿鱼代理流量。但是,conda使用https下载其软件包。在基本配置中,squid只能将SSL连接从客户端传递到服务器。此流量已被加密,因此无法缓存。您可以使用的选项是:
使用squid's ssl bump feature使乌贼解密并重新加密通过它的数据。进行此设置有些棘手,因为您必须生成一个自签名证书,并使其受到conda的信任(conda只需使用conda install --insecure
即可。)
使用特定于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/;
}
}