vlambda博客
学习文章列表

开源软件 和 开发工具 镜像清单

题图:Career progress

来源:https://undraw.co


在中国做开发者,殊为不易。技术创新多发源欧美,尤其开源的工具;国内巨头现在渐渐有些贡献,不过很多东西还是要取自国外。

好不容易跨过语言关,还有一道高墙。要么是各种原因被 G / F / W 连坐(例如各种 Google 的服务),要么纯粹因为太远不稳定。以前还能说先用工具慢慢下载到本地安装;现在网络越来越快,所以都流行在线安装,光连得上还不行,太慢也会 timeout 。国外开发者秒下无感的事情,我们这里可以折腾几天。

解决办法就是镜像了。所以现在配置开发环境,第一步是安装工具,第二步马上就是配置镜像,然后才能好好地下载工具和依赖。所以自己整理一个常用的镜像集合,方便每次配置环境时翻查。

注意如果是在云上使用,考虑到速度和节约流量,尽量用云服务商提供的镜像 。

像部署在阿里云上的,就全套用阿里的镜像好了。

按最近常用的靠前排序。


主流镜像站

有几个公司、大学,提供多个软件、开发工具的镜像,聚合成一个镜像主页,先放开头:

  • 阿里云官方镜像站:https://developer.aliyun.com/mirror/
  • 中科大开源镜像:https://mirrors.ustc.edu.cn/
  • 腾讯软件源:https://mirrors.cloud.tencent.com/ ,腾讯云内网地址 http://mirrors.tencentyun.com/
  • 网易开源镜像站:https://mirrors.163.com/
  • 清华开源镜像站:https://mirrors.tuna.tsinghua.edu.cn/

docker 仓库镜像

这个列表里提到 镜像,都是 mirror。但是来到 docker 这里,忽然生出了歧义。

重申一下,这里镜像说的是 docker repository mirror,不是 docker image。估计就是为了避开这层歧义,在中文互联网搜索 docker 仓库镜像,基本都会改为使用 仓库加速 这个怪怪的术语。

有网友已经收集了常见的镜像,并且写了测速脚本:https://github.com/silenceshell/docker_mirror

无非那几个巨头,速度估计不差太多,有点懒得测,随便挑一个:

  • 网易:http://hub-mirror.c.163.com
  • 中科大:https://docker.mirrors.ustc.edu.cn

阿里云的需要登录后生成。还是那句,如果在云上,直接使用服务商提供的镜像。

老 docker 的配置文件在不同发行版本有所不同,但现在都是 docker-ce 了,估计也不会倒退回去,直接都是 /etc/docker/daemon.json (不存在就新建):

{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com"
  ]
}

然后重启服务生效

sudo systemctl daemon-reload
sudo systemctl restart docker

go proxy

go modules 从 1.13 大修改,到 1.14 宣布 "ready for production use",已经是包管理的默认选项。

对于内地开发者来说使用 go modules 必备的 GOPROXY,暂时只推荐 goproxy.cn

go env -w GOPROXY=https://goproxy.cn,direct

Ubuntu 软件源

目前使用 163 的源:http://mirrors.163.com/.help/ubuntu.html

里面已经有比较详细的说明,挑选对应的发行版本下载就好。以 14.04 (trusty) 为例:

~$ cd /etc/apt/
/etc/apt$ wget http://mirrors.163.com/.help/sources.list.trusty
/etc/apt$ mv sources.list sources.list.bak
/etc/apt$ mv sources.list.trusty sources.list
/ect/apt$ apt-get update

2020 年 3 月更新:163 的镜像仍然有更新,支持最新的版本。但是 sources list 好像 15.10 (wily) 后就没了,修改起来比较麻烦。

此外还有:

  • 阿里云:https://mirrors.aliyun.com ,说明看 https://developer.aliyun.com/mirror/ubuntu

  • 中科大:https://mirrors.ustc.edu.cn/ubuntu/,说明文档 https://lug.ustc.edu.cn/wiki/mirrors/help/ubuntu

npm

推荐淘宝 NPM 镜像:https://npm.taobao.org/

因为除了镜像,他们还提供了定制的 cnpm 代替 npm:

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

除了敲命令时前面多个 c,用法上跟 npm 没有任何差别。详情可以看官方的说明。

Maven repository

Maven 仓库推荐阿里云的中央库:http://maven.aliyun.com/nexus/

一般的做法是修改 Maven 的 settings.xml:

  <mirrors>
    <mirror>
      <id>aliyun</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>

settings.xml 有两个,分别在:

  • $M2_HOME/conf/settings.xml :全局设置,在 maven 的安装目录。Windows 为 %M2_HOME%,一般要手动设置。
  • ~/.m2/settings.xml :用户设置,需要自己添加。Linux 就是用户目录,Windows 一般在 C:\Users\YourName

两个文件如果同时存在,会融合成一个文件;同时存在的设置项,以用户设置为准。

在 pom 设置 repository

但我基本不单独执行 mvn,都是在 Eclipse 里引用,不知道为什么明明在 Eclipse 设置了 settings.xml 的位置,但还是不起作用(依然访问官方库);另外,多人协作的项目,每个人都设置一次镜像也是一个麻烦。

这时最好的办法,就是在项目的 pom.xml 设置一下 repository:

 <repositories>
  <repository>
   <id>aliyun-repos</id>
   <name>Aliyun Repository</name>
   <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  </repository>
 </repositories>

 <pluginRepositories>
  <pluginRepository>
   <id>aliyun-repos</id>
   <name>Aliyun Repository</name>
   <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  </pluginRepository>
 </pluginRepositories>

优先级上,项目的设置会覆盖用户的设置。pom 是项目文件的一部分,会一起被提交和拉取,项目导入的时候直接就是到镜像去取依赖了。

gradle 项目设置

如果 Android 项目,那么构建工具就是 gradle。部分新建的 Java 项目,也有尝试用 gradle 管理依赖和构建的。Android 默认使用内置的 google()jcenter() ,由于我们知道的原因,访问非常不稳定,所以也可以替换成 Aliyun 的镜像。

maven{ url'http://maven.aliyun.com/nexus/content/groups/public/' }
maven{ url'http://maven.aliyun.com/nexus/content/repositories/jcenter'}

分别添加在 buildscriptallprojects 下的 repositories 。前者是 gradle 依赖,后者是项目依赖。

pip

网上都在推荐豆瓣的源:http://www.jianshu.com/p/785bb1f4700d

  • 豆瓣的源:https://pypi.douban.com/simple
  • 加个阿里的备用:https://mirrors.aliyun.com/pypi/simple

临时使用

pip install ModuleName -i https://pypi.douban.com/simple
  • 使用 https 安全是没有问题的。但如果碰上 https 连不上,就要加 --trusted-host
  • 虽然修改了软件源,但 pip search 命令还是不能用,因为搜索软件使用的协议与安装软件不同。 pip search 基于 xmlrpclib 实现, pip install基于 urllib2 实现。同样地,对 pip search 设置代理,也是不起作用的。

想长久生效,就要修改配置文件:

[global]
index-url = https://pypi.douban.com/simple

配置文件的位置,Linux 应该是在用户目录下的 ~/.pip/pip.conf,如果不存在可以自己创建,pip 会默认从这个文件读取配置。Windows 的配置可以参考 http://blog.csdn.net/styshoo/article/details/52865373 ,跟 Linux 类似,不过有好几个地方,可以 echo 系统参数,看哪个存在。

Android SDK

开发工具和手动下载对应的包,可以访问 AndroidDevTools[1]

上面提供的镜像,我都试过,除了 Bugly 其他都不稳定或者根本连不上(所在地是广州)。因为 Bugly 要登录,本不想那么麻烦也没有办法了。不过只要用 QQ 号登录就好,这个估计谁都有。s>

详细的用法在上面有介绍:https://dsx.bugly.qq.com/repository/1

Jenkins plugins

Jenkins 镜像列表[2]

ping 了一下延时,感觉 http://mirror.esuni.jp 速度还可以,所以就用了这个。

http://mirror.esuni.jp/jenkins/updates/update-center.json

填到 Jenkins > 插件管理 > 高级 > 升级站点 即可。

偶尔还是有安装失败,这时只好手动下载插件之后上传了。

更新:

现在清华的镜像 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 是更好的选择。

参考资料

[1]

AndroidDevTools: https://www.androiddevtools.cn/

[2]

Jenkins 镜像列表: http://mirrors.jenkins-ci.org/status.html