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