Стандартный способ создания пакетов 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 будет делать то, что вы хотите.
кроме того, для установки скриптов, я настоятельно рекомендую распределить по запись поддержки.
эта статья Барри Варшава помог мне в получении довольно далеко через процесс. Мне все еще приходилось много искать на стороне, и я прочитал большую часть руководство по упаковке Ubuntu некоторое время в прошлом.
имея хороший setup.py
Это действительно хороший совет. Я нашел этих двух проводников довольно хорошими:--6-->
правильный способ построения пакета 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.py
-
py2deb (установить с
pip install py2deb
). Чтобы создать пакет debian, запустите:py2deb -r . .
каждая из этих библиотек имеет свои собственные предостережения, поэтому вы можете попробовать, что лучше всего подходит для вас.