The guide you mention is a bit convoluted and contains a lot of unnecessary additional information on one page which makes the whole subject appear very complicated when in fact 2 simple commands are sufficient in most cases. Furthermore, apparently you have to follow 2 links ("methods" in warning message that tells you not to use dnf, then "dedicated page") to get to the page that actually explains how to use the system-upgrade plugin - which is the official way to prepare the upgrade.
Specifically, this wiki page, which is linked in the question, explains how to use yum/dnf directly for upgrading, which is not recommended, it's not the official way. "Not recommended" often means "It could break something". At least, there is a yellow warning notice at the top of the page basically telling users not to do what's described on that page unless they know what they're doing. Fedora has an official way to upgrade. A long time ago, it used to be PreUpgrade, starting with Fedora 18 it was FedUp and starting with the upgrade to Fedora 23, it's now the dnf plugin "system-upgrade". To be clear, this is a plugin for dnf, not just dnf itself.
Since it's not clear which commands have been used, this will be a very generic answer.
As for the original question, an answer has already been accepted, but according to the author's comment, an error occurred. First of all, do not change version numbers in config files manually unless you have a good reason. You may break even more.
It does sound like you upgraded to rawhide instead of 23, in which case you'll want to attempt a downgrade. So may I suggest:
# dnf system-upgrade --releasever=23 --setopt=deltarpm=false distro-sync
# dnf system-upgrade reboot
Don't forget the system-upgrade argument to call the plugin!
What not to do
Don't change version numbers in config files and run dnf. If you're lucky, you've just wrongly modified a file that other programs rely on; if you're unlucky you may break future updates/upgrades, specifically when changing repo files. Don't remove the
$releasever variable from the
/etc/yum.repos.d/*.repo files either, these variables are important. If you do this and forget to change them again in 6 months for the next upgrade, that upgrade will probably break or fail terribly.
If you've already changed config files (following bad advice, of which you can find a lot on the Internet), revert your changes first by using the backup copy of each file you have created before changing it.
How to upgrade from Fedora 22 to Fedora 23 (officially)
Since FedUp has been deprecated and systemd is now used internally to upgrade the system, there is a new command to prepare and start the upgrade - "dnf system-upgrade ...". But for compatibility reasons, the fedup command still works.
Again, the upgrade is started by a dnf plugin called system-upgrade, not by dnf itself. So you must at least install the current version of this plugin first:
- Install/update the "system-upgrade" plugin:
dnf install dnf-plugin-system-upgrade
In some cases, it might complain about dependency issues, you may have to add
dnf install --best dnf-plugin-system-upgrade
- You should update your system prior to preparing the upgrade. It often works anyway, but the upgrade is not guaranteed to work unless you update, so:
Then prepare and start the upgrade, which is basically a two-step process:
# dnf system-upgrade download --releasever=23
# fedup --network 23 (redirects to
# dnf system-upgrade reboot
This last command will reboot the system into upgrade mode. Unlike FedUp, which created a new Grub boot entry "System Upgrade" that had to be selected on boot, the system will perform a regular shutdown, start booting normally but then start the upgrade process before the graphical desktop is loaded. If everything works out, your new Fedora 23 will boot afterwards.
dnf Python Traceback error
Currently, there are issues reported with dnf breaking, every dnf call would show a backtrace. This should be fixed by updating the system normally, but that wouldn't be possible without dnf, so a workaround has to be used. The error message (for any dnf call) would look something like this:
Traceback (most recent call last):
File "/bin/dnf", line 36, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 51: ordinal not in range(128)
A workaround would be to prepend every dnf call with
LANG=C, for example to perform a full update:
# LANG=C dnf -y upgrade
dnf system-upgrade reboot loop
There are scenarios in which the system upgrade fails to start, but instead of just starting once and then rebooting back into the system, it will get itself into a reboot loop, which makes it impossible to use the system. This appears to happen so often that it's even mentioned in the README, so I thought I'd mention it here too. How to break out of the upgrade reboot loop:
- Right after startup, in the Grub boot menu, hit e to edit the boot parameters. In the text area, scroll down to the line that starts with
linux, hit End to move the cursor to the end of the line and append (after a whitespace)
rd.break. Then hit F10 to boot into emergency mode, you will get a shell.
- You will have to delete a file, so you have to remount the root filesystem read-write because it's mounted read-only:
# mount -o remount,rw /sysroot
- Delete the system-upgrade link:
# rm /sysroot/system-update
- Reboot (
reboot command or Ctrl+Alt+Del), the system should boot normally. You might want to clear the upgrade files by running
dnf system-upgrade clean.