После установки 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.
Как я могу установить версию Perf с поддержкой сценариев в Ubuntu?
С тех пор полный нетерпения (13.04), perf
создается без сценариев Python, включенных, “для предотвращения зависимости от сборки Python”. Это стало неприятным шоком для людей как я, кто использовал perf
в 12.04 LTS и обновленный до 14.04 LTS. Это документируется в debian-master/changelog
файл в мерзавце ядра Ubuntu repos.
Короче говоря, если Ваше ядро 3.8.0-6.11 или позже, Вы — для использования точной технической терминологии — “дерьмо не повезло”: необходимо создать собственное perf
.
Если Вы решаете сделать это Ubuntu способ, который является на самом деле довольно простым, можно погуглить для учебных руководств с переменными уровнями детализации (например, здесь или здесь). После того как Вы достигли стадии, где Вы клонировали ядро Ubuntu git
repo, соответствующие Вашему выпуску и, проверили тег, соответствующий Вашему текущему ядру (если Ваше текущее ядро будет 3.13.0-48-универсально, то тег будет чем-то как 3.13.0-48.80
, т.е. с дополнительным числом на конце), необходимо отредактировать (w.r.t корень git
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
) занимает много времени для создания (~25 минут на моем i7 ноутбуке). Если бы я уделил больше внимания, то я, возможно, вероятно, выбрал тот, который не создавал каждый вариант ядра и модуль. Приветствующиеся предложения.
Предположение, что Вы не внесли никакие другие изменения, после того как это заканчивается, пакет, который Вы хотите, linux-tools-3.13.0-48_3.13.0-48.80_amd64.deb
(по модулю Ваша версия ядра): это - то с двоичным файлом, а не обертки оболочки или символьные ссылки.
Может быть несколько другой 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
с
# sudo dpkg -i linux-tools-3.13.0-48_3.13.0-48.80_amd64.deb
Можно установить столько же, или так же мало, ядра, модулей ядра, других пакетов инструментов, и т.д. как Вы довольны. В принципе они должны все быть тем же. Я просто установил один пакет, и все, кажется, работает хорошо: у Меня есть свое способное к Python perf
назад.
Конечно, Вы оказываетесь перед необходимостью делать многое из этого снова (от a git pull
и checkout
из нового тега вперед) в следующий раз существует обновление ядра. Я должен буду не отставать от этого сам, таким образом, я полудумал о засовывании моего .debs в PPA, но там, кажется, не много интереса (этот вопрос upvoted дважды за 3 месяца).