安装包后perf
,linux-tools-common
我仍然无法使用 python/perl 脚本功能。
$ sudo perf script -g python
Python scripting not supported. Install libpython and rebuild perf to enable it.
For example:
# apt-get install python-dev (ubuntu)
# yum install python-devel (Fedora)
etc.
如何在 Ubuntu 中安装具有脚本支持的 perf 版本?
自Raring (13.04) 以来,
perf
构建时没有启用 Python 脚本“以避免 Python 构建依赖性”。perf
这对像我这样使用12.04 LTS 并升级到 14.04 LTS的人来说是一个巨大的冲击。这记录在Ubuntu 内核 git repos的debian-master/changelog
文件中。简而言之,如果您的内核是 3.8.0-6.11 或更高版本,那么您——使用精确的技术术语——“运气不好”:您必须构建自己的
perf
.如果您决定以 Ubuntu 方式执行此操作,这实际上非常简单,您可以在 google 上搜索具有不同详细程度的教程(例如,此处或此处)。一旦你已经克隆了
git
适合你的版本的 Ubuntu 内核 repo 并检查了与你当前内核对应的标签(如果你当前的内核是 3.13.0-48-generic,标签将是这样的3.13.0-48.80
,即末尾有一个额外的数字),您必须编辑(wrtgit
repo 的根目录)debian/rules.d/2-binary-arch.mk
并从其中一个命令行中删除 (它用于检查,因此将其更改为无效)。这个子句只出现一次,所以搜索一下,拿出来就可以了。NO_LIBPYTHON=1
make
\#ifdef
NO_LIBPYTHON=0
发行版的
linux-tools-3.x.x-y
包包含实际的perf
二进制文件,以/usr/lib/linux-tools-3.x.x-y/perf
. 这是用fakeroot debian/rules binary-arch
. 此规则 (binary-arch
) 需要很长时间才能构建(在我的 i7 笔记本电脑上大约需要 25 分钟)。如果我多加注意,我可能会选择一个没有构建每个内核变体和模块的。欢迎提出建议。假设您没有进行其他更改,一旦完成,您想要的包是
linux-tools-3.13.0-48_3.13.0-48.80_amd64.deb
(对您的内核版本取模):这是带有二进制文件的包,而不是符号链接或 shell 包装器。可能还有几个其他
linux-tools
包,具体取决于您构建的内容,linux-tools-3.13.0-48-generic_3.13.0-48.80_amd64.deb
仅包含符号链接和内容(不太可能有所不同),并且仅包含以;结尾linux-tools-common_3.13.0-48.80_all.deb
的简短通用perf
包装脚本。/usr/bin
后者是用fakeroot debian/rules binary-indep
.您可以安装新的支持 Python
perf
的您可以根据需要安装尽可能多或尽可能少的内核、内核模块、其他工具包等。原则上,这些都应该是一样的。我刚刚安装了一个包,一切似乎都正常:我有我的 Python-capable
perf
回来了。当然,下次有内核更新时,您将不得不再次做很多这样的事情(从新标签开始)
git pull
。checkout
我必须自己跟上这个,所以我有一半想将我的 .debs 加入 PPA,但似乎没有太大兴趣(这个问题在 3 个月内被投票两次)。