Стандартный способ создания пакетов debian для распространения программ Python?
есть тонна информации о том, как это сделать, но так как "есть более чем один способ освежевать кошку", и все учебники / руководства, которые охватывают немного процесса, похоже, делают определенные предположения, которые отличаются от других учебников, мне все еще не удалось понять это.
до сих пор это то, что я думаю, что я понял.
- моей конечной целью должно быть создание "двоичным" .deb пакет. Такой пакет будет независимым от платформы (32/64 бит) как и все программы python таковы.
- для создания "двоичного" пакета мне нужно сначала создать исходный пакет.
- для создания исходного пакета я могу использовать либо
CDBSилиdebhelper. Инструмент рекомендуется для начинающих. - суть создания исходного пакета заключается в заполнении каталога DEBIAN в исходном каталоге несколькими файлами, уточняющими, где файлы должны быть скопированы, какие они имеют авторские права и схемы лицензирования при условии, что зависимости у них нет, и т. д...
- Шаг № 4 может быть в значительной степени автоматизирован
dh_makeкоманда если источник python также поставляется с distutils'setup.pyсценарий.
теперь мои вопросы:
правильно ли я понимаю этот процесс? есть ли что-то, что я упускаю, или что-то, что я получил неправильно?- Шаг #5 действительно более запутан для меня: в частности, два момента, которые остается самым непонятным для меня:
как мне написатьsetup.pyскрипт, который устанавливает автономную программу?EDIT: By автономный rogramme Я имею в виду программу, предназначенную для использования пользователем рабочего стола (в отличие от модуль который я понимаю как набор функций, которые будут использоваться другим программным обеспечением после импорта). В моем конкретном случае мне действительно нужно два такие "программы": в основное программное обеспечение и отдельная утилита (по сути вторая "программа", которая должна быть в одном пакете с другой).
каковы особенности такого скрипта для пакетов DEB? официальная документация, похоже, имеет дело только с RPM и Windows...
кстати: это лучшие источники информации, которые я мог бы найти до сих пор. Если у вас есть что-нибудь лучше, чем это, пожалуйста, поделитесь! :)
- руководство по упаковке Python Ubuntu
создать .deb пакет из python setup.py (это показывает шаги
но не делает объяснить их достаточно для меня, чтобы следовать вдоль)
ShowMeDo видео на "создание .deb пакет из python
программа" (это не кажется современным и - если я правильно понял-будет
производить пакеты для личного использования, без зависимостей и без
подписанный список изменений и другие ключевые данные, которые сделают его несовместимым с политикой Debian).
4 ответов:
похоже stdeb будет делать то, что вы хотите.
кроме того, для установки скриптов, я настоятельно рекомендую распространять console_scripts запись поддержки.
эта статья Барри Варшавы помог мне в получении довольно далеко через процесс. Я все еще должен был сделать много поиска на стороне, хотя, и я читал большую часть Ubuntu packaging guide некоторое время назад.
имея хороший
setup.pyЭто действительно хороший совет. Я нашел эти два руководства довольно хорошо:
правильный способ построения пакета deb использует
dpkg-buildpackageно иногда это немного сложно. Вместо этого вы можете использоватьdpkg -b <folder>и он создаст ваш пакет Debian.это основы для создания пакета Debian с помощью
dpkg -b <folder>С любым двоичным или с любым типом скрипта, который запускается автоматически без необходимости ручной компиляции (Python, Bash, Pearl, Ruby):
- создайте файлы и папки, чтобы воссоздать следующее структура:
ProgramName-Version/ ProgramName-Version/DEBIAN ProgramName-Version/DEBIAN/control ProgramName-Version/usr/ ProgramName-Version/usr/bin/ ProgramName-Version/usr/bin/your_scriptскрипты размещены на
/usr/bin/вызываются непосредственно из терминала, обратите внимание, что я не добавлял расширение в скрипт. Также вы можете заметить, что структура пакета deb будет структурой программы после ее установки. Так что если вы будете следовать этой логике, если ваша программа имеет один файл, вы можете непосредственно разместить его подProgramName-Version/usr/bin/your_script, но если у вас есть несколько файлов, вы должны поместить их подProgramName-Version/usr/share/ProgramName/all your filesи только один файл под/usr/bin/это вызовет ваши скрипты из/usr/share/ProgramName/
измените все разрешения папки на root:
chown root:root -R /path/to/ProgramName-Versionизменить разрешения скрипта:
chmod 0755 /path/to/the/scriptнаконец, вы можете запустить:
dpkg -b /path/to/the/ProgramName-Versionи ваш пакет будет создан! (Вы также можете добавить скрипты post/pre inst и все, что вы хотите, он работает как обычный пакет Debian)
вот это пример . Вам нужно только скопировать-вставить его в пустой файл под названием "control" и поместить его в папку DEBIAN
Package: ProgramName Version: VERSION Architecture: all Maintainer: YOUR NAME <EMAIL> Depends: python2.7, etc , etc, Installed-Size: in_kb Homepage: http://foo.com Description: Here you can put a one line description. This is the short Description. Here you put the long description, indented by 1 space.
существует несколько библиотек, которые абстрагируют все необходимые шаги и позволяют преобразовать ваш пакет python в пакет debian с помощью одной команды.
предполагая, что ваш пакет python уже есть
setup.py, в каталог, гдеsetup.pyнаходится, Вы можете использовать:
stdeb (уже упоминалось в этой ответ установить с
pip install stdeb). Чтобы создать пакет debian, беги:python setup.py --command-packages=stdeb.command bdist_debвыход
.debфайл будет расположен в .fpm (установить с
gem install --no-ri --no-rdoc fpm). Чтобы создать пакет debian, выполните:fpm -s python -t deb setup.pypy2deb (установить с
pip install py2deb). Чтобы создать пакет debian, выполните:py2deb -r . .каждая из этих библиотек имеет свои собственные предостережения, так что вы можете попробовать, что лучше всего работает для вас.
Comments