MHuiG

「看庭前花开花落,望天上云卷云舒」

# Package Manager Proxy Settings

MHuiG

字数：1.5k 字

时长：7 分钟

如果你的包管理器想直接使用优秀的镜像仓库，请参考这个：Thanks-Mirror

## pip

添加至 `~/.config/pip/pip.conf`

~/.config/pip/pip.conf

    [global]
    proxy=http://localhost:1087

注意不支持 socks5。

## git

### clone with ssh

在文件 `~/.ssh/config` 后添加下面两行

~/.ssh/config

    Host github.com
    # Mac下
    ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p
    # Linux下
    ProxyCommand nc --proxy-type socks5 --proxy 127.0.0.1:1080 %h %p

注意 Linux 和 Mac 下 ncat/netcat 区别，详见：
What are the differences between ncat, nc and netcat?

### clone with http

    git config --global http.proxy http://127.0.0.1:1087

建议使用 http, 因为 socks5 在使用 git-lfs 时会报错 `proxyconnect tcp: dial tcp: lookup socks5: no such host`

### Reference

laispace/git 设置和取消代理

## cargo

Cargo 会依次检查以下位置:

1. 环境变量 `CARGO_HTTP_PROXY`

    export CARGO_HTTP_PROXY=http://127.0.0.1:1080

1. 任意 `config.toml` 中的 `http.proxy`

    [http]
    proxy = "127.0.0.1:1080"

3. 环境变量 `HTTPS_PROXY` & `https_proxy` & `http_proxy`

    export https_proxy=http://127.0.0.1:1080
    export http_proxy=http://127.0.0.1:1080

`http_proxy` 一般来讲没必要，除非使用基于 HTTP 的 Crate Repository

Cargo 使用 libcurl，故可接受任何符合 libcurl format 的地址与协议

( `127.0.0.1:1080` , `http://127.0.0.1:1080`, `socks5://127.0.0.1:1080` ）均可

### Reference

The Cargo Book - httpproxy

## apt (apt-get)

在 `/etc/apt/apt.conf.d/` 目录下新增 `proxy.conf` 文件，加入：

/etc/apt/apt.conf.d/proxy.conf

    Acquire::http::Proxy "http://127.0.0.1:8080/";
    Acquire::https::Proxy "http://127.0.0.1:8080/";

如果希望使用 Socks5 代理，则加入：

/etc/apt/apt.conf.d/proxy.conf

    Acquire::http::Proxy "socks5h://127.0.0.1:8080/";
    Acquire::https::Proxy "socks5h://127.0.0.1:8080/";

### Reference

- apt.conf “Acquire::http:Proxy “proxyserver:port” seems not to be used
- socks5 vs socks5h

## curl

添加至 `~/.curlrc`。

~/.curlrc

    socks5 = "127.0.0.1:1080"

## Gradle

添加至 `~/.gradle/gradle.properties`

~/.gradle/gradle.properties

    systemProp.http.proxyHost=127.0.0.1
    systemProp.http.proxyPort=1087
    systemProp.https.proxyHost=127.0.0.1
    systemProp.https.proxyPort=1087

### Reference

Gradle proxy configuration

## Maven

添加至 `%Maven 安装目录%/conf/settings.xml`。

% Maven 安装目录 %/conf/settings.xml

    <!-- proxies
     | This is a list of proxies which can be used on this machine to connect to the network.
     | Unless otherwise specified (by system property or command-line switch), the first proxy
     | specification in this list marked as active will be used.
     |-->
    <proxies>
      <!-- proxy
       | Specification for one proxy, to be used in connecting to the network.
       |
      <proxy>
        <id>optional</id>
        <active>true</active>
        <protocol>http</protocol>
        <username>proxyuser</username>
        <password>proxypass</password>
        <host>proxy.host.net</host>
        <port>80</port>
        <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
      </proxy>
      -->
       <proxy>
        <id>proxy</id>
        <active>true</active>
        <protocol>http</protocol>
        <host>127.0.0.1</host>
        <port>1087</port>
      </proxy>
    </proxies>

### Reference

Guide-proxies

## go get

    HTTP_PROXY=socks5://localhost:1080 go get

测试了下 HTTPS_PROXY 和 ALL_PROXY 都不起作用，或可使用：goproxy.io

## npm

    npm config set proxy http://127.0.0.1:1087
    npm config set https-proxy http://127.0.0.1:1087

用 socks5 就报错。
推荐使用 yarn，npm 是真的慢。

### reference

- Is there a way to make npm install (the command) to work behind proxy?
- NPM Binary 镜像配置

## rustup

    export https_proxy=http://127.0.0.1:1080

## yarn

    yarn config set proxy http://127.0.0.1:1087
    yarn config set https-proxy http://127.0.0.1:1087

不支持 socks5

### Reference

yarn 需要像 npm 一样配置代理么？

## yarn2

Yarn 2+ - Official

    yarn config set httpProxy http://127.0.0.1:1087
    yarn config set httpsProxy http://127.0.0.1:1087

不支持全局设置，支持 socks5。

提示：这个命令会修改项目目录下的 `.yarnrc.yml` 文件，请留意不要把带有如:

.yarnrc.yml

    httpsProxy: "socks5://127.0.0.1:1080"

的代码提交到仓库，以免造成麻烦

建议使用 npm 镜像而不是配置使用代理

    yarn config set npmRegistryServer https://127.0.0.1:1087

注意：此方法不适用于下载 yarn 官方插件！

yarn 的官方插件默认会从 GitHub (raw.githubusercontent.com) 上下载，您可能依旧需要配置代理。

### Reference

- yarn doc - httpProxy
- yarn doc - httpsProxy

## gem

添加至 `~/.gemrc`。

.gemrc

    ---
    # See 'gem help env' for additional options.
    http_proxy: http://localhost:1087

## brew

设置环境变量：

    ALL_PROXY=socks5://localhost:1080

## wget

添加至 `~/.wgetrc`。

.wgetrc

    use_proxy=yes
    http_proxy=127.0.0.1:1087
    https_proxy=127.0.0.1:1087

### Reference

How to set proxy for wget?

## snap

    sudo snap set system proxy.http="http://127.0.0.1:1087"
    sudo snap set system proxy.https="http://127.0.0.1:1087"

### Reference

How to install snap packages behind web proxy

## docker

    $ sudo mkdir -p /etc/systemd/system/docker.service.d
    $ sudo vim /etc/systemd/system/docker.service.d/proxy.conf

    [Service]
    Environment="ALL_PROXY=socks5://localhost:1080"

    $ sudo systemctl daemon-reload
    $ sudo systemctl restart docker

必须是 socks5，http 不生效

## Electron Dev Dependency

设置环境变量

    ELECTRON_GET_USE_PROXY=true
    GLOBAL_AGENT_HTTPS_PROXY=http://localhost:1080

### References

- Advanced Installation Instructions
- global-agent

## Visual Studio Code Remote (WSL2)

WSL2 环境下可以通过设置 `~/.vscode-server/server-env-setup` 脚本文件，设置开发环境的环境变量，使用代理。

WSL2 内环境访问 Win 下的代理程序端口代理 (例子代码中 http 代理端口监听 17070)，因为子网地址每次启动都不一样，需要动态处理。

新建 `~/.vscode-server/server-env-setup` 文件，该文件会在 VSCode 启动 WSL 环境后被 `source`。

server-env-setup

    WSL_HOST=$(sed -n '/^nameserver/p' /etc/resolv.conf | cut -d' ' -f2)
    export http_proxy=http://${WSL_HOST}:17070
    export https_proxy=$http_proxy
    export all_proxy=$http_proxy

### References

Developing in WSL

## Visual Studio Code Remote (SSH)

VSCode SSH 后的环境不会使用本地界面 VSCode 内的代理设置，如果 SSH 主机没有默认网络链接或在墙内，会导致问题。

### SSH 主机无网络

需要手动下载 vscode 的 server 端传输部署。详情见链接

- How can I install vscode-server in linux offline [duplicate]
- download-vs-code-server.sh

### SSH 主机在墙内

虽然文档未提及，但是可以使用 WSL 模式的方案，配置 `~/.vscode-server/server-env-setup` 文件设置代理。

SSH 主机有代理程序监听在 17070 端口：

新建 `~/.vscode-server/server-env-setup` 文件，该文件会在 VSCode 启动 WSL 环境后被 source。

server-env-setup

    export http_proxy=http://127.0.0.1:17070
    export https_proxy=$http_proxy
    export all_proxy=$http_proxy

### References

Remote Development using SSH

## Scoop

    scoop config proxy 127.0.0.1:1080

### Reference

Using Scoop behind a proxy

## OpenWRT opkg

在 LUCI 面版菜单配置或者 /etc/opkg.conf 末尾追加

/etc/opkg.conf

    option http_proxy http://localhost:1080/

### References

[OpenWrt Wiki] Opkg package manager

## Chocolatey

从 0.9.9.9 版本开始，choco 支持在配置文件显式配置代理。

    # 设置代理
    choco config set proxy http://localhost:8888
    # 取消代理
    choco config unset proxy

除此之外，从 0.10.4 版本开始，`choco` 会自动寻找 `http_proxy` 和 `https_proxy` 或者 `noproxy` 环境变量，通过在命令行临时设置环境变量的方式也可以方便调整 `choco` 的代理设置。

### Reference

Chocolatey Software Docs | Use Chocolatey w/Proxy Server

推荐阅读
适用于Linux的windows子系统 CentOS7设置Jupyter Npm 更换源 Nginx配置 kafka的安装部署 kafka-manager 监控工具的使用

留言区

Notes
本文目录
Are You A Robot?