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



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



до сих пор это то, что я думаю, что я понял.




  1. моей конечной целью должно быть создание "двоичным" .deb пакет. Такой пакет будет независимым от платформы (32/64 бит) как и все программы python таковы.

  2. для создания "двоичного" пакета мне нужно сначала создать исходный пакет.

  3. для создания исходного пакета я могу использовать либо CDBS или debhelper. Инструмент рекомендуется для начинающих.

  4. суть создания исходного пакета заключается в заполнении каталога DEBIAN в исходном каталоге несколькими файлами, уточняющими, где файлы должны быть скопированы, какие они имеют авторские права и схемы лицензирования при условии, что зависимости у них нет, и т. д...

  5. Шаг № 4 может быть в значительной степени автоматизирован dh_makeкоманда если источник python также поставляется с distutils'setup.py сценарий.


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





  1. правильно ли я понимаю этот процесс? есть ли что-то, что я упускаю, или что-то, что я получил неправильно?

  2. Шаг #5 действительно более запутан для меня: в частности, два момента, которые остается самым непонятным для меня:



    • как мне написать setup.py скрипт, который устанавливает автономную программу?EDIT: By автономный rogramme Я имею в виду программу, предназначенную для использования пользователем рабочего стола (в отличие от модуль который я понимаю как набор функций, которые будут использоваться другим программным обеспечением после импорта). В моем конкретном случае мне действительно нужно два такие "программы": в основное программное обеспечение и отдельная утилита (по сути вторая "программа", которая должна быть в одном пакете с другой).


    • каковы особенности такого скрипта для пакетов DEB? официальная документация, похоже, имеет дело только с RPM и Windows...




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



531   4  

4 ответов:

похоже stdeb будет делать то, что вы хотите.

кроме того, для установки скриптов, я настоятельно рекомендую распространять console_scripts запись поддержки.

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

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

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

это основы для создания пакета Debian с помощью dpkg -b <folder> С любым двоичным или с любым типом скрипта, который запускается автоматически без необходимости ручной компиляции (Python, Bash, Pearl, Ruby):

  1. создайте файлы и папки, чтобы воссоздать следующее структура:
    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/

  1. измените все разрешения папки на root:

    chown root:root -R /path/to/ProgramName-Version
    
  2. изменить разрешения скрипта:

    chmod 0755 /path/to/the/script
    
  3. наконец, вы можете запустить: 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.py
    
  • py2deb (установить с pip install py2deb). Чтобы создать пакет debian, выполните:

    py2deb -r . .
    

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

Comments

    Ничего не найдено.