巧解国内网络环境下部分yum源下载速度过慢的问题
本文完整阅读约需 7 分钟,如时间较长请考虑收藏后慢慢阅读~
众所周知,CentOS下的大部分软件源服务器都在海外,因此使用这些软件源下载软件速度会非常慢,甚至完全下载不了。对于官方源我们可以使用Tuna等国内镜像加快速度,但对于Docker、MySQL、Remi等非官方源则无能为力。本文将介绍一个巧妙解决这一问题的方法,以便加快非官方源安装速度。
0x01 准备工作
在阅读下文之前,请保证你拥有以下两个条件中的任意一个:
- 有良好的网络环境,可以畅通无阻访问全球各地服务器
- 有一台海外服务器,可以高速下载全球各地数据
除此之外,你还需要了解对应软件的地址,以CentOS 7下的MySQL 5.6为例,其地址为http://repo.mysql.com/yum/mysql-5.6-community/el/7/x86_64/ ,内含所需的所有rpm包。
如果不知道这些软件的地址,可以先尝试使用yum正常安装之,然后在确认安装界面获得其名称、版本号等信息:
接下来在https://centos.pkgs.org/搜索对应软件名称+版本号,就可以导航到对应软件的页面。
在页面最下方有一个Download
面板,里面的地址就是该软件的实际下载地址。
0x02 实现机制
部分读者了解过CentOS的yum具有断点续传的功能,该功能依赖的是yum的包缓存机制,也就是会将下载过的数据缓存在本地,下次下载时会从缓存开始继续下载。
了解这一点,对于本文非常重要。因为如果我们提前把完整的安装包放在缓存目录,再执行安装,yum就会认为是已经下载完成的软件包,跳过下载,直接安装。
0x03 具体操作
还是以上文所述的MySQL为例,截图中可以看到其依赖以下几个包:
mysql-community-client-5.6.47-2.el7.x86_64.rpm
mysql-community-common-5.6.47-2.el7.x86_64.rpm
mysql-community-libs-5.6.47-2.el7.x86_64.rpm
mysql-community-server-5.6.47-2.el7.x86_64.rpm
具体操作步骤如下:
- 首先使用本机或者海外服务器从对应链接下载这几个包后,通过FTP、SCP等方式传输到需要安装的服务器任意目录。
-
然后执行一次正常安装流程,在开始下载这几个包之后按下
Ctrl+C
组合键中止下载流程,此时缓存目录已经成功建立。 -
接下来进入
/var/cache/yum/x86_64/7/
目录,可以看到该目录中有着以软件名称命名的文件夹,我们进入mysql56-community
,然后进入packages
目录。该目录中应该有前一步未下载完成的文件。 -
将
packages
目录中所有文件删除,将之前传输到服务器的几个rpm
包拷贝过来。 -
然后重复2的流程,但不要中止,这时候yum应该会从缓存目录获取所需的包,直接进入安装流程。
此时,就已完成了安装过程,通过操作缓存目录的方式巧妙加速了yum源的下载速度。
0x04 常见问题
可能还有部分读者按照上文步骤未能成功,这里我总结了可能会出现的几个原因:
-
版本不对。下载了正确的软件,但版本号/架构类型/发行版不同。必须使用和下载界面中完全相同的版本号才能安装成功。
-
文件名不对。yum安装时的rpm包文件名格式一般是
{包名}-{版本号}.{发行版}.{处理器架构}.rpm
,必须保证该格式正确,yum才会找到你所拷贝的缓存并安装。 -
文件损坏。软件包的大小可以在https://centos.pkgs.org/看到,如果发现所下载文件的大小和网站中标识大小有较大差异,说明文件可能出现了损坏,建议重新下载。
-
目录错误。以上文为例,拷贝到的目录应该是
/var/cache/yum/x86_64/7/mysql56-community/packages/
目录,如果拷贝到了错误的目录,也是无法加速的。
1.还有一种下载方法更简便,要求是海外的机器与国内的机器具有相同的配置,直接在海外机器上
yum install --downloadonly mysql-community-server
2.一些非官方源也可以从国内的镜像站点加速下载,如docker
是的,这种方法也很不错,下载后再传输到国内来。