#python #ubuntu #python_3x #deb
Пишу на python3 под Ubuntu, хочу создать deb пакет, подскажите как, или где есть доступная информация?
Ответы
Ответ 1
Для того, кто не понимает как устроены .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/, но это зависит от версии, читайте readme. Этот путь можно переопределить. control: Source: MY_COOL_PACKAGE Section: python X-Python3-Version: >= 3.3 Priority: extra Maintainer: Choo Choo Build-Depends: debhelper (>= 9), python, dh-virtualenv (>= 0.8), python3-setuptools Standards-Version: 3.9.5 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 Mon, 10 Apr 2017 17:24:45 +0300 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 скрипты (например, для миграций), не раз прочитать руководство на предмет остальных служебных файлов и параметров сборки, коих тьма. Ответ 2
Похоже, вам нужен либо stdeb, либо пакет devscripts (можно установить командой sudo apt install devscripts)
Комментариев нет:
Отправить комментарий