V7 上的应用迁过去跑不了?
中标麒麟 V7 上的应用迁到新版麒麟后跑不了的原因:依赖库版本跨度大、glibc/库路径变化、架构不同,给迁移前核对与分步验证方法。
简短答案
V7(老内核、老 glibc)的应用直接搬到新系统上跑不了,根子是库版本跨度太大:应用链接的库(glibc 等)在新系统上不存在或行为变了。迁移标准动作是先在一台目标机上分步验证依赖,再批量迁,不要整批搬。
现象对照表
| 现象 | 根因 |
|---|---|
启动报 cannot open shared object |
链接的库在新系统没有 |
version GLIBC_xxx not found |
应用需要老版 glibc,新系统更高 |
| 64 位应用在新架构机报错 | 架构变了(如 x86_64 到 ARM) |
| 配置能用、二进制不行 | 二进制与库强绑定,配置无影响 |
排查步骤
# 应用实际依赖哪些库
ldd 应用二进制
# 新系统上缺哪个库
ldd 应用二进制 2>&1 | grep 'not found'
# 新系统 glibc 版本
ldd --version
处理办法
- 缺库:优先找该应用在新系统上的适配版本(由应用提供方出,不要手工拷老 glibc 进系统,破坏面大);
- 架构变了:换对应架构的应用包,目标机基线参考 服务器 V11 条目;
- 旧机留档:老环境对照 中标麒麟 V7 条目 记录原有配置,迁移时逐项核;
- 迁移演练先做单机,验证通过再批量;需要介质引导用 Rufus 启动盘条目,入口在 麒麟快捷入口。
操作小结
- 先 ldd 看缺什么库;
- 优先换适配版应用,不拷老 glibc;
- 架构变了必须换包;
- 单机验证通过再批量迁。