Відновлення реєстру залежностей після скасування транзакції dnf update
Раніше на Fedora користувався графічною утилітою з демоном автоматичних оновлень, який відправляє систему в ребут, де чорним по білому написано: "не вимикайте систему під час оноалення". Але віднедавна я цей інструмент видалив, в рамках заощадження батареї, усі оновлення я роблю вручну з `dnf update`.
Одного разу сталось так, що на ноуті був низький заряд. В цей момент дали світло і я "побіг" апдейтити систему, але світло тут же вимкнули і чорт мене дьорнув натиснути Ctrl+C. Я там в принципі бачив якісь згадки про транзакції і сподівався що сучасна система якось вміє робити ролбек для дурня. Але виявилось що не вміє.
При спробі продовжити оновлення повторним вводом `dnf update` - почало сипати конфлікти пакунків. Вона у всіх буде різною, кому як пощастить перервати оновлення і добре, якщо це не станеться на етапі апгрейду критичного системного компоненту. У мене це були якісь ліби png, команду видалення яких я згідно помилки згенерував за допомогою ШІ:
sudo dnf remove glib2.i686 at-spi2-core.i686 libpng.i686
- система в мене так чи інакше 64 біт, просто багато пакунків використовуються для програмування і збірки 32 бітних програм
Після цього система полегшала на ~800М видалених залежностей і успішно оновилась:
sudo dnf upgrade --refresh
Утім, ще чекнув за порадою того само ШІ, наявність дублікатів:
sudo dnf check --duplicates
- ця команда висипала мені простиню старих і нових версій тих само пакунків, серед яких був dnf, sudo і все таке інше.
Нижче я просто додам перевірену команду, що прибирає попередні версії, бо всі інші не давали мені змоги видалити сміття через включення тих само rmp/dnf/sudo:
sudo rpm -e $(dnf repoquery --duplicates --latest-limit -1 -q) --nodeps
І на останок, поставив назад свої ліби:
sudo dnf install glib2.i686 at-spi2-core.i686 libpng.i686
- щоправда, без ~800М видалених раніше залежностей до них
Система ніби завантажується, оновлюється без помилок і все працює. На майбутнє: не раджу нікому переривати процес `dnf update`, за виключенням якщо в тому майбутньому - ця дія не буде передбачана наворотами CoW/BTRFS, на які я марно сподівався.
/uk/