I am working on CentOS 6.7. When I install the command "yum update all", I get the following error.

[Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404
Not Found"

It goes on trying with other mirrors also, but fails after trying all mirrors. What I have observed is that, I can browse to the URL "http://centos-hn.viettelidc.com.vn/6.7/updates/x86_64/repodata/". in my internet explorer, but I do not find the file ""fd8c1fcb64e32ff588e93a20dfda7f205841bc090e3c8da42c0b2c2a9cf01938-primary.sqlite.bz2". I also tried to execute the following command just so that I am sure I get the lastest CentOS repo file.

 yum reinstall

But after executing the above command, I see the same URI being mentioned in the CentOS-Base.repo file. Can anyone help me understand what am I doing wrong. I am not an expert in CentOS. Thanks.


I found the solution from the CentOS forum, which I am putting here.

The problem was with the cached meta data. I executed "yum clean" command first to remove all the cached metadata. I then executed "yum update" which correctly downloaded all the packages.


What I remember is that http should be replace by https. You should do this in the repository configuration file. If you fix that, it will probably run.

I can't find the location and name of this file on my system, which is not Centos so you have to look for that yourself. (Well it might be /etc/yum.repos.d/)

  • If I replace "http" with "https" and try the URL in browser, I get "website not available", so I do not think this is a protocol issue, but rather the case of missing file. There are many CentOS-*.repo file. I do not want to manually update these repo files, unless someone suggests that there is something wrong with the URIs in these repo files – KurioZ7 Dec 16 '15 at 3:15

There are several causes of this i am listing which i faced in my experience. 1 - Client is not able to communicate with internet 2 - repos are not enabled. 3 - in repofile baseurl or mirrorlist is not properly set.

Solution for Problem # 1 Make sure internet communication on client by pinging to any internet resource.

root@localhost # ping     ==> If ping reply not receiving then check internet connection  

check name resolution

root@localhost # curl ident.me    ==> This should return your public IP if nothing returns then check your dns configuration in /etc/resolv.conf

Solution For problem # 2 Goto your repo files and check repositories are enabled atleast one should be enabled

Solution For problem # 3 Change base url from mirror list vise versa for resolution.


Search and add/enable a valid repository from Google, then run yum clean to clear off partial transactions. That should solve everything to execute the update.


The real answer to the ops question is that createrepo has to be run on the repo on the server to create the missing file. Apparently there was some change made to the repo that wasn't reflected (created by createrepo) in the repodata directory.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.