Downgrading Fedora ‘rawhide’ -> Fedora 24

Time to downgrade my main desktop finally came. This time I decided to provide more details about process as my system uses Rawhide with set of external repositories (RPM Fusion (official + my rebuilds), few COPR ones etc).

So first step is to enable caching because dnf by default erases all downloaded packages. And downgrade involves fetching many of them. Edit ‘/etc/dnf/dnf.conf’ file and add “keepcache=1” line there.

First try:

10:48 root@puchatek:hrw# dnf --releasever 24 --disablerepo rawhide --enablerepo fedora --enablerepo updates  distro-sync  --best --allowerasing
Error: package python2-deltarpm-3.6-17.fc25.x86_64 requires deltarpm(x86-64) = 3.6-17.fc25, but none of the providers can be installed.
package libcrypt-nss-2.24.90-6.fc26.x86_64 requires glibc(x86-64) = 2.24.90-6.fc26, but none of the providers can be installed.
package gmp-c++-1:6.1.1-1.fc25.x86_64 requires gmp(x86-64) = 1:6.1.1-1.fc25, but none of the providers can be installed.
package iproute-tc-4.7.0-1.fc26.x86_64 requires iproute(x86-64) = 4.7.0-1.fc26, but none of the providers can be installed.
package ffmpeg-libs-3.1.1-1.fc26.x86_64 requires libvpx.so.4()(64bit), but none of the providers can be installed.
package pcre-cpp-8.39-3.fc26.x86_64 requires pcre(x86-64) = 8.39-3.fc26, but none of the providers can be installed.
package perl-libintl-perl-1.26-1.fc25.x86_64 requires perl(:MODULE_COMPAT_5.24.0), but none of the providers can be installed.
package python3-rpm-4.13.0-0.rc1.46.fc26.x86_64 requires rpm(x86-64) = 4.13.0-0.rc1.46.fc26, but none of the providers can be installed.
package systemd-pam-231-4.fc26.x86_64 requires systemd = 231-4.fc26, but none of the providers can be installed.
package libvirt-libs-2.2.0-1.fc26.x86_64 requires libxenlight.so.4.7()(64bit), but none of the providers can be installed.
package glibc-2.24.90-6.fc26.i686 requires glibc-common = 2.24.90-6.fc26, but none of the providers can be installed.
package python2-rpm-4.13.0-0.rc1.46.fc26.x86_64 requires rpm(x86-64) = 4.13.0-0.rc1.46.fc26, but none of the providers can be installed.
nothing provides libhogweed.so.2()(64bit) needed by ffmpeg-libs-2.6.3-1.fc22.x86_64.
package ffmpeg-libs-3.1.1-1.fc26.x86_64 requires libvpx.so.4()(64bit), but none of the providers can be installed

As you see there is set of blockers. One of them is “ffmpeg-libs” from RPM Fusion, others are from normal Fedora repositories. One of reasons can be that packages got split/renamed since F24. Let’s try to handle some of them:

10:52 root@puchatek:hrw# dnf --releasever 24 --disablerepo rawhide --enablerepo fedora --enablerepo updates --best --allowerasing downgrade rpm glibc
Dependencies resolved.
================================================================================
 Package                      Arch     Version                 Repository  Size
================================================================================
Installing:
 rpm-python                   x86_64   4.13.0-0.rc1.27.fc24    fedora     102 k
 rpm-python3                  x86_64   4.13.0-0.rc1.27.fc24    fedora     102 k
Removing:
 libcrypt-nss                 i686     2.24.90-6.fc26          @rawhide    34 k
 libcrypt-nss                 x86_64   2.24.90-6.fc26          @rawhide    36 k
 python2-rpm                  x86_64   4.13.0-0.rc1.46.fc26    @rawhide   182 k
 python3-rpm                  x86_64   4.13.0-0.rc1.46.fc26    @rawhide   190 k
Downgrading:
 glibc                        i686     2.23.1-10.fc24          updates    4.3 M
 glibc                        x86_64   2.23.1-10.fc24          updates    3.6 M
 glibc-common                 x86_64   2.23.1-10.fc24          updates    862 k
 glibc-devel                  i686     2.23.1-10.fc24          updates    936 k
 glibc-devel                  x86_64   2.23.1-10.fc24          updates    936 k
 glibc-headers                x86_64   2.23.1-10.fc24          updates    501 k
 glibc-langpack-en            x86_64   2.23.1-10.fc24          updates    276 k
 glibc-langpack-pl            x86_64   2.23.1-10.fc24          updates    133 k
 glibc-static                 x86_64   2.23.1-10.fc24          updates    1.5 M
 rpm                          x86_64   4.13.0-0.rc1.27.fc24    fedora     513 k
 rpm-build                    x86_64   4.13.0-0.rc1.27.fc24    fedora     139 k
 rpm-build-libs               x86_64   4.13.0-0.rc1.27.fc24    fedora     117 k
 rpm-libs                     x86_64   4.13.0-0.rc1.27.fc24    fedora     295 k
 rpm-plugin-selinux           x86_64   4.13.0-0.rc1.27.fc24    fedora      54 k
 rpm-plugin-systemd-inhibit   x86_64   4.13.0-0.rc1.27.fc24    fedora      54 k

Transaction Summary
================================================================================
Install     2 Packages
Remove      4 Packages
Downgrade  15 Packages

Total download size: 14 M
Is this ok [y/N]: 

Went fine. So next set of blockers goes:

10:54 root@puchatek:hrw# dnf --releasever 24 --disablerepo rawhide --enablerepo fedora --enablerepo updates --best --allowerasing downgrade *deltarpm* gmp* iproute*
Dependencies resolved.
================================================================================
 Package                 Arch         Version              Repository      Size
================================================================================
Installing:
 python-deltarpm         x86_64       3.6-15.fc24          fedora          37 k
Removing:
 gmp-c++                 x86_64       1:6.1.1-1.fc25       @rawhide        23 k
 iproute-tc              x86_64       4.7.0-1.fc26         @rawhide       660 k
 python2-deltarpm        x86_64       3.6-17.fc25          @rawhide        44 k
Downgrading:
 deltarpm                x86_64       3.6-15.fc24          fedora          89 k
 gmp                     i686         1:6.1.1-1.fc24       updates        305 k
 gmp                     x86_64       1:6.1.1-1.fc24       updates        315 k
 gmp-devel               x86_64       1:6.1.1-1.fc24       updates        185 k
 iproute                 x86_64       4.4.0-3.fc24         fedora         658 k
 iptables                x86_64       1.4.21-16.fc24       fedora         425 k
 iptables-services       x86_64       1.4.21-16.fc24       fedora          53 k

Transaction Summary
================================================================================
Install    1 Package
Remove     3 Packages
Downgrade  7 Packages

Total download size: 2.0 M
Is this ok [y/N]: y
Downloading Packages:
(1/8): deltarpm-3.6-15.fc24.x86_64.rpm          139 kB/s |  89 kB     00:00    
(2/8): gmp-6.1.1-1.fc24.x86_64.rpm              384 kB/s | 315 kB     00:00    
(3/8): gmp-6.1.1-1.fc24.i686.rpm                320 kB/s | 305 kB     00:00    
(4/8): gmp-devel-6.1.1-1.fc24.x86_64.rpm        445 kB/s | 185 kB     00:00    
(5/8): iptables-services-1.4.21-16.fc24.x86_64. 437 kB/s |  53 kB     00:00    
(6/8): python-deltarpm-3.6-15.fc24.x86_64.rpm   303 kB/s |  37 kB     00:00    
(7/8): iptables-1.4.21-16.fc24.x86_64.rpm       1.0 MB/s | 425 kB     00:00    
(8/8): iproute-4.4.0-3.fc24.x86_64.rpm          1.1 MB/s | 658 kB     00:00    
--------------------------------------------------------------------------------
Total                                           475 kB/s | 2.0 MB     00:04     
Running transaction check
Transaction check succeeded.
Running transaction test
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Error: Transaction check error:
  file /usr/lib64/libip4tc.so.0.1.0 from install of iptables-1.4.21-16.fc24.x86_64 conflicts with file from package iptables-libs-1.6.0-2.fc25.x86_64
  file /usr/lib64/libip6tc.so.0.1.0 from install of iptables-1.4.21-16.fc24.x86_64 conflicts with file from package iptables-libs-1.6.0-2.fc25.x86_64
  file /usr/lib64/libiptc.so.0.0.0 from install of iptables-1.4.21-16.fc24.x86_64 conflicts with file from package iptables-libs-1.6.0-2.fc25.x86_64

Error Summary
-------------

So let’s go level deeper with packaging:

10:56 root@puchatek:packages# rpm -e iptables-libs
error: Failed dependencies:
        iptables-libs(x86-64) = 1.6.0-2.fc25 is needed by (installed) iptables-1.6.0-2.fc25.x86_64
        libip4tc.so.0()(64bit) is needed by (installed) iptables-1.6.0-2.fc25.x86_64
        libip4tc.so.0()(64bit) is needed by (installed) systemd-231-4.fc26.x86_64
        libip4tc.so.0()(64bit) is needed by (installed) systemd-container-231-4.fc26.x86_64
        libip6tc.so.0()(64bit) is needed by (installed) iptables-1.6.0-2.fc25.x86_64
        libxtables.so.11()(64bit) is needed by (installed) iptables-1.6.0-2.fc25.x86_64
        libxtables.so.11()(64bit) is needed by (installed) iproute-tc-4.7.0-1.fc26.x86_64
10:57 root@puchatek:packages# rpm -e iptables-libs --nodeps iproute-tc
10:57 root@puchatek:packages# rpm --oldpackage -U iptables-1.4.21-16.fc24.x86_64.rpm

And repeat previous dnf command as it works this time.

So next set of blockers has to go:

11:00 root@puchatek:packages# dnf --releasever 24 --disablerepo rawhide --enablerepo fedora --enablerepo updates --best --allowerasing downgrade systemd* libvirt* pcre*
Dependencies resolved.
================================================================================
 Package                           Arch     Version            Repository  Size
================================================================================
Installing:
 systemd-compat-libs               x86_64   229-13.fc24        updates    152 k
Removing:
 libvirt-libs                      x86_64   2.2.0-1.fc26       @rawhide    22 M
 pcre-cpp                          x86_64   8.39-3.fc26        @rawhide    39 k
 perl-Sys-Virt                     x86_64   2.2.0-1.fc26       @rawhide   824 k
 systemd-pam                       x86_64   231-4.fc26         @rawhide   282 k
Downgrading:
 libvirt                           x86_64   1.3.3.2-1.fc24     updates     47 k
 libvirt-client                    x86_64   1.3.3.2-1.fc24     updates    4.4 M
 libvirt-daemon                    x86_64   1.3.3.2-1.fc24     updates    619 k
 libvirt-daemon-config-network     x86_64   1.3.3.2-1.fc24     updates     47 k
 libvirt-daemon-config-nwfilter    x86_64   1.3.3.2-1.fc24     updates     50 k
 libvirt-daemon-driver-interface   x86_64   1.3.3.2-1.fc24     updates     90 k
 libvirt-daemon-driver-libxl       x86_64   1.3.3.2-1.fc24     updates    163 k
 libvirt-daemon-driver-lxc         x86_64   1.3.3.2-1.fc24     updates    724 k
 libvirt-daemon-driver-network     x86_64   1.3.3.2-1.fc24     updates    241 k
 libvirt-daemon-driver-nodedev     x86_64   1.3.3.2-1.fc24     updates     89 k
 libvirt-daemon-driver-nwfilter    x86_64   1.3.3.2-1.fc24     updates    114 k
 libvirt-daemon-driver-qemu        x86_64   1.3.3.2-1.fc24     updates    528 k
 libvirt-daemon-driver-secret      x86_64   1.3.3.2-1.fc24     updates     82 k
 libvirt-daemon-driver-storage     x86_64   1.3.3.2-1.fc24     updates    274 k
 libvirt-daemon-driver-uml         x86_64   1.3.3.2-1.fc24     updates     98 k
 libvirt-daemon-driver-vbox        x86_64   1.3.3.2-1.fc24     updates    197 k
 libvirt-daemon-driver-xen         x86_64   1.3.3.2-1.fc24     updates    161 k
 libvirt-daemon-kvm                x86_64   1.3.3.2-1.fc24     updates     46 k
 libvirt-daemon-qemu               x86_64   1.3.3.2-1.fc24     updates     46 k
 libvirt-python                    x86_64   1.3.3-3.fc24       updates    255 k
 pcre                              i686     8.39-3.fc24        updates    413 k
 pcre                              x86_64   8.39-3.fc24        updates    404 k
 pcre-devel                        x86_64   8.39-3.fc24        updates    544 k
 pcre2                             x86_64   10.21-6.fc24       updates    414 k
 qemu                              x86_64   2:2.6.1-1.fc24     updates     63 k
 qemu-common                       x86_64   2:2.6.1-1.fc24     updates    323 k
 qemu-img                          x86_64   2:2.6.1-1.fc24     updates    828 k
 qemu-kvm                          x86_64   2:2.6.1-1.fc24     updates     62 k
 qemu-system-aarch64               x86_64   2:2.6.1-1.fc24     updates    2.5 M
 qemu-system-alpha                 x86_64   2:2.6.1-1.fc24     updates    1.9 M
 qemu-system-arm                   x86_64   2:2.6.1-1.fc24     updates    2.5 M
 qemu-system-cris                  x86_64   2:2.6.1-1.fc24     updates    1.4 M
 qemu-system-lm32                  x86_64   2:2.6.1-1.fc24     updates    1.4 M
 qemu-system-m68k                  x86_64   2:2.6.1-1.fc24     updates    1.9 M
 qemu-system-microblaze            x86_64   2:2.6.1-1.fc24     updates    2.7 M
 qemu-system-mips                  x86_64   2:2.6.1-1.fc24     updates    8.4 M
 qemu-system-moxie                 x86_64   2:2.6.1-1.fc24     updates    1.4 M
 qemu-system-or32                  x86_64   2:2.6.1-1.fc24     updates    1.4 M
 qemu-system-ppc                   x86_64   2:2.6.1-1.fc24     updates    6.8 M
 qemu-system-s390x                 x86_64   2:2.6.1-1.fc24     updates    1.7 M
 qemu-system-sh4                   x86_64   2:2.6.1-1.fc24     updates    3.7 M
 qemu-system-sparc                 x86_64   2:2.6.1-1.fc24     updates    3.3 M
 qemu-system-tricore               x86_64   2:2.6.1-1.fc24     updates    1.4 M
 qemu-system-unicore32             x86_64   2:2.6.1-1.fc24     updates    1.4 M
 qemu-system-x86                   x86_64   2:2.6.1-1.fc24     updates    4.5 M
 qemu-system-xtensa                x86_64   2:2.6.1-1.fc24     updates    2.7 M
 qemu-user                         x86_64   2:2.6.1-1.fc24     updates    8.3 M
 systemd                           x86_64   229-13.fc24        updates    5.1 M
 systemd-container                 x86_64   229-13.fc24        updates    1.0 M
 systemd-devel                     x86_64   229-13.fc24        updates    288 k
 systemd-libs                      i686     229-13.fc24        updates    482 k
 systemd-libs                      x86_64   229-13.fc24        updates    457 k
 systemd-udev                      x86_64   229-13.fc24        updates    1.2 M
 xen-libs                          x86_64   4.6.3-4.fc24       updates    574 k

Transaction Summary
================================================================================
Install     1 Package
Remove      4 Packages
Downgrade  54 Packages

Total download size: 80 M
Is this ok [y/N]:

[..]

Error: Transaction check error:
  file /usr/lib64/libpcre32.so.0.0.7 from install of pcre-8.39-3.fc24.x86_64 conflicts with file from package pcre-utf32-8.39-3.fc26.x86_64
  file /usr/lib64/libpcre16.so.0.2.7 from install of pcre-8.39-3.fc24.x86_64 conflicts with file from package pcre-utf16-8.39-3.fc26.x86_64

Let’s go back to rpm:

11:14 root@puchatek:packages# rpm -e pcre-utf16 pcre-utf32 --nodeps  
11:14 root@puchatek:packages# dnf --releasever 24 --disablerepo rawhide --enablerepo fedora --enablerepo updates --best --allowerasing downgrade -y "pcre*"    
Dependencies resolved.
================================================================================
 Package            Arch           Version               Repository        Size
================================================================================
Removing:
 pcre-cpp           x86_64         8.39-3.fc26           @rawhide          39 k
Downgrading:
 pcre               i686           8.39-3.fc24           updates          413 k
 pcre               x86_64         8.39-3.fc24           updates          404 k
 pcre-devel         x86_64         8.39-3.fc24           updates          544 k
 pcre2              x86_64         10.21-6.fc24          updates          414 k

Transaction Summary
================================================================================
Remove     1 Package
Downgrade  4 Packages

Total size: 1.7 M
Downloading Packages:
[..]
Complete!

Now previous dnf command succeddes.

Last blocker is “perl-libintl-perl” package. In F24 it was named “perl-libintl” so dnf is not able to handle downgrading. Simplest way is removal of it. Will install removed packages later.

11:23 root@puchatek:packages# dnf remove perl-libintl-perl                      Dependencies resolved.
================================================================================
 Package                      Arch   Version                     Repository
                                                                           Size
================================================================================
Removing:
 libpaper                     x86_64 1.1.24-12.fc24              @rawhide  83 k
 mutt                         x86_64 5:1.7.0-1.fc26              @rawhide 5.4 M
 perl-Class-Inspector         noarch 1.28-15.fc25                @rawhide  57 k
 perl-Class-Method-Modifiers  noarch 2.12-3.fc25                 @rawhide 100 k
 perl-Class-MethodMaker       x86_64 2.24-6.fc25                 @rawhide  20 M
 perl-Convert-BinHex          noarch 1.125-3.fc25                @rawhide  98 k
 perl-Data-Perl               noarch 0.002009-7.fc25             @rawhide  89 k
 perl-Devel-GlobalDestruction noarch 0.13-7.fc25                 @rawhide  17 k
 perl-Exporter-Tiny           noarch 0.042-6.fc25                @rawhide  78 k
 perl-File-ShareDir           noarch 1.102-7.fc25                @rawhide  19 k
 perl-Filter-Simple           noarch 0.92-365.fc25               @rawhide  50 k
 perl-GnuPG-Interface         noarch 0.52-5.fc25                 @rawhide 136 k
 perl-Import-Into             noarch 1.002005-3.fc25             @rawhide  20 k
 perl-List-MoreUtils          x86_64 0.416-1.fc25                @rawhide 200 k
 perl-MIME-tools              noarch 5.508-1.fc26                @rawhide 508 k
 perl-MailTools               noarch 2.18-2.fc25                 @rawhide 193 k
 perl-Moo                     noarch 2.002004-1.fc25             @rawhide 180 k
 perl-MooX-HandlesVia         noarch 0.001008-6.fc25             @rawhide  43 k
 perl-MooX-late               noarch 0.015-9.fc25                @rawhide  37 k
 perl-Net-IDN-Encode          x86_64 2.300-4.fc25                @rawhide 292 k
 perl-Role-Tiny               noarch 2.000003-3.fc25             @rawhide  39 k
 perl-SelfLoader              noarch 1.23-378.fc26               @rawhide  23 k
 perl-Text-Balanced           noarch 2.03-365.fc25               @rawhide 153 k
 perl-Type-Tiny               noarch 1.000005-7.fc25             @rawhide 581 k
 perl-Unicode-EastAsianWidth  noarch 1.33-8.fc25                 @rawhide  13 k
 perl-libintl-perl            x86_64 1.26-1.fc25                 @rawhide 4.2 M
 perl-strictures              noarch 2.000003-2.fc25             @rawhide  34 k
 pgp-tools                    x86_64 2.2-3.fc25                  @rawhide 449 k
 texinfo                      x86_64 6.1-3.fc25                  @rawhide 4.5 M
 tokyocabinet                 x86_64 1.4.48-6.fc24               @rawhide 1.3 M
 urlview                      x86_64 0.9-19.20131022git08767a.fc24
                                                                 @rawhide  49 k

Transaction Summary
================================================================================
Remove  31 Packages

Installed size: 39 M
Is this ok [y/N]: y

Ok. All blockers removed. Time to call distro-sync:

11:24 root@puchatek:packages# dnf --releasever 24 --disablerepo rawhide --enablerepo fedora --enablerepo updates  distro-sync  --best --allowerasing

[.. long list of packages ..]

Transaction Summary
================================================================================
Install      11 Packages
Upgrade      13 Packages
Remove        4 Packages
Downgrade  2224 Packages

Total size: 2.1 G
Total download size: 2.1 G
Is this ok [y/N]:

[..]
Error: Transaction check error:
  file /usr/lib64/liblua-5.3.so from install of lua-5.3.3-2.fc24.x86_64 conflicts with file from package lua-libs-5.3.3-3.fc25.x86_64

This is less fun… RPM needs Lua to work. So I went around. Unpacked Lua package from F24, then “rpm -e –nodeps lua-libs” and copied “lib64” from just unpacked package directly into system. Then downgraded “lua” using dnf.

Next step? Distro sync of course. This time it works. Now kernel needs to be taken care of.

I had 4.6.0 kernel installed from I have no idea when. Booted it and it allowed me to remove all “4.8-rc” kernels I got from rawhide. Then simple “dnf install kernel” to get 4.7.2 from updates repo and after one more reboot I got:

15:52 hrw@puchatek:~$ lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: Fedora
Description:    Fedora release 24 (Twenty Four)
Release:        24
Codename:       TwentyFour

As you see it took far more time than I expected it will. I learnt that ‘keepcache’ is not enabled (had to fetch 2GB of packages again), found ‘minrate’ dnf config option which helps me avoid slow Austrian mirror.

Rawhide: unwanted baby in Fedora world?

For something about 15 years I was using Debian distribution and ones which derived from it (like Ubuntu). Basically whole time I used development versions of them and amount of issues was nearly not existing. Now I run Rawhide…

For those who do not know: Fedora world contains four distributions: Fedora, RHEL, CentOS and Rawhide. All new stuff goes to Rawhide which is then branched to make Fedora release. Every few years Red Hat forks released Fedora and uses it as a base for new RHEL release. Then CentOS guys create new release based on RHEL. At least this is how I see it — others will say “but rawhide is fedora”.

I think that the problem lies in development model. All new stuff goes to Rawhide but at same time nearly no one is using it anything can happen there. For example my KDE session lacks window decorations, Konsole5 freezes on any window resize and the common answer for such issues is “You should expect that in rawhide”.

Going into Fedora irc channels with questions is just waste of TCP/IP pockets because in a moment when you mention rawhide it is like everyone fired /ignore on you.

And it is some kind of fun (for some sick/weird definition of it) to watch how people start development of packages just after Fedora releases something. They upgrade and then start to seek what interesting happens in rawhide and can be built.

Each day I am closer to go back to Debian/Ubuntu for a desktop with just keeping Fedora in VM for development of some packages.