Пишу на python3 под Ubuntu, хочу создать deb пакет, подскажите как, или где есть доступная информация?
Ответ
Для того, кто не понимает как устроены .deb пакеты эта задача может оказаться неподъемной, как бы просто не было написано в гайдах.
Первое, что у вас должно быть в наличии - это работающий setup.py, чтобы ваше приложение могло корректно собрать все необходимые файлы и зависимости, где надо скомпилироваться и т.д. Нет setup - нет пакета.
Второе - ваш самый лучший друг отныне - это dh-virtualenv. dh - значит DebHelper. helper'ы - это специальные утилиты, помогающие собрать вам пакет. Эта штука прочитает ваш requirements, скачает нужную версию Python, скачает все зависимости, скомпилирует опять-таки все, что нужно и ваше приложение окажется мало того, что в пакете, так еще и автоматически в virtualenv. То есть ваше приложение развернется из пакета уже в изолированной обертке и вы можете быть уверены, что оно никому ничего не сломает, не переставит системный Python, не понаставит лишних библиотек и независимо. Это так круто, что даже сложно описать не задыхаясь. Подключить dh-virtualenv легко:
Третье - создайте в корне проекта каталог с именем debian - это служебный каталог со служебными файлами. Об их назначении и подробностях вы сможете прочитать в соответствующих руководствах, здесь я приведу примеры таких файлов:
rules:
#!/usr/bin/make -f
%:
dh $@ --with python-virtualenv
override_dh_virtualenv:
dh_virtualenv --python /usr/bin/python3
Подключает dh-virtualenv и указывает, что собираемся с Py3. По умолчанию dh-virtualenv последней версии поместит ваши файлы при установке в /opt/venvs/
control
Source: MY_COOL_PACKAGE
Section: python
X-Python3-Version: >= 3.3
Priority: extra
Maintainer: Choo Choo
Package: MY_COOL_PACKAGE
Architecture: all
Depends: ${python:Depends}, ${misc:Depends}, postgresql-client, libpq-dev, postgresql-contrib, python3-all, python3-dev, python3-setuptools, python3-pip, libxml2-dev, libxslt1-dev, zlib1g-dev
Description: Таки посмотрите на зависимости, подставьте те, которые нужны вам
В этом, да и makefile обратите внимание на наличие и количество пробелов - вся сборка это ОЧЕНЬ бюрократизированный процесс, не там поставите пробел (или поставите 5 вместо четырех) и долго не будете понимать, в чем дело. С пробелами нужно быть крайне внимательным, читайте в руководствах как конкретно разделяются секции и команды.
compat: 9
changelog: тут вам поможет утилита dch. Пускайте man dch и вам там пояснят за смену версий, утилита простая. Можно жахнуть dch -i, чтобы увеличить версию на 1, заполнить список изменений и информацию о контрибьютере. Получится как-то так:
MY_COOL_PACKAGE (0.5.1) experimental; urgency=medium
* Пофиксил бажную страницу
-- Choo Choo
configs: /etc/MY_COOL_PACKAGE/my_config.ini - необходимость в этом файле возникает, если какие-то файлы должны поместиться в особенные каталоги (логи, конфиги).
После этого ваше приложение выглядит как-то примерно так:
my_app:
-- .git
-- sources
---- debian/
------ changelog
------ compat
------ control
------ files
-------- rules
---- source_files/
---- requirements.txt
---- setup.py
-- .gitignore
-- readme.txt
Когда все сделано, все файлы созданы - выполняете команду dpkg-buildpackage -us -uc. Кто-то предпочитает не пользоваться низкоуровневым dpkg, а вместо него использует дебил - debuild
Либо dpkg, либо дебил, если все сделано верно соберут вам пакет и несколько других файлов, они нас пока не касаются - вас интересует только .deb файл. Это обычный архив и вы можете посмотреть его, чтобы убедиться, что все на месте.
Если все на месте, то не спешите радоваться, потому что перед тем, как посылать этот пакет в архив, вам нужно его проверить - за это отвечает утилита lintian - она проверит ваш пакет и выдаст вердикт. Если пакет некачественный, то перед установкой dpkg будет ругаться (и всем будет говорить, что пакет некачественный - стыдно), однако, после подтверждения даже некачественный пакет можно установить.
Также нужно отметить, что приведенное "руководство" - довольно простой пример для маленького приложения. Наверняка вам потребуется изучить, как вставить pre-install, post-install скрипты (например, для миграций), не раз прочитать руководство на предмет остальных служебных файлов и параметров сборки, коих тьма.
Комментариев нет:
Отправить комментарий