适用版本
OceanBase 数据库 V2.X、V3.X 各个版本
问题现象
测试环境或生产环境中,安装 oceanbase-debuginfo-xxx.rpm 包来调试 coredump 时遇到如下报错。
[root@xxx /root]# rpm -ivh oceanbase-debuginfo-3.2.3.3-108020022023051212.el7.x86_64.rpm
warning: Unable to get systemd shutdown inhibition lock: Unit is masked.
Preparing... ################################# [100%]
file /usr/lib/debug from install of oceanbase-debuginfo-3.2.3.3-108020022023051212.el7.x86_64 conflicts with file from package filesystem-3.2-20.1.alios7.x86_64
file /usr/lib/debug from install of oceanbase-debuginfo-3.2.3.3-108020022023051212.el7.x86_64 conflicts with file from package obproxy-debuginfo-3.2.10.0-20221231235818.el7.x86_64
file /usr/lib/debug/home from install of oceanbase-debuginfo-3.2.3.3-108020022023051212.el7.x86_64 conflicts with file from package obproxy-debuginfo-3.2.10.0-20221231235818.el7.x86_64
file /usr/lib/debug/home/admin from install of oceanbase-debuginfo-3.2.3.3-108020022023051212.el7.x86_64 conflicts with file from package obproxy-debuginfo-3.2.10.0-20221231235818.el7.x86_64
问题原因
安装 oceanbase-debuginfo-xxx.rpm 包的过程本质上是一个将该 RPM 包解压到本地的过程,如果解压后生成的 目录/文件 与某个其他的 RPM包安装产生的 目录/文件 同名的话,则会产生该冲突告警。
[root@xxx /root]# rpm -qpl oceanbase-debuginfo-3.2.3.3-108020022023051212.el7.x86_64.rpm | grep -i /usr/lib/debug
/usr/lib/debug
/usr/lib/debug/.build-id
/usr/lib/debug/.build-id/80
/usr/lib/debug/.build-id/80/4f8afcd4ab2eb21bbd668b03eddade
/usr/lib/debug/.build-id/80/4f8afcd4ab2eb21bbd668b03eddade.debug
/usr/lib/debug/.build-id/e4
/usr/lib/debug/.build-id/e4/5569bdc0082ccd2cdbee8e914db152
/usr/lib/debug/.build-id/e4/5569bdc0082ccd2cdbee8e914db152.debug
/usr/lib/debug/.build-id/e4/d3492f20505aae7cb4ad70b1cf5f0b
/usr/lib/debug/.build-id/e4/d3492f20505aae7cb4ad70b1cf5f0b.debug
/usr/lib/debug/home
/usr/lib/debug/home/admin
/usr/lib/debug/home/admin/oceanbase
/usr/lib/debug/home/admin/oceanbase/bin
/usr/lib/debug/home/admin/oceanbase/bin/ob_admin.debug
/usr/lib/debug/home/admin/oceanbase/bin/obesi.debug
/usr/lib/debug/home/admin/oceanbase/bin/observer.debug
[root@xxx /root]# rpm -ql filesystem-3.2-20.1.alios7.x86_64 | grep /usr/lib/debug
/usr/lib/debug
/usr/lib/debug/bin
/usr/lib/debug/lib
/usr/lib/debug/lib64
/usr/lib/debug/sbin
/usr/lib/debug/usr
/usr/lib/debug/usr/.dwz
/usr/lib/debug/usr/bin
/usr/lib/debug/usr/lib
/usr/lib/debug/usr/lib64
/usr/lib/debug/usr/sbin
可以看到 oceanbase-debuginfo-xxx.rpm 安装后会生成 /usr/lib/debug 目录,但是 filesystem-3.2-20.1.alios7.x86_64 已经安装生成了该目录,因此产生了如上的冲突告警。
解决方法
方法一 虽然这边安装两个不同的 RPM 包均会生成
/usr/lib/debug目录,但是这两个 RPM 安装后生成的/usr/lib/debug目录下的文件和子目录并不冲突,因此可以通过添加--force选项来强制安装oceanbase-debug-xxx.rpm包。``` [root@xxx /root]# rpm -ivh oceanbase-debuginfo-3.2.3.3-108020022023051212.el7.x86_64.rpm --force warning: Unable to get systemd shutdown inhibition lock: Unit is masked. Preparing... ################################# [100%] Updating / installing... 1:oceanbase-debuginfo-3.2.3.3-10802################################# [100%] ```方法二 因为安装
oceanbase-debuginfo-xxx.rpm包的过程本质上是一个将该 RPM 包解压到本地的过程,因此这边可以直接将该 RPM 解压到本地即可。``` [root@xxx /root]# rpm2cpio oceanbase-debuginfo-3.2.3.3-108020022023051212.el7.x86_64.rpm | cpio -div -u ./usr/lib/debug ./usr/lib/debug/.build-id ./usr/lib/debug/.build-id/80 ./usr/lib/debug/.build-id/80/4f8afcd4ab2eb21bbd668b03eddade ./usr/lib/debug/.build-id/80/4f8afcd4ab2eb21bbd668b03eddade.debug ./usr/lib/debug/.build-id/e4 ./usr/lib/debug/.build-id/e4/5569bdc0082ccd2cdbee8e914db152 ./usr/lib/debug/.build-id/e4/5569bdc0082ccd2cdbee8e914db152.debug ./usr/lib/debug/.build-id/e4/d3492f20505aae7cb4ad70b1cf5f0b ./usr/lib/debug/.build-id/e4/d3492f20505aae7cb4ad70b1cf5f0b.debug ./usr/lib/debug/home ./usr/lib/debug/home/admin ./usr/lib/debug/home/admin/oceanbase ./usr/lib/debug/home/admin/oceanbase/bin ./usr/lib/debug/home/admin/oceanbase/bin/ob_admin.debug ./usr/lib/debug/home/admin/oceanbase/bin/obesi.debug ./usr/lib/debug/home/admin/oceanbase/bin/observer.debug 8074132 blocks ```