Fedora Account System
Red Hat Associate
Red Hat Customer
Description of problem: If free space on root partition less than needed for sudo dnf -y system-upgrade download --releasever=44 then upgrade stops and after add some space or delete some files on it then do sudo dnf -y system-upgrade download --releasever=44 once more you have errors like [3640/3640] Всего 100% | 0.0 B/s | 0.0 B | 02m37s Тестирование автономной транзакции terminate called after throwing an instance of 'libdnf5::AssertionError' what(): libdnf5/rpm/transaction.cpp:195: void libdnf5::rpm::Transaction::fill(const libdnf5::base::Transaction&): Assertion 'implicit_ts_elements.empty()' failed: The rpm transaction contains more elements than requested Аварийный останов sudo dnf -y system-upgrade download --releasever=44 Version-Release number of selected component (if applicable): dnf5-5.2.18.0-1.fc43.x86_64.rpm dnf5-5.2.18.0-1.fc43.i686.rpm How reproducible: always (on last 6 or 7 system-upgrade on fedora 37,38...43) Steps to Reproduce: 1. Install fedora 43 2. sudo dnf -y update && sudo dnf -y upgrade 3. check free space on / 4. start sudo dnf system-upgrade download --releasever=44 remember number of space needed for transaction then answer N for stop transaction 5. shrink / than free space on it less than needed in 4 or copy some big files in / for that purpose 6. start sudo dnf -y system-upgrade download --releasever=44 command abort after no more free space on / Actual results: / full, system-upgrade aborted Expected results: system-upgrade report than free space less than needed and stop Additional info:
"dnf system-upgrade download" does not perform any upgrade. It only resolves the dependencies and downloads the packages. But it does not attempt to install them. Installation is performed with a subsequent "dnf system-upgrade reboot" command. It's true that "dnf system-upgrade download" does not checked whether there is enough disk space for downloading the packages. It could, but it's not as easy to do it correctly as it can reuse already downloaded files. If the space runs out it prints an error like: Failed to download packages Librepo error: Curl error (23): Failed writing received data to disk/application for http://mirrors.dotsrc.org/fedora-enchilada/linux/development/rawhide/Everything/x86_64/os/Packages/p/perl-libs-5.42.1-523.fc45.x86_64.rpm [Failure writing output to destination, passed 1448 returned 765] It should properly report that the cause is a not enough disk space. > [3640/3640] Всего 100% | 0.0 B/s | 0.0 B | 02m37s Тестирование автономной транзакции terminate called after throwing an instance of 'libdnf5::AssertionError' what(): libdnf5/rpm/transaction.cpp:195: void libdnf5::rpm::Transaction::fill(const libdnf5::base::Transaction&): Assertion 'implicit_ts_elements.empty()' failed: The rpm transaction contains more elements than requested This is a different error, not related to this. See bug #2350481.
(In reply to Petr Pisar from comment #1) > "dnf system-upgrade download" does not perform any upgrade. It only resolves > the dependencies and downloads the packages. But it does not attempt to > install them. You are true. But download 3640 or more packages need some time, if it can't end without error why do perform it? "dnf system-upgrade download" may stop after existing warning about number of downloading files, needed GiB and missing warning about free space on corresponded partition >This is a different error, not related to this. See bug #2350481. Yes, but if user not experienced enough, make previous system-upgrade (for example from f42 to f43) without problems, he or she can use it with -y option like "dnf -y system-upgrade download" and stuck with bug #2350481. I say more. dnf5 can download not one, but max_parallel_downloads (according to /etc/dnf.conf) rpm packages at same time. And at this scenario all of it may be broken. But if user add some more space next use of "dnf system-upgrade download" check only first of that broken files, not all of them, like [3640/3640] Всего 100% | 0.0 B/s | 0.0 B | 03m31s Тестирование автономной транзакции Сбой транзакции: Сбой проверки подписей. OpenPGP check for package "arm-none-eabi-gcc-cs-1:15.2.0-4.fc44.x86_64" (/usr/lib/sysimage/libdnf5/offline/packages/arm-none-eabi-gcc-cs-15.2.0-4.fc44.x86_64.rpm) from repo "fedora" has failed: Возникла проблема при открытии пакета. But command like for f in /usr/lib/sysimage/libdnf5/offline/packages/*.rpm ; do echo "-- $f --" ; rpmkeys --checksig $f ; done can see all rpm with broken signature Why "dnf system-upgrade download" don't do it? Is it possible to add some options to check and print not only first broken files, but all of them?