设置conda来缓存代理(MacOs + Squidman)

时间:2019-01-14 16:33:16

标签: proxy anaconda conda http-proxy squid

如何配置conda以使用缓存代理?

到目前为止,我有:

  • 安装了SquidMan,并将其主机和端口设置为127.0.0.1:8080。
  • 设置网络设置以在此地址同时代理http和https
  • 编辑了.condarc以使用代理

我认为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配合使用?

1 个答案:

答案 0 :(得分:0)

听起来您可能已经正确配置了所有内容,以通过squid代理流量。但是,conda使用https下载其软件包。在基本配置中,squid只能将SSL连接从客户端传递到服务器。该流量已被加密,因此无法缓存。您可以使用的选项是:

  1. 使用squid's ssl bump feature来使鱿鱼解密并重新加密通过它的数据。进行此设置有些棘手,因为您必须生成一个自签名证书,并使其受到conda的信任(使用conda install --insecure可能是conda所需的全部)。

  2. 使用特定于conda的代理服务器。 Anaconda,Inc.提供了a product这样的服务器,因此您不太可能在开源conda工具中找到对此的很多内置支持。 Sonatype的Nexus存储库管理器还声称可以代理conda存储库in its documentation

  3. 使用conda的内置支持进行本地缓存。由于您在问题中引用了conda clean,因此您已经知道此缓存,并且必须有一些不使用它的原因。对于单台机器,conda pkgs_dir应该可以很好地工作。对于多台计算机,也许可以通过网络共享pkgs_dir来解决,或者将本地计算机上的所有.tar.bz2和.conda文件复制到每台计算机的pkgs_dir中。

  4. 添加第二层代理。 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/;
    }
}