环境:CentOS 6.5
问题:自建repos库后,执行sudo yum install ***,出现[Errno 256] No more mirrors to try.错误提示。
尝试解决途径:按照网上的博客的提示,尝试使用sudo yum clean all或者sudo yum makecache等方法,最终都无济于事。
问题排查:由于网络的方法都围绕yum clean all进行,而我这里有没有效果。所以,怀疑是createrepo命令的参数设置有问题。
我当前的目录是/usr/repo,当前目录内有一个文件夹Packages用来存放rpm文件,我的创建指令是
createrepo ./Packages -o ./
随后当前目录的内容有./Packages和./repodata两个文件夹。
我的yum.conf文件配置项设置为
baseurl=/home/usr/repo
我当初的设想是,运行yum install **.rpm后,yum会到/home/usr/repo去找repodata文件夹,然后读取里面的数据,随后将分析结果上报,等待用户的[Y/N]确认操作。用户选择Y后,便下载文件进行rpm安装。
此时提示错误:[Errno 256] No more mirrors to try.
后来将rpm文件都拷贝到/home/usr/repo目录内,结果没有提示这类错误。
所以,可以确认问题出子在生成repodata的时候,路径关系逻辑出现来错误。
createrepo默认是将repodata放置在搜索其实文件加下的,这样repodata的内部文件描述rpm路径的路基关系才能成立。
于是乎,做了个实验,执行命令
createrepo ./Packages
结果,在./Packages文件夹内部生成了repodata文件夹。
所以,不要用-o指令指定repodata的输出目的路径。
解决方法:
使用正确的指令
createrepo ./
即可!