-- Leo's gemini proxy

-- Connecting to tilde.team:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini; lang=en


~Rami ₪ MANUALS

רמי


SUBJECT: Fedora: Глобальный апгрейд релизов ОС

AUTHOR: Rami Rosenfeld

DATE: 12/09/22; upd. 04/05/24

TIME: 15.00

LANG: ru, en

LICENSE: GNU FDL 1.3

TAGS: gnu, gnome, software, opensource, linux, system, man, manual, bash, privacy, security, rhel, centos, mate, xfce, lxde, spin, de, systemd, systemctl, selinux, firewalld, dnf, rpm


Fedora: Глобальный апгрейд релизов ОС (rel. v.N > rel. v.N+1)


INTRO


ВАЖНО! Перед запуском процесса обновления ОС на новый релиз сохраните свои критичные данные на стороннем носителе.


ВАЖНО! На всякий случай, заранее подготовьте Live USB-Flash со старой (т.е. текущей) версией операционной системы).


Рекомендация: не делайте апгрейд сразу на +2 версии релиза, хотя это допустимо. Не делайте апргрейд версий Fedora с закончившимся сроком поддержки (EOL: "end-of-the-life").


NOTE


Первоначальное обновление текущей версии ОС


dnf upgrade --refresh


Перезагрузка ОС


systemctl reboot


Установка плагина system-upgrade


dnf install dnf-plugin-system-upgrade


Загрузка обновляемых пакетов новой версии (релиза) ОС


dnf system-upgrade download --releasever=40


Примечание 1: В предыдущей строке измените значение --releasever на необходимое. Например, если вы обновляетесь с 39 (текущая версия Fedora) на 40, выставьте значение "40" (без кавычек и пробела).


Примечание 2: Если некоторые пакеты будут иметь неудовлетворенные зависимости (например, в случае использования ранее сторонних репозиториев), добавьте опцию --allowerasing, разрешающую удаление:


dnf system-upgrade download --releasever=40 --allowerasing


Примечание 3: Если вы хотите удалить/установить некоторые пакеты вручную перед запуском обновления ОС, используйте опцию --setopt=keepcache=1 - она удержит (т.е. сохранит) кэш пакетов, скачанных с помощью DNF; в противном случае все обновляемые пакеты будут загружены заново:


dnf system-upgrade download --releasever=40 --allowerasing --setopt=keepcache=1


Обновление ОС до следующего релиза и перезагрузка системы


dnf system-upgrade reboot


Пост-установочные операции


Обновление конфигурационных файлов ОС и ПО


Многие конфигурационные файлы хранятся по адресу /etc. Если вы видоизменяли их перед апгрейдом ОС, система RPM создаст новые конфигурационные файлы с расширением .rpmnew, а старые пометит как .rpmsave (резервные копии ваших конфигурационных файлов). Вы можете найти эти файлы или использовать утилиту rpmconf для упрощения данного процесса:


dnf install rpmconf


При возникновении ошибок используйте команду:


rpmconf -a


Примечание: Эти операции мне не понадобились.


Удаление изолированных пакетов


После глобального апгрейда ОС некоторые пакеты могут утратить работоспособность (устареть по разным причинам, не использоваться более в новом релизе ОС, разработчик не проявляет активности), но они будут присутствовать в обновленной ОС. Для их удаления выполните:


dnf install remove-retired-packages


Исполните:


remove-retired-packages


Примечание: В моем случае таковых не оказалось.


Проверка на пакеты с нарушенными зависимостями:


dnf repoquery --unsatisfied


Примечание: В моем случае таковых тоже не оказалось.


Проверка пакетов на дубликаты:


dnf repoquery --duplicates


Удаление пакетов, более не содержащихся в репозиториях нового релиза ОС, и орфанных пакетов


После глобального апгрейда ОС все пакеты из официальных репозиториев должны быть обновлены до последней версии. Если некоторые пакеты не содержатся более в обновленных (еще точнее, в "сменённых" - с 39 на 40) репозиториях, их можно найти и удалить, например:


dnf list extras


kmod-wl-6.8.8-200.fc39.x86_64.x86_64

kmod-wl-6.8.8-300.fc40.x86_64.x86_64


Логично было бы предположить, что следует удалить пакет, относящийся к предшествующему релизу ОС (39):


dnf remove kmod-wl-6.8.8-200.fc39.x86_64.x86_64


ВАЖНО: Однако будьте осторожны - следующая глобальная команда может затронуть также орфанные (одиночные) пакеты, удаление которых вы НЕ планируете. Например:


dnf remove $(dnf repoquery --extras --exclude=kernel,kernel-\*)


Removing:

kmod-wl-6.8.8-300.fc40.x86_64

musikcube


Removing dependent packages

broadcom-wl


Как видно из примера выше, команда предлагает удалить не только необходимые в обновленной ОС (40) пакеты поддержки беспроводного соединения для Wi-Fi-карт Broadcom (подробности см. ниже), но и плейер Musikcube (установленный ранее вручную из RPM-пакета).


Удаление компонентов ядра предыдущего релиза


Примечание: Как правило, по умолчанию DNF удерживает в системе 3 ядра (см. отдельное руководство по его конфигурации) - текущее и два предыдущих, хотя у меня это количество сокращено до двух. Однако ядро от предыдущего релиза ОС (39) никогда не пригодится более, т.к. на него невозможно сделать откат. Поэтому его следует удалить вместе со всеми компонентами:


dnf remove $(dnf repoquery --installonly --latest-limit=-1 -q)


kernel 6.8.8-200.fc39

kernel-core 6.8.8-200.fc39

kernel-devel 6.8.8-200.fc39

kernel-modules 6.8.8-200.fc39

kernel-modules-core 6.8.8-200.fc39

kernel-modules-extra 6.8.8-200.fc39


ВАЖНО! Это достаточно опасная команда. Она лишает пользователя возможности отката на предыдущую версию ядра, поэтому исполняйте ее ТОЛЬКО ОДИН РАЗ - при глобальном обновлении ОС с релиза на релиз.


Повторная активация Wi-Fi-карт Broadcom


Как я неоднократно писал, лучший вариант беспроводной связи - карты Atheros. Однако если в вашем устройстве установлена Wi-Fi-карта Broadcom, она требует сторонней поддержки (пакеты располагаются в подключаемом репозитории RPM Fusion).


Но существует следующая проблема: после обновления ОС с релиза на релиз (и ТОЛЬКО в этом случае; иного я не встречал, ибо штатное обновление ОС в пределах одного релиза всегда происходит без проблем) карта Broadcom не будет работать. Причин здесь, на мой взгляд, несколько:


- одновременное наличие двух схожих пакетов kmod-wl...fc39 и kmod-wl...fc-40 (см. выше) в ОС после ее глобального апгрейда;


- неудаленное ядро (см. выше) от предыдущего релиза - это весьма сомнительное предположение, но от ядра все же следует избавиться;


- третья неустановленная проблема. Лично у меня складывается впечатление, что ОС после своего обновления считает новые (обновленные) пакеты kmod-wl и broadcom-wl орфанными (одиночными), поэтому не задействует kernel-devel для динамического генерирования поддержки Wi-Fi в момент загрузки ОС.


Поэтому после ВСЕХ указанных выше операций следует удалить поддержку полностью (включая зависимости, например openssl; не волнуйтесь, она восстановится):


dnf remove akmod-wl broadcom-wl kernel-devel


Затем следует перезагрузить ОС:


systemctl reboot


и установить поддержку карты заново:


dnf install akmods akmod-wl kmod-wl broadcom-wl kernel-devel fakeroot fakeroot-libs


ВАЖНО: После последней команды поддержка Wi-Fi будет восстановлена (это видно по отдельным пунктам, появившимся в общих настройках ОС и в главном меню), однако связи по-прежнему не будет. Причина: необходимо еще раз перезагрузить ОС, т.к. новые akmod/kmod будут динамически сгенерированы только при последующей загрузке ОС.


Проверка ОС на наличие нарушенных ссылок (symlinks):


dnf install symlinks


symlinks -r /usr | grep dangling


Пересборка базы данных RPM


Если вы наблюдаете предупреждения при использовании RPM/DNF, ваша база данных RPM может быть повреждена. Вначале сохраните бэкап содержимого /var/lib/rpm, затем пересоберите базу данных RPM:


rpm --rebuilddb


Синхронизация дистрибутивов


Если по какой-то причине ваша ОС или ее отдельные компоненты обновились не полностью, используйте команду:


dnf distro-sync --allowerasing


Примечание: Опция --allowerasing удалит пакеты с зависимостями, которые не могут быть удовлетворены. Предварительно ознакомьтесь с их списком и выполняйте команду с осторожностью (или откажитесь от этой опции)!


Переопределение контекстных меток SELinux


Если после апгрейда ОС вы наблюдаете предупреждения, связанные с правилами SELinux, скорее всего, некоторые файлы имеют некорректные разрешения SELinux. Зачастую это связано с тем, что вы деактивировали его ранее. Для исправления SELinux-контекстов безопасности файлов выполните:


fixfiles -B onboot


Примечание: Процесс произойдет во время перезагрузки ОС.


Удаление кэша после обновления ОС до следующей версии


dnf system-upgrade clean


Полная очистка данных, связанных с работой DNF


dnf clean all


Подробнее см.:


DNF System Upgrade

DNF Command Reference



₪ Back to home ₪


🄯 Rami Rosenfeld, 2022. GNU FDL 1.3.


-- Response ended

-- Page fetched on Mon May 20 11:27:10 2024