Предполагая, что переустановка с нуля нецелесообразна, как мне выполнить обновление с CentOS 7 до CentOS 8?
Я пытался сделать yum install http://mirror.bytemark.co.uk/centos/8/BaseOS/x86_64/os/Packages/centos-release-8.0-0.1905.0.9.el8.x86_64.rpm
но, видимо, это не работает, как можно было бы ожидать. Бег yum update
после этого yum начинает бесконечную рекурсивную попытку разрешить зависимости.
Red Hat предоставляет инструмент leapp
для обновления с EL 7.6+ до 8, однако согласно эта ошибка CentOS, нет планов поддерживать его в CentOS. Попытка указать существующий компьютер 7.x на репозиторий 8.x и запустить yum update
скорее всего не сработает; этот метод никогда не поддерживался. Ваш единственный выбор - переустановить.
Есть руководства с ошибками, так что попробуйте это (см. Комментарии). Если что-то не получается, нужно решить проблему, иначе ничего не получится. Некоторые шаги трудно отменить, и вы можете получить незагружаемую систему, поэтому будьте готовы спасти / переустановить систему с нуля и создать резервные копии. Некоторые команды (синхронизация дистрибутива) занимает много времени и не должен прерываться, поэтому, если вы знаете, как использовать screen
у тебя все будет отлично (даже если вы не сможете повторно подключиться после обновления, процесс обновления завершится на экране, проверить журнал по tail -f /var/log/dnf.log
). В противном случае выполните обновление с терминала (нет сетевого подключения) или через сверхстабильное сетевое подключение. Вы были предупреждены. Предлагается сначала обновить всю систему, yum -y update
, перезагрузитесь и проверьте, все ли работает, чтобы вы знали, что было сломано Обновить и что было сломано перед обновлением.
# relax SELinux temporally (permissive mode)
setenforce 0
# switch to dnf
yum -y install dnf
# remove yum and its files
dnf -y remove yum yum-metadata-parser
rm -Rf /etc/yum /var/cache/yum
# switch to CentOS 8 repo
dnf -y upgrade http://vault.centos.org/8.0.1905/BaseOS/x86_64/os/Packages/centos-release-8.0-0.1905.0.9.el8.x86_64.rpm
Переключите все ваши активные репозитории yum / dnf на версию 8, иначе вы получите странные ошибки (конфликтующие пакеты и т. Д.) В синхронизация дистрибутива потом. Перечислите свои репо по rpm -qf /etc/yum.repos.d/* | sort -u
и ЕСЛИ вы получите что-то вроде epel-release-7-1.el7.noarch обновить репозитории с помощью команды ниже (параметр URL скопирован из Страница EPEL). Повторяйте этот абзац, пока не получите все репозитории на v8 (репозиторий Chrome не нужно обновлять).
dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Давай продолжим:
# clean repos metadata
dnf clean all
# update repos packages to their latest version (centos-release, epel-release, ...)
dnf -y update \*release*
# remove all kernel packages (system is unbootable until new kernel is installed later), modify if using kernel-plus
rpm -e --nodeps $(rpm -q kernel)
# remove conflicting package
rpm -e --nodeps sysvinit-tools
# lets upgrade the system to version 8
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync
# install kernel modules (you may need kernel-plus and kernel-plus-modules instead if you have obsolete hardware)
dnf -y install kernel-modules
# kernel package has been renamed so set DEFAULTKERNEL=kernel-core in /etc/sysconfig/kernel
sed -i -e s@DEFAULTKERNEL=kernel@DEFAULTKERNEL=kernel-core@ /etc/sysconfig/kernel
# refresh initramfs after additional kernel modules were installed
dnf -y reinstall kernel-core
# make sure all base packages are in place (change install to update if these groups are already installed)
dnf -y group install Core "Minimal Install"
# fix SELinux labels during shutdown (it will take a time)
touch /.autorelabel
Сделайте копию / фото файла /etc/sysconfig/grub
. Вам может понадобиться содержимое GRUB_CMDLINE_LINUX
если загрузчик GRUB выпадает из командной строки при загрузке (информация о корневой файловой системе). Проверить список и количество модулей в образе iniramfs по lsinitrd /boot/initramfs-4*.img | grep -c ko.xz
CentOS 8 использует новые BLS конфигурация через каталог /boot/loader/entries/
где каждое ядро имеет собственный файл конфигурации для каждой записи меню GRUB (они отсортированы по алфавиту, а не по дате / времени), поэтому /etc/grub2.cfg
не имеет меню и не требует обновления ядра. CentOS 8 отменяет сетевые скрипты и переходит на Сетевой менеджер. Если ваши сетевые интерфейсы обрабатываются сетевыми скриптами, убедитесь, что у вас есть network-scripts
пакет установлен, и эта служба включена (systemctl enable network.service
).
Скрестите пальцы и держите под рукой загрузочный DVD-диск CentOS 8 (или USB-накопитель), чтобы спасти вашу систему, и введите reboot
для загрузки новой системы (автоопределение SELinux займет время, нажмите ESC
чтобы увидеть, что происходит на экране загрузки, по завершении он перезагружается).
После успешной перезагрузки вы можете проверить какие файлы конфигурации остались позади по rpmconf -a
из пакета rpmconf
(этот пакет находится в репозитории EPEL, поэтому вам нужно сначала включить это репо, dnf -y install epel-release
).
Некоторые пакеты больше не являются частью репозитория CentOS 8 (сирот), вы можете перечислить их dnf repoquery --extras
. Удалить dnf remove <package>
, удалить все dnf remove $(dnf repoquery --extras)
. Список листья по dnf repoquery --unneeded
(удалите некоторые или все из них).
Проверьте SELinux сообщения об отказе после перезагрузки ausearch -m avc --start recent
(исправьте их, если у вас свои правила или нестандартная настройка). Проверьте /var/log/messages
, /var/log/boot.log
и journalctl -xe
на наличие ошибок и предупреждений. Устанавливать Автообновления (если у тебя есть yum-cron
). Удалите аварийное ядро с помощью rm /boot/vmlinuz-0-rescue* /boot/initramfs-0-rescue*
и переустановите ядро, чтобы получить новая запись в меню спасения GRUB для CentOS 8 по команде dnf -y reinstall kernel-core
(в спасательное ядро включены все возможные драйверы / модули). Установить правильно альтернатива для Python по alternatives --config python
(выберите версию 3 или старую 2).
Я смог обновить одну машину под управлением CentOS 7, используя это руководство в качестве справки: https://www.tecmint.com/upgrade-centos-7-to-centos-8/
Думал, что мне нужно было найти правильный зеркальный пакет для обновления до версии v8.0, поскольку у меня были проблемы с ключами gpg при обновлении непосредственно до версии 8.1, как предлагается в этом руководстве.
Итак, на шаге 4 я использовал следующую команду:
# dnf install http://mirror.bytemark.co.uk/centos/8.0.1905/BaseOS/x86_64/os/Packages/centos-release-8.0-0.1905.0.9.el8.x86_64.rpm
(Обратите внимание на изменение номера версии в URL 8 -> 8.0.1905)
Мне не нужно было устанавливать centos-repos
и centos-gpg-keys
как упоминалось в руководстве, и смог продолжить следующие шаги руководства.
NB: Хотя я бы не стал использовать это на рабочем сервере. Я лучше пойду на миграцию. Если вы не можете этого сделать, убедитесь, что вы сделали все необходимое резервное копирование (данные И конфигурации).
Надеюсь, это поможет!
Ура, D