上一篇文章描述了利用Nginx搭建局域网yum源,安装完成后可以使用,但是有的老铁反馈说出现如下错误,可以查询到包,但是安装的时候,提示找不到路径,我这里做了测试,总结到这篇文章中。

这里是用安装telnet服务做测试。

Error downloading packages:

1:telnet-0.17-64.el7.x86_64: failed to retrieve Packages/telnet-0.17-64.el7.x86_64.rpm from centos7

error was [Errno 2] Local file does not exist: /etc/yum.repos.d/pdate/Packages/telnet-0.17-64.el7.x86_64.rpm




centos7重启kvm虚拟机服务 centos7 kvm虚拟机丢包_centos7重启kvm虚拟机服务


发现问题:

从第一行的error中提示中提取关键词,failed to retrieve,查询资料解决,未果。

从第二行的error中发现是找不到本地路径,路径是/pdata/packages,可是这个路径在手动创建的时候并没有创建,估计是系统自动生成的。而我们在自动创建的时候只执行了createrepo的命令。

其次在浏览器中输入IP地址可以访问,而且也可以查询到文件,说明文件是存在的,并且可以下载。

解决方法:

服务器端

执行如下命令,进入放置镜像文件的路径下,本例中是

/mirror/repo/centos/x86_64/7/packages/CentOs-7-x86_64-Everything

删除repodata目录

rm -rf repodata


centos7重启kvm虚拟机服务 centos7 kvm虚拟机丢包_centos7重启kvm虚拟机服务_02


然后用以下命令重新创建,重新生成repodata目录

createrepo --update /mirror/repo/centos/x86_64/7/packages/CentOS-7-x86_64-Everything-1708

在客户端

执行如下命令

yum clean all,清除yum缓存


centos7重启kvm虚拟机服务 centos7 kvm虚拟机丢包_centos yum安装路径_03


yum makecache


centos7重启kvm虚拟机服务 centos7 kvm虚拟机丢包_centos yum安装路径_04


以上命令意思是把服务器的包信息下载到本地电脑缓存起来,makecache建立一个缓存,以后用install时就在缓存中搜索,提高了速度。

重新执行yum install telnet命令

[root@shell yum.repos.d]# yum install telnet命令


centos7重启kvm虚拟机服务 centos7 kvm虚拟机丢包_centos7重启kvm虚拟机服务_05


centos7重启kvm虚拟机服务 centos7 kvm虚拟机丢包_centos7重启kvm虚拟机服务_06


成功完成。

结论:

局域网本地yum源的连接文件主要是repodata,这个文件是用createrepo命令创建的时候自动生成的,其位置路径与创建文件的路径相同,如果出现以上这种问题,提示在哪个目录,就在服务器端把哪个目录里的repodata文件删除,用createrepo –-update命令创建新的目录,再在客户端操作。

另外在linux中,当出现错误提示的时候,查询方法,一般是提取错误关键字,其中在错误信息中有的是数字比较重要,比入第几行出错。有的是把整个错误提示复制到查询窗口,进行查询。

解决问题的关键是思路,而思路的关键是快速定位问题,快速定位问题的关键是仔细提取关键词(要一行一行,一个单词一个单词的看),这是解决问题的根本方法和捷径。