标签:built libkdumpfile setup py without 安装 drgn python3
背景
在使用pip3安装了最新的drgn后执行
drgn -s vmlinux -c ./vmcore
命令后报出如下错误:
drgn 0.0.20+unknown (using Python 3.6.8, elfutils 0.186, without libkdumpfile) Traceback (most recent call last): File "/usr/local/bin/drgn", line 11, in <module> load_entry_point('drgn==0.0.20+unknown', 'console_scripts', 'drgn')() File "/usr/local/lib64/python3.6/site-packages/drgn-0.0.20+unknown-py3.6-linux-x86_64.egg/drgn/internal/cli.py", line 164, in main prog.set_core_dump(args.core) ValueError: drgn was built without libkdumpfile support
问题原因
默认情况下pip3安装的drgn没有集成kdump格式解析功能,默认是/proc/kcore解析;因此要先安装libkdumpfile,且把kdump功能编译到drgn。
解决方案
1 安装libkdumpfile库
对于Fedora或者EPEL on RHEL/CentOS >= 8系统可以通过dnf install libkdumpfile-devel来安装;
对于其他版本的centos需要通过源码来安装:从libkdumpfile下载源码,然后进入源码目录执行如下几个步骤进行编译、安装。
autoconf ./configure make make install
注意:1) autoconf命令 可能会失败,报错autoconfig:possibly undefined macro: AM_INIT_AUTOMAKE,此时可通过autoreconf --install来解决。
2) 上面的安装路径可能非标准的路径,可能会影响后续drgn编译。对于这种情况有两种解决方案,一种是在configure时指定安装路径参数,安装在自己的标准系统路径;另一种解决方法会在下面drgn编译是讲。
2 编译安装drgn
2.1 先安装依赖,下面是centos的安装;其他系统可参考drgn官方docs;
$ sudo dnf install autoconf automake elfutils-devel gcc git libtool make pkgconf python3 python3-devel python3-pip python3-setuptools
2.2 到drgn仓库下载代码,进入源码目录;
2.3 修改编译脚本,并添加libkdumpfile,如果libkdumpfile的安装路径不是默认的路径,还需要修改PKG_CONFIG_PATH.
diff --git a/setup.py b/setup.py index 2c0703a..f94615b 100755 --- a/setup.py +++ b/setup.py @@ -67,6 +67,8 @@ class build_ext(_build_ext): os.path.relpath("libdrgn/configure", self.build_temp), "--disable-static", "--enable-python", + "--with-libkdumpfile=yes", + "PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/" ]
2.4 编译、安装
python3 setup.py build sudo python3 setup.py install
标签:built,libkdumpfile,setup,py,without,安装,drgn,python3 来源: https://www.cnblogs.com/liuhailong0112/p/16671577.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。