常用软件代理设置

 

由于国内的网络环境, 经常遇到网络无法连接的情况, 此时可以使用代理或者使用镜像来解决

使用代理

假设代理配置如下

  • socks5协议, 本地端口10808
  • http协议, 本地端口10809

pip使用代理

  • 配置文件

~/.config/pip/pip.conf

  • Unix:$HOME/.config/pip/pip.conf
  • Mac: $HOME/Library/Application Support/pip/pip.conf
  • Windows:%APPDATA%\pip\pip.ini,%APPDATA% 的实际路径我电脑上是 C:\Users\user_xxx\AppData\Roaming,可在 cmd 里执行 echo %APPDATA% 命令查看
[global]
proxy=http://localhost:10809

注意不支持socks5代理, 如果使用socks5代理, 需要先安装pip install pysocks

  • 单次使用
pip install --proxy http://localhost:10809 requests
  • 全局设置
# 设置
pip config set global.proxy http://localhost:10809
# 取消设置
pip config unset global.proxy

git使用代理

clone with ssh

  • 配置文件

~/.ssh/config

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

clone with http

  • 配置文件

~/.gitconfig

[http]
    proxy = http://localhost:10809
[https]
    proxy = http://localhost:10809
  • 单次使用
git clone --config http.proxy=http://localhost:10809 <https://repository_url>
  • 全局设置
# 设置
git config --global http.proxy http://localhost:10809
git config --global https.proxy http://localhost:10809
# 取消设置
git config --global --unset http.proxy
git config --global --unset https.proxy

仅仅设置github的代理

# 仅设置github.com
git config --global --add http.https://github.com.proxy http://localhost:10809
git config --global --add https.https://github.com.proxy http://localhost:10809
# 取消设置
git config --global --unset http.https://github.com.proxy
git config --global --unset https.https://github.com.proxy

apt使用代理

  • 配置文件

在 /etc/apt/apt.conf.d/ 目录下新增 proxy.conf 文件,加入:

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

如果希望使用 Socks5 代理,则加入:

Acquire::http::Proxy "socks5h://127.0.0.1:10808/";
Acquire::https::Proxy "socks5h://127.0.0.1:10808/";
  • 单次使用
sudo apt-get -o Acquire::http::proxy="socks5h://127.0.0.1:10808/" -o Acquire::https::proxy="socks5h://127.0.0.1:10808/" update

gradle使用代理

  • 配置文件

~/.gradle/gradle.properties

systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=10809
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=10809
systemProp.socks.proxyHost=127.0.0.1
systemProp.socks.proxyPort=10808
  • 单次使用
gradle -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=10809 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=10809 <command>

maven使用代理

  • 配置文件

~/.m2/settings.xml

  <proxies>
     <proxy>
      <id>proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>127.0.0.1</host>
      <port>10809</port>
    </proxy>
  </proxies>
  • 单次使用
mvn -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=10809 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=10809 <command>

go使用代理

  • 单次使用
HTTP_PROXY=socks5://localhost:10808 go get

npm使用代理

不支持socks5代理

  • 配置文件

~/.npmrc

proxy=http://localhost:10809
https-proxy=http://localhost:10809
  • 单次使用
npm --proxy http://localhost:10809 install packagename
  • 全局设置
# 设置
npm config set proxy http://localhost:10809
npm config set https-proxy http://localhost:10809
# 取消设置
npm config delete proxy
npm config delete https-proxy

yarn使用代理

  • 配置文件

~/.yarnrc

proxy "http://localhost:10809"
https-proxy "http://localhost:10809"
  • 单次使用
yarn --proxy http://localhost:10809 add packagename
  • 全局设置
# 设置
yarn config set proxy http://localhost:10809
yarn config set https-proxy http://localhost:10809
# 取消设置
yarn config delete proxy
yarn config delete https-proxy

yarn2使用代理

  • 配置文件

~/.yarnrc.yml

httpProxy: "http://localhost:10809"
httpsProxy: "http://localhost:10809"
  • 单次使用
yarn --proxy http://localhost:10809 add packagename
  • 全局设置
# 设置
yarn config set httpProxy http://localhost:10809
yarn config set httpsProxy http://localhost:10809
# 取消设置
yarn config delete httpProxy
yarn config delete httpsProxy

gem使用代理

  • 配置文件

~/.gemrc

http_proxy: http://localhost:10809

wget使用代理

  • 配置文件

~/.wgetrc

use_proxy = yes
http_proxy = http://localhost:10809
https_proxy = http://localhost:10809
  • 单次使用
wget --proxy=on --http-proxy=http://localhost:10809 --https-proxy=http://localhost:10809 <url>

curl使用代理

  • 配置文件

~/.curlrc

proxy = http://localhost:10809
  • 单次使用
curl --proxy http://localhost:10809 <url>
curl -x http://localhost:10809 <url>
curl --proxy socks5://localhost:10808 <url>
curl --proxy socks5h://localhost:10808 <url>

brew使用代理

  • 单次使用
ALL_PROXY=socks5://localhost:10808 brew ...

snap使用代理

  • 全局设置
# 设置
sudo snap set system proxy.http=http://localhost:10809
sudo snap set system proxy.https=http://localhost:10809
# 取消设置
sudo snap unset system proxy.http
sudo snap unset system proxy.https

docker使用代理

使用代理拉取镜像

必须是socks5,http不生效

# 创建配置文件夹
sudo mkdir -p /etc/systemd/system/docker.service.d
# 编辑配置文件
sudo vim /etc/systemd/system/docker.service.d/proxy.conf

# 添加以下内容
[Service]
Environment="HTTP_PROXY=socks5://127.0.0.1:10808/" "HTTPS_PROXY=socks5://127.0.0.1:10808/" "NO_PROXY=localhost,127.0.0.1,*.aliyuncs.com,*.mirror.aliyuncs.com,"

# 重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker

#删除配置
sudo rm /etc/systemd/system/docker.service.d/proxy.conf
sudo systemctl daemon-reload
sudo systemctl restart docker

build中使用代理

# 在启动 build 命令时指定网络模式为 host,类似这样:
docker build --network host --tag image-name .

# 修改 Dockerfile 文件,针对 RUN 命令使用适当的代理方式,比如:
RUN git config --global http.proxy socks5://127.0.0.1:10808
RUN git clone https://github.com/carsenk/explorer

# 如果 RUN 命令只需要环境变量即可设置代理,则不必修改 Dockerfile 文件,只要为 build 命令设置环境变量:
docker build --network host --build-arg http_proxy=socks5://127.0.0.1:10808 --tag image-name .

chocolatey使用代理

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

  • 单次使用
choco install packagename --proxy=http://localhost:10809
  • 全局设置
# 设置
choco config set proxy http://localhost:10809
# 取消设置
choco config unset proxy

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

使用镜像

完整镜像地址参考Thanks Mirror

pip使用镜像

  • 单次使用
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple <package>
  • 全局设置
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

git使用镜像

参考ghproxy

git clone https://ghproxy.com/<https_url>

apt使用镜像

ubuntu使用镜像, 配置参考

debian使用镜像, 配置参考

gradle使用镜像

  • 单个项目, 在项目根目录下的build.gradle文件中添加
buildscript {
 repositories {
  maven { url 'https://maven.aliyun.com/repository/google/' }
  maven { url 'https://maven.aliyun.com/repository/jcenter/'}
 }
 dependencies {
  classpath 'com.android.tools.build:gradle:2.2.3'

  // NOTE: Do not place your application dependencies here; they belong
  // in the individual module build.gradle files
 }  
}

allprojects {
 repositories {
  maven { url 'https://maven.aliyun.com/repository/google/' }
  maven { url 'https://maven.aliyun.com/repository/jcenter/'}
 }
}
  • 所有项目生效, 在用户目录下的.gradle文件夹下的init.gradle文件中添加
allprojects{
 repositories {
  def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/public/'
  def ALIYUN_JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter/'
  def ALIYUN_GOOGLE_URL = 'https://maven.aliyun.com/repository/google/'
  def ALIYUN_GRADLE_PLUGIN_URL = 'https://maven.aliyun.com/repository/gradle-plugin/'
  all { ArtifactRepository repo ->
   if(repo instanceof MavenArtifactRepository){
    def url = repo.url.toString()
    if (url.startsWith('https://repo1.maven.org/maven2/')) {
     project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
     remove repo
    }
    if (url.startsWith('https://jcenter.bintray.com/')) {
     project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
     remove repo
    }
    if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
     project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GOOGLE_URL."
     remove repo
    }
    if (url.startsWith('https://plugins.gradle.org/m2/')) {
     project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GRADLE_PLUGIN_URL."
     remove repo
    }
   }
  }
  maven { url ALIYUN_REPOSITORY_URL }
  maven { url ALIYUN_JCENTER_URL }
  maven { url ALIYUN_GOOGLE_URL }
  maven { url ALIYUN_GRADLE_PLUGIN_URL }
 }
}

maven使用镜像

配置文件参考阿里云镜像

<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>

go使用镜像

  • 写入配置文件
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
  • 本次执行
# macOS 或 Linux
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
# windows的powershell
$env:GO111MODULE = "on"
$env:GOPROXY = "https://goproxy.cn"
  • 每次执行
# macOS 或 Linux
echo "export GO111MODULE=on" >> ~/.profile
echo "export GOPROXY=https://goproxy.cn" >> ~/.profile
source ~/.profile
# windows添加环境变量
setx GO111MODULE on
setx GOPROXY https://goproxy.cn

npm使用镜像

  • 全局设置
# npm配置淘宝镜像升级
npm config set registry https://registry.npmmirror.com
# 查看
npm config get registry
# 删除
npm config delete registry
  • 单次使用
npm --registry https://registry.npmmirror.com install <package>

yarn使用镜像

  • 全局设置
# yarn配置淘宝镜像升级
yarn config set registry https://registry.npmmirror.com
# 查看
yarn config get registry
# 删除
yarn config delete registry
  • 单次使用
yarn --registry https://registry.npmmirror.com install <package>

gem使用镜像

  • 全局设置
# gem配置中国镜像
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
# 查看
gem sources -l
# 删除
gem sources --remove https://gems.ruby-china.com/
  • 单次使用
gem install rails --source https://gems.ruby-china.com/

brew使用镜像

参考清华大学开源软件镜像站

echo 'export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"' >> ~/.zshrc
echo 'export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git"' >> ~/.zshrc
echo 'export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"' >> ~/.zshrc

source ~/.zshrc
brew update

docker使用镜像

  • 方案一: 加前缀

    # 官方ubuntu镜像
    docker pull ubuntu
    # 上海交通大学镜像
    docker pull docker.mirrors.sjtug.sjtu.edu.cn/library/ubuntu
    # 重新打tag
    docker tag docker.mirrors.sjtug.sjtu.edu.cn/library/ubuntu ubuntu
      
    # 官方teddysun/xray镜像
    docker pull teddysun/xray
    # 上海交通大学镜像
    docker pull docker.mirrors.sjtug.sjtu.edu.cn/teddysun/xray
    # 重新打tag
    docker tag docker.mirrors.sjtug.sjtu.edu.cn/teddysun/xray teddysun/xray
    
  • 方案二: 配置文件

    {
      "registry-mirrors": [
        "https://docker.mirrors.sjtug.sjtu.edu.cn",
        "https://docker.mirrors.ustc.edu.cn",
        "http://hub-mirror.c.163.com",
        "https://docker.nju.edu.cn"
      ]
    }
    

参考