After installing a fresh copy of Fedora 22, I discovered that I could not install any packages due to a faulty mirror. DNF, the new package manager, failed to detect the faulty mirror and move on to the next available one. Here are a few tweaks I made to get DNF to work even in the face of bad mirrors.
Manually install the latest update to librepo
At the time of writing, a bug fix to detect unresponsive mirrors is available in the
updates-testing repo. Usually this can be installed using a command like
sudo dnf --enable-repo fedora-updates-testing install librepo. However, due to the broken mirror, it will not succeed. Manually download
librepo-1.7.16-1.fc22.$ARCH.rpm, python-librepo-1.7.16-1.fc22.$ARCH.rpm and
python3-librepo-1.7.16-1.fc22.$ARCH.rpm from http://koji.fedoraproject.org/koji/buildinfo?buildID=639899 and install it as follows:
sudo rpm -Uvh librepo-1.7.16-1.fc22.x86_64.rpm python-librepo-1.7.16-1.fc22.x86_64.rpm python3-librepo-1.7.16-1.fc22.x86_64.rpm
Enable fastest mirror
Edit
/etc/dnf/dnf.conf and add the line
fastestmirror=True. For reference, my complete dnf.conf looks as follows:
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
fastestmirror=True
timeout=10
Disable repo failovermethod (Optional)
If you are having problems with a particular repo, edit the corresponding file in
/etc/yum.repos.d/ and comment out the line that reads:
failovermethod=priority. This instructs DNF to try any mirror instead of the first one in the list received from the metadata server.