💾 Archived View for tilde.team › ~rami › redhat_upgrade.gmi captured on 2024-05-10 at 11:05:44. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
רמי
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
ВАЖНО! Перед запуском процесса обновления ОС на новый релиз сохраните свои критичные данные на стороннем носителе.
ВАЖНО! На всякий случай, заранее подготовьте Live USB-Flash со старой (т.е. текущей) версией операционной системы).
Рекомендация: не делайте апгрейд сразу на +2 версии релиза, хотя это допустимо. Не делайте апргрейд версий Fedora с закончившимся сроком поддержки (EOL: "end-of-the-life").
dnf upgrade --refresh
systemctl reboot
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
ВАЖНО! Это достаточно опасная команда. Она лишает пользователя возможности отката на предыдущую версию ядра, поэтому исполняйте ее ТОЛЬКО ОДИН РАЗ - при глобальном обновлении ОС с релиза на релиз.
Как я неоднократно писал, лучший вариант беспроводной связи - карты 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 будут динамически сгенерированы только при последующей загрузке ОС.
dnf install symlinks
symlinks -r /usr | grep dangling
Если вы наблюдаете предупреждения при использовании RPM/DNF, ваша база данных RPM может быть повреждена. Вначале сохраните бэкап содержимого /var/lib/rpm, затем пересоберите базу данных RPM:
rpm --rebuilddb
Если по какой-то причине ваша ОС или ее отдельные компоненты обновились не полностью, используйте команду:
dnf distro-sync --allowerasing
Примечание: Опция --allowerasing удалит пакеты с зависимостями, которые не могут быть удовлетворены. Предварительно ознакомьтесь с их списком и выполняйте команду с осторожностью (или откажитесь от этой опции)!
Если после апгрейда ОС вы наблюдаете предупреждения, связанные с правилами SELinux, скорее всего, некоторые файлы имеют некорректные разрешения SELinux. Зачастую это связано с тем, что вы деактивировали его ранее. Для исправления SELinux-контекстов безопасности файлов выполните:
fixfiles -B onboot
Примечание: Процесс произойдет во время перезагрузки ОС.
dnf system-upgrade clean
dnf clean all
Подробнее см.:
🄯 Rami Rosenfeld, 2022. GNU FDL 1.3.