Как мне обновить систему с CentOS 7 до CentOS 8?

, если предположить, что переустановка с нуля нецелесообразна,как мне выполнить обновление с 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 в бесконечную рекурсивную попытку разрешить зависимости.

7
задан 24 September 2019 в 19:16
3 ответа

Red Hat обеспечивает инструмент leapp для обновления от EL 7.6 + к 8, однако согласно эта ошибка CentOS , нет никаких планов поддерживать его на CentOS. Попытка указать на существующее 7.x машина к 8.x repos и выполнение yum update не будут, вероятно, работать; это никогда не был поддерживаемый метод. Вашим единственным выбором является переустанавливание.

6
ответ дан 2 December 2019 в 23:40

Мне удалось обновить одну машину с CentOS 7, используя это руководство в качестве справки: https://www.tecmint.com/upgrade-centos-7-to-centos-8/

Думал, что мне пришлось искать правильный зеркальный пакет для обновления до версии 8.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: Хотя я бы не стал использовать это на рабочем сервере. Я лучше пойду на миграцию. Если вы не можете, убедитесь, что вы сделали резервную копию всего (данные И конфигурации).

Надеюсь, это поможет!

Ура, Д

1
ответ дан 20 March 2020 в 18:19

Есть руководства с ошибками, так что попробуйте это (см. комментарии). Если что-то не работает, вам нужно решить проблему, иначе это не сработает. Некоторые шаги трудно отменить, и вы можете столкнуться с тем, что система не загружается, поэтому будьте готовы восстановить / переустановить систему с нуля и иметь резервные копии. Некоторые команды (distro-sync) занимают много времени и не должны прерываться, поэтому, если вы знаете, как использовать экран , у вас все будет хорошо (даже вы не сможете чтобы повторно подключиться после обновления, процесс обновления завершается на экране, проверьте журнал с помощью 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, иначе вы получите странные ошибки (конфликтующие пакеты и т. д.) в distro-sync позже. Перечислите свои репозитории с помощью 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 сетевые сценарии устаревают и переходят к NetworkManager. Если ваши сетевые интерфейсы обрабатываются сетевыми сценариями, убедитесь, что у вас установлен пакет network-scripts и эта служба включена (systemctl enable network.service).

Скрестите пальцы и держите под рукой загрузочный DVD-диск с CentOS 8 (или USB-накопитель), чтобы спасти вашу систему, и введите reboot для загрузки новой системы (автоматическая переназначение SELinux займет некоторое время, нажмите ESC, чтобы увидеть, что происходит на экране загрузки, после завершения он перезагружается один раз).

После успешной перезагрузки вы можете проверить какие файлы конфигурации были оставлены командой rpmconf -a из пакета rpmconf (этот пакет находится в репозитории EPEL). , поэтому вам нужно сначала включить этот репозиторий с помощью dnf -y install epel-release).

Будут некоторые пакеты, которые больше не являются частью репозитория CentOS 8 (orphans), вы можете перечислить их с помощью dnf repoquery --extras. Удалите с помощью dnf remove , удалите все с помощью dnf remove $(dnf repoquery --extras). Список листьев по dnf repoquery --unneeded (удалить некоторые или все из них).

Проверьте сообщения об отказе SELinux после перезагрузки с помощью ausearch -m avc --start недавние (исправьте их, если у вас есть собственные правила или нестандартная установка). Проверьте /var/log/messages, /var/log/boot.log и journalctl -xe на наличие ошибок и предупреждений. Установите AutoUpdates (если у вас был yum-cron). Удалите спасательное ядро ​​с помощью rm /boot/vmlinuz-0-rescue* /boot/initramfs-0-rescue* и переустановите ядро, чтобы получить новый вход в меню спасения GRUB для CentOS 8 с помощью команды dnf -y переустановить ядро-ядро (в аварийное ядро ​​включены все возможные драйверы/модули). Установите правильную альтернативу для Python с помощью alternatives --config python (выберите версию 3 или старую версию 2).

4
ответ дан 27 April 2020 в 21:00

Теги

Похожие вопросы