为 RHEL 9 和 CentOS Stream 9 安装 lsb_release 包
后知后觉 暂无评论

众所周知 lsb_release 是常用的检查发行版版本的命令行工具,但是不幸的是,在 RHEL 9 及 CentOS Stream 9 上这个包已经被废弃,官方没有提供这些包及其相关依赖。

一般来说没有也不影响使用,但是部分比较老旧的程序内关于系统的判断还是基于此命令,因此没有会导致一些兼容性问题,就需要想办法手动安装 lsb_release

啰嗦

顺便一提在此过程中一个神奇的发现,在 CentOS 宣布滚动发行前,迭代顺序为:

Fedora -> RedHat -> CentOS

简而言之:所有新特性会在 Fedora 中添加和迭代,稳定后进入红帽收费版 RHEL,然后剥离收费套件和私有套件变为开源 CentOS,用于培养免费用户,滋养红帽系列生态。

而 CentOS 宣布放弃普通版本,变为滚动更新版后,迭代顺序变为:

Fedora -> CentOS Stream -> RedHat

线路图(!AVIF)

可以看到在新线路中,Fedora 迭代的包会立即进入 CentOS Stream 中,然后再进入 RHEL。

奇怪的点就在这里,实际上 lsb_release 这个包在 Fedora 中还是有的,但是不知道什么原因在进入 CentOS Stream 中时被砍了。所以可以从上游获取源码进行构建。


构建

环境准备

先安装构建环境

sudo dnf groupinstall 'RPM Development Tools'
sudo dnf groupinstall 'Development Tools'

获取源码

然后获取源码包,需要从 Fedora 仓库中获取,需要注意的是,经过实测,ncurses-compat-libs 这个包依赖系统的ncurses 包,因此需要与系统自带的版本匹配,所以只能从旧版本的 Fedora 中获取,对比后只有 Fedora 35 版本的源码可用,Fedora 35 之后的版本构建出来的包与仓库中的 ncurses 版本冲突。

因为 Fedora 实际上也是滚动更新,停止维护的版本的包会被移动到 Fedora Project Archives 归档网站中。包名搜索和子包关系可以在 Fedora Project Packages 中进行搜索。

wget https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/35/Everything/source/tree/Packages/n/ncurses-6.2-8.20210508.fc35.src.rpm
wget https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/35/Everything/source/tree/Packages/r/redhat-lsb-4.1-55.fc35.src.rpm
wget https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/35/Everything/source/tree/Packages/s/star-1.6-5.fc35.src.rpm

构建依赖

补充构建所需的依赖

sudo dnf install -y e2fsprogs-devel \
                    gpm-devel \
                    libacl-devel \
                    libattr-devel \
                    libselinux-devel

编译

然后从源码中构建,注意此步骤必须在普通用户中执行。

rpmbuild --rebuild ncurses-6.2-8.20210508.fc35.src.rpm
rpmbuild --rebuild redhat-lsb-4.1-55.fc35.src.rpm
rpmbuild --rebuild star-1.6-5.fc35.src.rpm

使用

构建完成后安装即可

cd ~/rpmbuild/RPMS/x86_64
sudo dnf localinstall redhat-lsb-core-4.1-55.el9.x86_64.rpm redhat-lsb-submod-security-4.1-55.el9.x86_64.rpm ncurses-compat-libs-6.2-8.20210508.el9.x86_64.rpm spax-1.6-5.el9.x86_64.rpm

检查

理论上所有 RHEL 衍生版本(比如:Rocky Linux、AmlaLinux 等)都可以通过此方法进行构建,注意甄别一下 ncurses 版本即可。


附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。