Upgrading Linux is always a challenging task. It will cause my heart beating fast, my head was spinning, and I was sweating. This round I was upgrading Fedora 30 to 31, there are few errors pops up during the upgrade. The first challenge is when the package
gpgme(x86-64) required by
python2-gpg couldn't be found.
$ sudo dnf system-upgrade download --releasever=31
...
...
Error:
Problem: package python2-gpg-1.13.1-7.fc30.x86_64 requires gpgme(x86-64) = 1.13.1-7.fc30, but none of the providers can be installed
- gpgme-1.13.1-7.fc30.x86_64 does not belong to a distupgrade repository
- problem with installed package python2-gpg-1.13.1-7.fc30.x86_64
(try to add '--skip-broken' to skip uninstallable packages)
I found a
link mention that Python 2 has end of life, and thus the dependencies required by Python 2 waren't there anymore. Googling around couldn't find a solution on this, but I found a similar problem where the workaround is to remove the package.
$ sudo dnf remove python2-gpg-1.13.1-7.fc30.x86_64
...
...
Removed:
annobin-8.71-4.fc30.x86_64
createrepo_c-0.15.5-1.fc30.x86_64
createrepo_c-libs-0.15.5-1.fc30.x86_64
drpm-0.4.1-1.fc30.x86_64
dwz-0.12-10.fc30.x86_64
efi-srpm-macros-4-2.fc30.noarch
fpc-srpm-macros-1.2-1.fc30.noarch
ghc-srpm-macros-1.4.2-9.fc30.noarch
gnat-srpm-macros-4-9.fc30.noarch
go-srpm-macros-2-19.fc30.noarch
mach-1.0.4-9.fc30.x86_64
nim-srpm-macros-2-1.fc30.noarch
ocaml-srpm-macros-5-5.fc30.noarch
openblas-srpm-macros-2-5.fc30.noarch
perl-srpm-macros-1-29.fc30.noarch
pyliblzma-0.5.3-25.fc30.x86_64
python-srpm-macros-3-47.fc30.noarch
python2-gpg-1.13.1-7.fc30.x86_64
python2-iniparse-0.4-33.fc30.noarch
python2-pycurl-7.43.0.2-6.fc30.x86_64
python2-pyxattr-0.6.1-1.fc30.x86_64
python2-rpm-4.14.2.1-5.fc30.x86_64
python2-urlgrabber-4.0.0-3.fc30.noarch
python3-urlgrabber-4.0.0-3.fc30.noarch
qt5-srpm-macros-5.12.5-1.fc30.noarch
redhat-rpm-config-132-1.fc30.noarch
rpm-build-4.14.2.1-5.fc30.x86_64
rust-srpm-macros-10-1.fc30.noarch
yum-3.4.3-522.fc30.noarch
yum-metadata-parser-1.1.4-22.fc29.x86_64
zstd-1.4.4-1.fc30.x86_64
Complete!
A bunch of Python 2 related dependencies was removed. Now come to the next challenge, it shows that
Cannot enable multiple streams for module 'gimp'. What the hell exactly of this?
$ sudo dnf system-upgrade download --releasever=31
...
...
terminate called after throwing an instance of 'libdnf::ModulePackageContainer::EnableMultipleStreamsException'
what(): Cannot enable multiple streams for module 'gimp'
Aborted
There is exactly the same error has been reported to
Redhat Bugzilla, but that one is caused by
VirtualBox. Then I found
this guide which is quite straight forward to use.
$ sudo dnf module disable gimp
Last metadata expiration check: 0:29:49 ago on Wed 03 Jun 2020 09:05:06 AM +08.
Dependencies resolved.
======================================================================================================================
Package Architecture Version Repository Size
======================================================================================================================
Disabling modules:
gimp
Transaction Summary
======================================================================================================================
Is this ok [y/N]: y
Complete!
Now only I can proceed to upgrade the system. The next biggest challenge would be the driver. This always failed me. When I compile the driver with DKMS, it failed due to the compilation error shown in the make.log:
implicit declaration of function ‘ioremap_nocache’; did you mean ‘ioremap_cache’?
As I check in the NVIDIA driver source code, there are plenty of the function named
ioremap_nocache. This is so unwise if I change it manually, throughout my professional career, programming does not work in that way. After a long search on the Internet, there is a
patch for NVIDIA
390.132 driver. Use that patch driver instead of the original download from the NVIDIA website. Once done, verify with the following command and I got the driver installed successfully.
$ lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: Fedora
Description: Fedora release 31 (Thirty One)
Release: 31
Codename: ThirtyOne