国内开源镜像一览

本文简要讨论了一些常用的国内开源镜像,并简要讨论了使用方法。以后可能会有新的内容加入。

综述

以下是常用的一些镜像源:

Maven

针对某个项目修改,可以在pom.xml里加上新的repository标签:

pom.xml
1
2
3
4
5
6
<repositories>
<repository>
<id>ali-maven</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</repository>
</repositories>

全局修改,需要首先找到你的Maven安装目录,这可以使用mvn --version找到。然后修改$MAVEN_HOME/conf/settings.xml文件,找到mirrors标签,添加如下内容:

settings.xml
1
2
3
4
5
6
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

或者,你也可以修改~/.m2/settings.xml文件(用户目录下的配置文件,优先级比全局更高),如果没有此文件,可以从安装目录复制一份,同样也是加入以上内容。

Gradle

针对某个项目修改,可以在build.gradle里添加或修改相应内容:

build.gradle
1
2
3
4
5
6
7
8
9
10
11
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
}
}

allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
}
}

全局修改,可以在~/.gradle/文件夹下创建init.gradle文件并添加如下内容:

init.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
allprojects {
repositories {
def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/public'
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
}
}
}
maven { url ALIYUN_REPOSITORY_URL }
}
}

pip

pipPython的包管理工具。

1
2
3
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package # 临时使用
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 设置为默认(pip版本大于10.0.0)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U # 使用镜像升级pip

此外也可以使用pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple some-package,或者pip install -i https://pypi.douban.com/simple/ some-package

npm & yarn

npmyarn都是JavaScript世界的包管理工具,其中yarn可以通过npm install -g yarn安装。

1
2
3
4
5
npm config get registry # npm查看当前源
npm config set registry https://registry.npm.taobao.org/ # npm设置为淘宝源

yarn config get registry # yarn查看当前源
yarn config set registry https://registry.npm.taobao.org/ # yarn设置为淘宝源

此外也可使用https://r.cnpmjs.org/。官方源为https://registry.npmjs.org/

Go

1
2
3
go env -w GO111MODULE=on # 启用Go Modules(1.13之后无需设置)
go env | grep GOPROXY # 查看当前源
go env -w GOPROXY=https://goproxy.cn,direct # 设置为七牛CDN

此外也可以使用go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct

如果你使用GoLand,可以在设置-Go Modules-Environment里加上GOPROXY=https://goproxy.cn

Docker

使用docker info命令,找到Registry Mirrors,下面列出了当前的镜像源。

打开Docker Desktop的Settings,找到Docker Engine项目,修改registry-mirrors

1
2
3
4
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]

修改完毕后点击Apply&Restart即可。可以用docker info确认修改成功。

在Linux系统也可以新建/etc/docker/deamon.json文件并添加以下内容:

deamon.json
1
2
3
4
5
6
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}

随后使用sudo systemctl restart docker.service(或sudo service docker restart)重启Docker即可。

Homebrew

Homebrew是macOS上的包管理工具之一。

1
2
3
4
5
6
7
# 替换为USTC镜像
cd "$(brew --repo)"
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git

# 重设为官方镜像
cd "$(brew --repo)"
git remote set-url origin https://github.com/Homebrew/brew.git

如果为初次安装,可以参考USTC源的指南

同时,可以用以下方法替换相应组件(重置方法类似,可以参看USTC源的指南):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Homebrew Core
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

# Homebrew Cask
cd "$(brew --repo)"/Library/Taps/homebrew/homebrew-cask
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git

# Homebrew Cask Versions
cd "$(brew --repo)"/Library/Taps/homebrew/homebrew-cask-versions
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask-versions.git

# Homebrew Bottles
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile

apt

本部分参考清华镜像站。首先备份/etc/apt/sources.list

1
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

然后修改/etc/apt/sources.list文件内容,如下(注意focal代表Ubuntu 20.04 LTS,其他版本需要替换,列表写在下面):

1
2
3
4
5
6
7
8
9
10
11
12
13
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

也可以使用USTC源:https://mirrors.ustc.edu.cn/ubuntu/

Ububtu版本对应列表:

  • 12.04 LTS: precise
  • 14.04 LTS: trusty
  • 16.04 LTS: xenial
  • 18.04 LTS: bionic
  • 20.04 LTS: focal
  • 20.10: groovy
  • 21.04: hirsute

最后运行sudo apt update更新软件源列表。

还原官方源:修改为 http://cn.archive.ubuntu.com/ubuntu/

yum

本部分参考清华镜像站。首先备份/etc/yum.repos.d/CentOS-Base.repo(CentOS 8为CentOS-Linux-*.repo):

1
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

随后运行以下命令:

1
2
3
4
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo

最后运行sudo yum makecache更新软件源缓存。

还原官方源:

1
2
3
4
sudo rm -rf /etc/yum.repos.d/*.repo
sudo rpm -Uvh --force http://mirror.centos.org/centos-7/7.7.1908/os/x86_64/Packages/centos-release-7-7.1908.0.el7.centos.x86_64.rpm
yum clean all
yum makecache