centos8升级至centos8-stream

查看dnf仓库是否有centos-release-stream

dnf search centos-release-stream

安装centos-release-stream

dnf install -y centos-release-stream

查看已安装完毕的仓库

dnf repolist

设置默认仓库

dnf swap centos-linux-repos centos-stream-repos

同步仓库

dnf distro-sync

上面这些都是网上能看到的步骤,都是Ctrl+C/Ctrl+V过来的,下面重点就来了,因为原始系统是centos8.1版本,按照上面步骤执行到最后同步仓库的时候,问题就来了,下载包都没问题,在安装的时候一直提示这种错误:

signature hdr data: BAD, no. of bytes(27484) out of range

使用--nogpgcheck选项不行

按照其他博主说的yum update rpm/dnf update rpm都不行(其实这里解决问题的思路是没有问题的,出现这个提示就是因为rpm包的版本太低导致的(原始版本是4.14.2),问题是使用yum或者dnf安装的时候是要用到原始的rpm的,所以这里升级rpm自己也是报相同的错误),所以怎么办呢?

执行dnf distro-sync的时候,已经将所有需要升级的包都下载了本地,能不能直接使用rpm升级rpm呢,答案是可以,这才是解决问题的正确方法,如下:

rpm -Uvh --noverify --noplugins --nodigest --nosignature rpm-4.14.3-26.el8.x86_64.rpm rpm-libs-4.14.3-26.el8.x86_64.rpm rpm-build-libs-4.14.3-26.el8.x86_64.rpm python3-rpm-4.14.3-26.el8.x86_64.rpm rpm-plugin-selinux-4.14.3-26.el8.x86_64.rpm rpm-plugin-systemd-inhibit-4.14.3-26.el8.x86_64.rpm ima-evm-utils-1.3.2-12.el8.x86_64.rpm elfutils-libs-0.189-3.el8.x86_64.rpm elfutils-libelf-0.189-3.el8.x86_64.rpm elfutils-libelf-devel-0.189-3.el8.x86_64.rpm tpm2-tss-2.3.2-3.el8.x86_64.rpm

dnf默认下载的tpm2-tss-2.3.2-5版本不一定能使用,这里通过下载低版本的来代替,如上就是2.3.2-3版本,地址如下

wget http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/tpm2-tss-2.3.2-3.el8.x86_64.rpm

这里是怎么处理rpm包依赖的呢,用最原始的方法,先从rpm自己开始安装,缺少哪个加哪个,本次环境所有依赖的包都已经通过dnf下载好了,除了上面tmp2-tss这个,直到所有依赖都解决。按照上面的步骤正常更新rpm版本之后,再次执行dnf distro-sync就顺利通过了。

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据