Rocky Linux/Centos的跨大版本直接yum/dnf更新

理论上redhat系列较新的版本都可以这样更新,使用旧版本yum的发行版大概也可以。下面以 rocky linux 8.x 直接更新成rocky linux 9.x 示例

1. 先安装上基础包(release,repos,gpg-key)其包文件名,可以到该目录下查看,因为这几个包名里的版本号会随时更新。

dnf install https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/r/rocky-release-9.2-1.6.el9.noarch.rpm
dnf install --skip-broken https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/r/rocky-repos-9.2-1.6.el9.noarch.rpm
dnf install --skip-broken https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/r/rocky-gpg-keys-9.2-1.6.el9.noarch.rpm

2.执行更新

dnf --releasever=9 --allowerasing --setopt=deltarpm=false distro-sync

如果期间有报 GPG 错误,可以在本行命令中加上 --nogpgcheck 参数,不检查 gpg

3. 重建rpm数据库

rpm --rebuilddb

4. 重启 reboot

参考  https://www.starwindsoftware.com/blog/upgrade-from-rocky-linux-8-x-to-rocky-linux-9-0

可能存在的问题

a. 如果yum报如下的警告消息

 Problem 1: conflicting requests
- nothing provides module(platform:el8) needed by module mysql:8.0:8080020230517025647:fd72936b.x86_64
Problem 2: conflicting requests
- nothing provides module(platform:el8) needed by module perl:5.26:8050020211109115414:b4937e53.x86_64
...
 Problem 6: conflicting requests
- nothing provides module(platform:el8) needed by module python36:3.6:8080020230329212447:683b2e54.x86_64
Problem 7: conflicting requests
- nothing provides module(platform:el8) needed by module python38:3.8:8080020230625053205:0d9ba776.x86_64
Problem 8: conflicting requests
- nothing provides module(platform:el8) needed by module python39:3.9:8080020230703194939:aed85c85.x86_64

应该是以前设置过一些 yum module,这些module在新版本里已经无效,也就是在 /etc/dnf/modules.d/ 下有相关模块的配置文件,删掉对应的文件就是了,再运行 yum check 时就没了。或者 运行 module reset mysql 等相应的模块也可。

查看一个rpm包中包含那些文件/文件属于哪个rpm包

一个rpm包中包含那些文件
一个没有安装过的软件包,使用rpm -qlp rpm-filename.rpm
一个已经安装过的软件包,还可以使用rpm -ql packet-name
查看一个文件属于哪个rpm包, rpm -qf /path/filename

如:
查看glibc包内的文件

[root@fsc ~]# rpm -ql glibc
/etc/gai.conf
/etc/ld.so.cache
/etc/ld.so.conf
/etc/ld.so.conf.d
/etc/localtime
/etc/nsswitch.conf
/etc/rpc
/lib/i686
/lib/i686/nosegneg
/lib/i686/nosegneg/libc-2.12.so
....

 

 [root@fsc ~]# rpm -qf /usr/lib/gconv/libKSC.so
 glibc-2.12-1.7.el6_0.5.i686

 

centos最小化安装后setup工具的防火墙配置功能安装

setup是redhat系列(包括centos,fedora等)里很好用的一个工具,不过可惜的是其它发行版里并没有。

为了系统的干净高效,安装系统时使用centos 6最小化安装(为了可以手工编译一些软件包,在安装时选择了马上定制,多选择了开发工具),装完了配置系统时,发现没有setup这个工具,whereis setup ,结果是空的。yum install setup, 系统提示已经安装了setup包。上网查,原来这个包的名字不叫setup, 而是setuptool,

yum install setuptool

不过运行这时setup只有Authentication configuration可用

防火墙的配置包叫system-config-firewall, yum安装,自动安装两个依赖包:system-config-firewall-tui, system-config-firewall-base.

通过yum list system-config*查询有好几个相关的包,应该都是与setup功能有关的

system-config-firewall.noarch
system-config-firewall-base.noarch
system-config-firewall-tui.noarch
system-config-date.noarch
system-config-date-docs.noarch
system-config-kdump.noarch
system-config-keyboard
system-config-kickstart.noarch
system-config-language.noarch
system-config-lvm.noarch
system-config-network-tui.noarch
system-config-printer
system-config-printer-libs
system-config-printer-udev
system-config-services.noarch
system-config-services-docs
system-config-users.noarch
system-config-users-docs.noarch

另外还有一个服务配置工具,它的名字比较特殊,跟上面所述包名字完全不一样,它叫ntsysv

运行yum install ntsysv 安装setup的服务设置工具

不过,系统配置方面,能手工做就手工做,借助图形化工具不是提高水平的途径。