
导语:rpm-check 是 OpenCloudOS 自研的兼容性检查工具,既属于上游 OpenCloudOS Stream CI基础设施的重要一环,也服务于升级迁移解决方案,经过大批量软件包场景验证。rpm-check 8.0 新版本在满足基本功能的基础上结合大模型等新能力,提升了工具在各种场景中的作用效率。
1. 新版本7大特性
1.1 AI大模型加持,更聪明!
新版本的 rpm-check 除了基础的 abi/api,额外拓展了 ability 以及可执行文件检查的 AI 能力,覆盖更多兼容性场景,让结果更易懂。

1.2 多进程内存管理机制,更快速!
内存池动态分配多进程内存,最大化利用系统资源,worker 进程、线程火力全开,极大提高多包对比场景效率。
根据进程执行的任务类型、文件大小,预估内存使用,提前分配。

1.3 可视化进度展示,更清晰!
细粒度进度展示,动态感知整体进度,记录运行时间。

1.4 package_mapping 算法提升匹配能力,更精确!
集成 package_mapping 跨版本多维度软件包匹配算法,支持跨大版本甚至跨发行版的软件包对比。

1.5 日志模块升级,更详细!
日志模块重构升级,更多详细信息展示,灵活适应多种运行环境。

1.6 新增可执行文件检查,更全面!
支持软件包内可执行文件输出差异对比,基于容器能力实现无侵入检查和清理。

1.7 本地+远程数据库灵活支持,更方便!
支持从本地(私有化部署)以及远程(管控部署)读取 ABI/API 差异

TencentOS当前开放了一个内部使用的TS2->TS4的差异服务器供使用,后续会补充更多版本数据
https://qa.mirrors.tlinux.woa.com/yum/posttest/compat_data/ts2tots4/
一行命令直接进行兼容性检查,仅需输入需要检查的目录/文件和服务器ip即可。

rpm-check --checkabi --check-local {APP_DIR} --search-remote
https://qa.mirrors.tlinux.woa.com/yum/posttest/compat_data/ts2tots4/ --with-symbol
2. 实战场景,给业务迁移把脉
背景
某猫X业务需要将基础镜像版本从 TS2 升级到 TS3,但是随着系统基础组件的升级,业务的应用是否能够在新系统上正常运行是一个疑问。
命令
rpm-check --checkabi --check-local /opt/Mcafee/ --search-remote
https://qa.mirrors.tlinux.woa.com/yum/posttest/compat_data/ts2tots3/ --with-symbol
效果
经 rpm-check 检查后发现,除了用户自己安装的动态库(这些库也被检查无兼容性问题),依赖的其他库与新系统均不存在兼容性问题。
所以用户可以直接在新系统上部署自己的业务而不需要做额外的适配。

提示:除了动态库外,其他维度的兼容性检查维度也在紧锣密鼓的准备发布中,敬请期待!
3. 如何安装
3.1 TencentOS Server 4 OpenCloudOS Stream 环境
TencentOS Server 4 OpenCloudOS Stream 可以直接通过配置 YUM 源后下载使用
[binary]
name=binary $releasever - $basearch
baseurl=https://mirrors.opencloudos.tech/opencloudos-
stream/releases/$releasever/binary/$basearch/Packages/gpgcheck=0
enabled=1
配置好之后直接 yum 安装
yum install rpm-check -y
3.2 TencentOS Server 2 / OpenCloudOS 7 环境
已经进入 tlinux2.X 的 repo 源,如果环境能访问 YUM 源可以直接通过 YUM 下载
yum install rpm-check -y
注意:因为 python 运行环境问题,当前TS2版本的 rpm-check 仅支持远程检查 --search-remote
4. 更多使用姿势
4.1 可执行文件对比
提示:进行检查时,因为使用的是相同的容器镜像,所以如果软件包差异过大可能会出现无法安装的情况,需要调整 /etc/rpm-check.conf 中的default_docker_url 和 default_executable_repo,以使软件包能正常安装。
rpm-check --checkexec --dir1 {old_rpms_dir}--dir2 {new_rpms_dir}
[2024-11-27 17:21:18,988] [ERROR] [805721] An error occurred while downloading or loading the image:
Failed to download image tar from https://mirrors.opencloudos.tech/opencloudos-
stream/releases/23/images/x86_64/OpenCloudOS-Stream-23-20240304-mini-docker-x86_64.tar

结果示例:

4.2 AI大模型启用
rpm-check --checkability --dir1 openldap-old --dir2 openldap-new --ai-interpret

注意:当前默认使用的 hunyuan 大模型能力,如果对此有其他需求,欢迎小窗~
4.3 如何生成自己的版本差异数据
如果想要自己搭建差异服务器,方法也非常简单,你只要把所有旧版本的包放进一个目录中,新版本的包放进另一个目录中,然后
rpm-check --checkabi --dir1 {old_dir} --dir2 {new_dir}
PS:可以起一个简单的 python 服务器验证~
python3 -m http.server 10086
4.4 其它基础功能
如果需要其他兼容性相关功能,见 兼容性检查工具详解
后续还会更新基于兼容性检查工具等组件的 OpenCloudOS 完整升级迁移解决方案,敬请期待!

扫码添加社区助手进群,添加时备注「入群」




