runsisi's

technical notes

CentOS 部分安装 debuginfo 包

2019-01-19 runsisi#debug

当磁盘空间不足时,我们可能无法安装完整版本的 debuginfo 包,此时可以提取必须的部分进行安装。

注意:仅针对 CentOS 系统。

可以直接在已安装的系统上提取,也可以将 debuginfo 包解压后提取。

查询已安装的 debugino 包的内容:

~$ rpm -ql ceph-debuginfo

或者,解压 debuginfo 包,通常来说不推荐在 Windows 下使用解压工具解压,在 Linux 下可以使用如下命令:

~$ rpm2cpio ceph-debuginfo-xxx.rpm | cpio -div

然后分别拷贝需要的符号信息和源代码信息到目标机器,当然在目标机器需要提前建立相应的文件夹:

~# scp /usr/lib/debug/usr/lib64/librbd.so.debug 192.168.6.39:/usr/lib/debug/usr/lib64/
~# scp /usr/lib/debug/usr/lib64/librbd.so.1.debug 192.168.6.39:/usr/lib/debug/usr/lib64/
~# scp /usr/lib/debug/usr/lib64/librbd.so.1.12.0.debug 192.168.6.39:/usr/lib/debug/usr/lib64/
~# scp /usr/lib/debug/usr/lib64/librados.so.debug 192.168.6.39:/usr/lib/debug/usr/lib64/
~# scp /usr/lib/debug/usr/lib64/librados.so.2.debug 192.168.6.39:/usr/lib/debug/usr/lib64/
~# scp /usr/lib/debug/usr/lib64/librados.so.2.0.0.debug 192.168.6.39:/usr/lib/debug/usr/lib64/
~# scp /usr/lib/debug/usr/lib64/ceph/libceph-common.so.debug 192.168.6.39:/usr/lib/debug/usr/lib64/ceph/
~# scp /usr/lib/debug/usr/lib64/ceph/libceph-common.so.0.debug 192.168.6.39:/usr/lib/debug/usr/lib64/ceph/
~# scp -r /usr/src/debug/ceph-12.2.2/src/ 192.168.6.39:/usr/src/debug/ceph-12.2.2/
~# scp -r /usr/src/debug/ceph-12.2.2/build/boost/ 192.168.6.39:/usr/src/debug/ceph-12.2.2/build/

如果了解 Linux 系统下动态库的命名规则可以知道,真正的运行时库 libxxx.so 实际上是 libxxx.so.abc 的符号链接,所以上面的 librbd.so.debug 理应是 librbd.so.1.12.0.debug 的符号链接,但不是很清楚为何在 debuginfo 包里却是真实存在的一个文件,但我们可以自己这样做,从而减少更多的磁盘空间占用:

~# scp /usr/lib/debug/usr/lib64/librbd.so.1.12.0.debug 192.168.6.39:/usr/lib/debug/usr/lib64/
~# scp /usr/lib/debug/usr/lib64/librados.so.2.0.0.debug 192.168.6.39:/usr/lib/debug/usr/lib64/
~# scp /usr/lib/debug/usr/lib64/ceph/libceph-common.so.0.debug 192.168.6.39:/usr/lib/debug/usr/lib64/ceph/
~# scp -r /usr/src/debug/ceph-12.2.2/src/ 192.168.6.39:/usr/src/debug/ceph-12.2.2/
~# scp -r /usr/src/debug/ceph-12.2.2/build/boost/ 192.168.6.39:/usr/src/debug/ceph-12.2.2/build/

~# ssh target machine
~# ln -sf /usr/lib/debug/usr/lib64/librbd.so.1.12.0.debug /usr/lib/debug/usr/lib64/librbd.so.debug
~# ln -sf /usr/lib/debug/usr/lib64/librbd.so.1.12.0.debug /usr/lib/debug/usr/lib64/librbd.so.1.debug
~# ln -sf /usr/lib/debug/usr/lib64/librados.so.2.0.0.debug /usr/lib/debug/usr/lib64/librados.so.debug
~# ln -sf /usr/lib/debug/usr/lib64/librados.so.2.0.0.debug /usr/lib/debug/usr/lib64/librados.so.2.debug
~# ln -sf /usr/lib/debug/usr/lib64/ceph/libceph-common.so.0.debug /usr/lib/debug/usr/lib64/ceph/libceph-common.so.debug