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

问题描述 投票:0回答:1

如何配置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.7conda clean --all

并希望看到这些python软件包的下载速度非常快。但是它们总是非常缓慢。

我检查了SquidMan设置。有一个“最大对象大小”,也许可以防止缓存conda下载。它们太大了吗?因此,我将这些设置调到最大(远大于conda下载),然后重试。结果相同。

我如何配置squidman与conda一起使用?

proxy anaconda conda http-proxy squid
1个回答
0
投票

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

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

  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/;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.