当前位置: 首页 > news >正文

01-centos离线升级至almalinux

  • 官网链接
  • 官方代码调整:
1. vi repositories/system_upgrade/common/actors/targetuserspacecreator/libraries/userspacegen.py
with mounting.BindMount(source=userspace_dir, target=os.path.join(context.base_dir, install_root_dir.lstrip('/'))):_restore_persistent_package_cache(userspace_dir)if not is_nogpgcheck_set():_import_gpg_keys(context, install_root_dir, target_major_version)repos_opt = [['--enablerepo', repo] for repo in enabled_repos]repos_opt = list(itertools.chain(*repos_opt))cmd = ['dnf', 'install', '-y']if is_nogpgcheck_set():cmd.append('--nogpgcheck')cmd += ['--setopt=module_platform_id=platform:el{}'.format(target_major_version),'--setopt=keepcache=1','--releasever', api.current_actor().configuration.version.target,'--installroot', install_root_dir,'--disablerepo', '*','--enablerepo', UPGRADE_REPO_NAME] + repos_opt + packages2. repositories/system_upgrade/common/libraries/dnfplugin.py
def _prepare_transaction(used_repos, target_userspace_info, binds=()):""" Creates the transaction environment needed for the target userspace DNF execution  """target_repoids = set([UPGRADE_REPO_NAME])try:dest = '/var/lib/leapp/el8userspace' + UPGRADE_DIRshutil.copytree(UPGRADE_DIR, dest)except Exception as e:print(e)with mounting.NspawnActions(base_dir=target_userspace_info.path, binds=binds) as context:yield context, list(target_repoids), target_userspace_info
  • 离线升级脚本
#!/bin/bashalma8_upgraded_option() {rpm -qa | grep el7 | xargs rpm -e --nodeps &>/dev/nullrpm -qa | grep elevate | xargs rpm -e --nodeps &>/dev/nullrpm -qa | grep leapp | xargs rpm -e --nodeps &>/dev/nullrm -fr /root/tmp_leapp_py3dnf clean allrpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n' | awk '{print $1}' | xargs rpm -esed -i '/^exclude=python2-leapp/ s/^/#/' /etc/yum.confsed -i '/^exclude=python2-leapp/ s/^/#/' /etc/dnf/dnf.conf
}install_leapp() {# leapp软件下载leapp_install=`cat ${LOGS_FILE_PATH} | grep "${VERSION_TO_UPGRADE}_leapp_install=true"`if [ -z "$leapp_install" ];thenyum localinstall -y ${PACKAGES_DIR}/elevate-release-latest-${ELEVATE_VERSION}.noarch.rpmfind /etc/yum.repos.d/ ! -name "local.repo" -type f | xargs rm -fyum localinstall -y ${PACKAGES_DIR}/leapp/*.rpmif [ $? -eq 0 ]; thenecho "${VERSION_TO_UPGRADE}_leapp_install=true" >> ${LOGS_FILE_PATH}fifi
}reboot_confirm() {reboot_option=`cat ${LOGS_FILE_PATH} | grep "${VERSION_TO_UPGRADE}_${1}_reboot=true"`if [ -z "$reboot_option" ];thenread -p "Please confirm whether to restart the machine[y/n]:" optioncase $option iny)echo "Start reboot"echo "${VERSION_TO_UPGRADE}_${1}_reboot=true" >> ${LOGS_FILE_PATH}reboot;;n)echo "Cancel reboot";;*)echo "Please input [y/n]";;esacfi
}generate_local_repo (){case ${VERSION_TO_UPGRADE} incentos7_to_alma8)cat <<EOF > /etc/yum.repos.d/local.repo
[${PREPARE_REPO_NAME}]
name=${PREPARE_REPO_NAME} Repository
baseurl=file://${PREPARE_DIR}
enabled=1
gpgcheck=0[${UPGRADE_REPO_NAME}]
name=${UPGRADE_REPO_NAME} Repository
baseurl=file://${UPGRADE_DIR}
enabled=1
gpgcheck=0
EOF;;alma8_to_alma9)
cat <<EOF > /etc/yum.repos.d/local.repo
[${UPGRADE_REPO_NAME}]
name=${UPGRADE_REPO_NAME} Repository
baseurl=file://${UPGRADE_DIR}
enabled=1
gpgcheck=0
EOF;;*)exit 0;;esac
}# 当前机器的版本
CURRENT_OS_VERSION=`cat /etc/os-release | grep PRETTY_NAME= | tr '[:upper:]' '[:lower:]'` if [[ "$CURRENT_OS_VERSION" == *"centos"* ]];thenVERSION_TO_UPGRADE=centos7_to_alma8ELEVATE_VERSION=el7
elif [[ "$CURRENT_OS_VERSION" == *"almalinux 8"* ]];thenVERSION_TO_UPGRADE=alma8_to_alma9ELEVATE_VERSION=el8
fiBASE_DIR=$(cd "$(dirname "$0")";pwd)
LOGS_DIR=${BASE_DIR}/logs
LOGS_FILE_PATH=${LOGS_DIR}/history
PACKAGES_DIR=${BASE_DIR}/${VERSION_TO_UPGRADE}
PREPARE_REPO_NAME=prepare
UPGRADE_REPO_NAME=upgrade
PREPARE_DIR=${PACKAGES_DIR}/${PREPARE_REPO_NAME}
UPGRADE_DIR=${PACKAGES_DIR}/${UPGRADE_REPO_NAME}# 配置本地仓库
if [ ! -d "${PACKAGES_DIR}/yum.repos.d" ]; thenmv /etc/yum.repos.d ${PACKAGES_DIR}/mkdir -p /etc/yum.repos.d
figenerate_local_repo# 解压rpm包
mkdir -p ${PACKAGES_DIR}
if [ -f "${VERSION_TO_UPGRADE}.tar.gz" ];thenecho "Start tar xf ${BASE_DIR}/${VERSION_TO_UPGRADE}.tar.gz"rm -rf ${PACKAGES_DIR}/*tar xf ${BASE_DIR}/${VERSION_TO_UPGRADE}.tar.gz -C ${PACKAGES_DIR}
elseecho "please check ${VERSION_TO_UPGRADE}.tar.gz exists?"exit 0
fimkdir -p ${LOGS_DIR}
touch ${LOGS_FILE_PATH}# 升级前处理
case ${VERSION_TO_UPGRADE} in
centos7_to_alma8)# 软件升级yum_upgrade=`cat ${LOGS_FILE_PATH} | grep "${VERSION_TO_UPGRADE}_yum_upgrade=true"`if [ -z "$yum_upgrade" ];thenyum upgrade -y --disablerepo=* --enablerepo=${PREPARE_REPO_NAME}if [ $? -eq 0 ]; thenecho "${VERSION_TO_UPGRADE}_yum_upgrade=true" >> ${LOGS_FILE_PATH}fifi# 重启reboot_confirm yum_upgrade# 安装leappinstall_leapp# 生成 answerfilecat <<EOF > /var/log/leapp/answerfile
[remove_pam_pkcs11_module_check]
confirm = True
EOF# 卸载内核模块pata_acpirmmod pata_acpi# 修改sshd_config,允许root密码登录if ! grep -q "^PermitRootLogin yes" /etc/ssh/sshd_config; thensed -i '/^PermitRootLogin/ s/^/#/' /etc/ssh/sshd_configecho PermitRootLogin yes | tee -a /etc/ssh/sshd_configfi;;alma8_to_alma9)# 升级前处理alma8_upgraded_option# 安装leappinstall_leapp# 生成 answerfilecat <<EOF > /var/log/leapp/answerfile
[check_vdo]
confirm = True
EOF# 修改sshd_config,禁止root密码登录if grep -q "^PermitRootLogin yes" /etc/ssh/sshd_config; thensed -i '/^PermitRootLogin/ s/^/#/' /etc/ssh/sshd_configecho PermitRootLogin no | tee -a /etc/ssh/sshd_configfi# 防火墙设置sed -i "s/^AllowZoneDrifting=.*/AllowZoneDrifting=no/" /etc/firewalld/firewalld.conf;;
*)exit 0;;
esac# 拷贝执行目录到目标路径
echo UPGRADE_REPO_NAME=${UPGRADE_REPO_NAME} > ${PACKAGES_DIR}/${VERSION_TO_UPGRADE//_/-}-leapp-repository/leapp_upgrade.env
echo UPGRADE_DIR=${UPGRADE_DIR} >> ${PACKAGES_DIR}/${VERSION_TO_UPGRADE//_/-}-leapp-repository/leapp_upgrade.env
rm -rf /usr/share/leapp-repository
cp -r ${PACKAGES_DIR}/${VERSION_TO_UPGRADE//_/-}-leapp-repository /usr/share/leapp-repository# 执行升级
leapp upgrade


文章转载自:
http://apolitically.dxwdwl.cn
http://accommodable.dxwdwl.cn
http://aep.dxwdwl.cn
http://cavefish.dxwdwl.cn
http://arcade.dxwdwl.cn
http://choler.dxwdwl.cn
http://astragalar.dxwdwl.cn
http://bombardment.dxwdwl.cn
http://bossy.dxwdwl.cn
http://catch.dxwdwl.cn
http://antiapartheid.dxwdwl.cn
http://abwatt.dxwdwl.cn
http://california.dxwdwl.cn
http://blancmange.dxwdwl.cn
http://altometer.dxwdwl.cn
http://bilious.dxwdwl.cn
http://chiliburger.dxwdwl.cn
http://chiefess.dxwdwl.cn
http://beckon.dxwdwl.cn
http://antifreezing.dxwdwl.cn
http://brachydactyly.dxwdwl.cn
http://amyotonia.dxwdwl.cn
http://astigmatoscope.dxwdwl.cn
http://bushelbasket.dxwdwl.cn
http://acetoacetyl.dxwdwl.cn
http://backbite.dxwdwl.cn
http://americana.dxwdwl.cn
http://anchylosis.dxwdwl.cn
http://burnt.dxwdwl.cn
http://berate.dxwdwl.cn
http://www.dtcms.com/a/186075.html

相关文章:

  • 键盘RGB矩阵与LED指示灯(理论部分)
  • 【Game】Powerful——Hero Trial(11)
  • RNN(循环神经网络)原理与结构
  • DeepPrep:深度学习提升神经影像预处理
  • 自主添加删除开机启动项
  • JVM对象分配与程序崩溃排查
  • C语言:深入理解指针(3)
  • 黑马k8s(四)
  • 面试篇:Spring MVC
  • 木马查杀篇—Opcode提取
  • C++ 与 Go、Rust、C#:基于实践场景的语言特性对比
  • Megatron系列——流水线并行
  • GPU SIMT架构的极限压榨:PTX汇编指令级并行优化实践
  • Ubuntu网络部署LNMP环境
  • 【笔试训练】给一个数组构建二叉树|从前序遍历与中序遍历构建二叉树|二叉树中的最大路径和
  • 用生活例子通俗理解 Python OOP 四大特性
  • 【2025最新】Vm虚拟机中直接使用Ubuntu 免安装过程直接使用教程与下载
  • kubuntu系统详解
  • Pycharm中No Conda enviroment selected
  • 本地不安装oracle,还想连oracle
  • 001大模型-认识大模型以及大模型应用场景
  • 【数据结构】map_set前传:二叉搜索树(C++)
  • Qwen:Qwen3,R1 在 Text2SQL 效果评估
  • lenis滑动插件的笔记
  • c++ 类的成员初始化
  • Android 中 Handler (创建时)内存泄漏问题及解决方案
  • js滚动条保持在最底部的方法,场景:聊天室
  • 机架式服务器是什么?机架式/塔式/刀片式三大服务器类型区别与选型全解析
  • android studio开发aar插件,并用uniapp开发APP使用这个aar
  • 大模型数据分析破局之路20250512