Создание deb-пакетов для модулей Python

Во одной из своих прошлых заметок, Шаблоны HTML::Template в Perl-фреймворке Dancer, я упомянул о том, как можно установить в систему Perl-модуль, которого нет в репозиториях, не засоряя систему. Команда dh-make-perl позволяет скачать произвольный Perl-модуль с CPAN и упаковать его в deb-пакет.

Теперь у меня возникло аналогичное желание для Python-модуля. В репозитории Debian нет модуля grab. Я не хотел прибегать к помощи python-virtualenv (подобный же инструмент существует и для Perl - пакет perlbrew в Debian и модуль App::perlbrew на CPAN), а захотел собрать deb-пакет для установки в систему.

Как оказалось, такой инструмент существует (хоть он и менее удобен по сравнению с dh-make-perl) и называется он stdeb. Он уже имеется в репозитории Debian, поэтому задача Мюнхгаузена - вытянуть себя за собственные шнурки - перед нами не стоит. Ставим пакеты stdeb и python-all:

# apt-get install stdeb python-all

Теперь находим архив с нужным нам модулем на pypi.python.org и скачиваем его себе:

$ wget https://pypi.python.org/packages/source/g/grab/grab-0.4.12.tar.gz#md5=a9d42f6db9f96357d18fe170176c95b4

Теперь можно заглянуть в документацию на stdeb и посмотреть, как это делается.

Распакуем скачанный архив:

$ tar xzvf grab-0.4.12.tar.gz

Перейдём в каталог с распакованным модулем:

$ cd grab-0.4.12

Подготовим каталог и управляющие файлы для сборки пакета:

$ python setup.py --command-packages=stdeb.command sdist_dsc

Теперь перейдём в этот каталог и соберём пакет:

$ cd deb_dist/grab-0.4.12
$ dpkg-buildpackage -us -uc -rfakeroot

В каталоге выше появится готовый deb-пакет, который можно установить в систему.

# dpkg -i python-grab_0.4.12-1_all.deb

Ссылки:

  1. Документация на stdeb
  2. Заметка об использовании Perlbrew
  3. Python. Строим виртуальное окружение с помощью virtualenv

Написать автору