воскресенье, 6 октября 2013 г.

Создание 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

Комментариев нет: