Подтвердить что ты не робот

Существует ли стандартный способ создания пакетов Debian для распространения программ на Python?

Существует масса информации о том, как это сделать, но, поскольку "существует более одного способа избавиться от кошки", и все учебные пособия/руководства, которые охватывают часть процесса, похоже, делают определенные предположения, которые отличаются от других учебники, я все еще не смог понять это.

Пока это то, что я думаю, я понял.

  1. Моя конечная цель должна заключаться в создании "двоичного" пакета .deb. Такой пакет будет независимым от платформы (32/64 бит), как и все программы Python.
  2. Чтобы создать "бинарный" пакет, мне нужно сначала создать исходный пакет.
  3. Для создания исходного пакета я могу использовать либо CDBS либо debhelper. Debhelper - рекомендуемый способ для начинающих.
  4. Ядром создания исходного пакета является DEBIAN каталога DEBIAN в исходном каталоге несколькими файлами, в которых уточняется, куда следует копировать файлы, какой схеме авторского права и лицензирования они подвержены, какие у них зависимости и т.д.
  5. Шаг № 4 может быть в значительной степени автоматизирован командой dh_make если исходный код Python также поставляется со скриптом dist.tils setup.py.

Теперь мои вопросы:

  1. Правильно ли мое понимание процесса? Есть ли что-то, что я пропускаю, или что-то, что я ошибся?
  2. Шаг № 5 действительно более запутанный для меня: в частности, два вопроса, которые остаются наиболее неясными для меня:
    • Как мне написать скрипт setup.py который устанавливает автономную программу? РЕДАКТИРОВАТЬ: Под автономной программой я имею в виду программу, предназначенную для использования настольным пользователем (в отличие от модуля, который я понимаю, как набор функций, которые будут использоваться другим программным обеспечением после импорта). В моем конкретном случае мне фактически потребовалось бы две такие "программы": основное программное обеспечение и отдельная утилита (в сущности, вторая "программа", которая должна быть в одном пакете с другой).
    • Каковы особенности такого скрипта для пакетов DEB? Официальная документация имеет дело только с RPM и Windows...

КСТАТИ: Это лучшие источники информации, которые я мог найти себя до сих пор. Если у вас есть что-то лучше, чем это, пожалуйста, поделитесь! :)

4b9b3361

Ответ 2

Эта статья Барри Варшавы помогла мне пройти через этот процесс довольно далеко. Тем не менее, мне все еще приходилось много искать, и я читал большую часть руководства по сборке Ubuntu некоторое время назад.

Наличие хорошего setup.py - действительно хороший совет. Я нашел эти два руководства довольно хорошими:

Ответ 3

Правильный способ создания пакета deb использует dpkg-buildpackage, но иногда он немного сложнее. Вместо этого вы можете использовать dpkg -b <folder>, и он создаст ваш пакет Debian.

Это основы для создания пакета Debian с dpkg -b <folder> с любым двоичным кодом или с любым типом script, который запускается автоматически без ручной компиляции (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/, вызываются непосредственно из терминала, обратите внимание, что я не добавил расширение к script. Также вы можете заметить, что структура пакета deb будет структурой программы после ее установки. Поэтому, если вы придерживаетесь этой логики, если ваша программа имеет один файл, вы можете разместить ее под ProgramName-Version/usr/bin/your_script, но если у вас несколько файлов, вы должны поместить их под ProgramName-Version/usr/share/ProgramName/all your files и поместить только один файл в /usr/bin/, который будет вызовите свои сценарии из /usr/share/ProgramName/

  1. Измените все права доступа к папке на root:

    chown root:root -R /path/to/ProgramName-Version
    
  2. Измените разрешения script:

    chmod 0755 /path/to/the/script
    
  3. Наконец, вы можете запустить: dpkg -b /path/to/the/ProgramName-Version и ваш пакет deb будет создан! (Вы также можете добавить сценарии post/pre inst и все, что хотите, оно работает как обычный пакет Debian)


Вот пример файла control. Вам нужно только скопировать его в пустой файл под названием "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.

Ответ 4

Существует несколько библиотек, которые абстрагируют все необходимые шаги и позволяют вам преобразовать ваш пакет python в пакет debian с помощью одной команды.

Предполагая, что в вашем пакете Python уже есть setup.py, в каталоге, где находится setup.py, вы можете использовать:

  • stdeb (уже упоминалось в этом ответе, установите с помощью pip install stdeb). Чтобы создать пакет Debian, запустите:

    python setup.py --command-packages=stdeb.command bdist_deb
    

    Выходной файл .deb будет находиться в каталоге bdist_deb.

  • fpm (установить с помощью gem install --no-ri --no-rdoc fpm). Чтобы создать пакет Debian, запустите:

    fpm -s python -t deb setup.py
    
  • py2deb (установить с помощью pip install py2deb). Чтобы создать пакет Debian, запустите:

    py2deb -r . .
    

Каждая из этих библиотек имеет свои предостережения, так что вы можете попробовать то, что вам больше подходит.