Как мне создать пакет deb для одного скрипта Python?

78

У меня есть один скрипт Python, который я хочу распространять как пакет deb. Это индикатор, который показывает локальную дату на панели Unity. Я следовал за созданием пакета .deb из скриптов или двоичных файлов, но я не смог создать пакет deb, потому что он не работает.

Может кто-нибудь дать мне пошаговую инструкцию, что мне делать? Насколько я знаю, этот сценарий зависит от python-appindicator.

ПРИМЕЧАНИЕ:
я не хочу никаких ссылок на инструкции по сборке Debian / Ubuntu. Я видел большинство из них. Я не считаю их начинающими дружелюбными.

sagarchalise
источник
6
Хотя инструкции по сборке Debian и Ubuntu не подходят для начинающих (поверьте мне, я знаю), многие приложения с графическим интерфейсом, которые создают для вас дэбы, просто выдают кучу ошибок при запуске окончательной проверки пакетов, такой как lintian. Если вы серьезно относитесь к упаковке, то toughing его и работать через инструкцию лучший способ пойти :)
Томас Boxley
Я не знаю насчет упаковки, но функциональность, которую вы пытаетесь добавить, встроена в Unity.
Это Виллем

Ответы:

84

Ниже приведен основной пример того, как может выглядеть исходный пакет для скрипта Python. Хотя большинство учебных пособий по упаковке немного сложны, они могут действительно помочь, если вы столкнетесь с проблемой. Тем не менее, я сначала изучил основы упаковки Debian, просто взглянув на пакеты Debian. apt-get sourceНечто подобное и учить на собственном примере

Вот ваш основной макет исходного пакета:

my-script/
    -- myScript
    -- debian/
        -- changelog
        -- copyright
        -- compat
        -- rules
        -- control
        -- install

Запустите dch --createв каталоге, чтобы создать правильно отформатированную debian/changelogзапись.

debian / copyright должен выглядеть так:

Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: myScript
Upstream-Contact: Name, <email@address>

Files: *
Copyright: 2011, Name, <email@address>
License: (GPL-2+ | LGPL-2 | GPL-3 | whatever)
 Full text of licence.
 .
 Unless there is a it can be found in /usr/share/common-licenses

Debian / Compat может быть просто:7

debian / rules :

#!/usr/bin/make -f

%:
    dh $@ --with python2

Обратите внимание, что раньше должна быть «табуляция» dh $@ --with python2, а не пробелы.

Debian / Control :

Source: my-script
Section: python
Priority: optional
Maintainer: Name, <email@address>
Build-Depends: debhelper (>= 7),
               python (>= 2.6.6-3~)
Standards-Version: 3.9.2
X-Python-Version: >= 2.6


Package: my-script
Architecture: all
Section: python
Depends: python-appindicator, ${misc:Depends}, ${python:Depends}
Description: short description
 A long description goes here.
 .
 It can contain multiple paragraphs

debian / install :

myScript usr/bin/

Этот файл указывает, какой файл будет установлен в какую папку.

Теперь создайте его с debuild --no-tgz-check

Это создаст функциональный пакет deb. Lintian собирается выдать несколько предупреждений об отсутствии файла orig.tar.gz, но если вы не планируете создать надлежащий вышестоящий проект, который выпускает тарбол-релизы, вы, вероятно, сейчас просто захотите проигнорировать это.

andrewsomething
источник
12
Как упаковщик (и бэкпортер) я довольно часто упаковываю скрипты на python. Я могу с уверенностью сказать, что этот ответ является наиболее полным объяснением того, что нужно сделать, чтобы создать пакет для одного скрипта Python.
Томас Уорд
2
Не могли бы вы также обновить его для Python 3? Я думаю , нам нужно внести изменения в debian/rulesи debian/control, но я не уверен в этом.
Адитья
1
@ Aditya, может быть, новый вопрос для Python3? Ответ не будет сильно отличаться, но этот ответ является самым простым / минимальным примером того, как упаковать скрипт на Python. Не уверен, что я хочу загромождать это несколькими реализациями.
Andrewsomething
@andrewsomething: Тогда вас, возможно, заинтересует тот, который побудил меня оставить этот комментарий ... Требуется немного отредактировать этот комментарий, я попробую свои силы в этом ...
Адитья
1
Как насчет библиотек? Если скрипт python импортирует библиотеки, он не будет работать
D.Snap
18
  1. создайте папку с любым именем в вашем доме, например: mypyscript
  2. Откройте папку и создайте две папки с именами 'DEBIAN' и 'usr'
  3. Откройте папку DEBIAN. Создайте текстовый файл (без расширения) с именем control.
  4. Откройте «control» и напечатайте следующим образом и сохраните его на DEBIAN

    Package: mypyscript
    Version: 0.01
    Architecture: all
    Maintainer: your name<your mail id>
    Installed-Size: 2
    Depends: python-appindicator
    Section: extras
    Priority: optional
    Homepage: your homepage
    Description: describe
  5. Вернуться к папке с именем mypyscript. Откройте «usr». Создайте папку с именем «bin». Откройте «bin» и вставьте туда свой файл pythonscript.

  6. Вы также можете сделать пункт меню. Но это не обязательно.
  7. Вернитесь в домашнюю папку, где находится папка «mypyscript», или закройте браузер файлов.
  8. Откройте терминал. Убедитесь, что терминал находится в домашней папке. Тип. dpkg -b mypyscriptЗатем нажмите Enter. Через несколько секунд ваш deb пакет готов

примечание: пожалуйста, заполните файл 'control' правильно. Не используйте апострофы. Это только для указания имен.

СТ Альфас
источник
1
Работает отлично! Принятый ответ сложен.
Суббота,
Не забудьте изменить разрешение «myscript» на 755, а владельца - на root.
суббота
Как мне создать пункт меню?
Делай
9

Вы можете попробовать Debreate , графический инструмент для создания пакетов.

davidc3
источник
Дебрекат это круто. Мне это пока нравится, я только начал использовать его сегодня для сборки из исходного кода на Python.
answerSeeker
3

Я хотел бы проверить быстро, отлично подходит для создания быстрых приложений и создания Дебс Google или вы можете найти учебники здесь http://developer.ubuntu.com/

Oly
источник
Да, я тоже хотел бы добавить. wiki.ubuntu.com/Быстро , если вы предпочитаете такие видео, как я, YouTube - отличный ресурс
Jiew Meng
Быстро не может просто превратить пакет в пакет .deb
Archisman Panigrahi
2

Попробуйте pkgme . Это должно просто работать.

Установить через:

sudo apt install pkgme

Запустить через:

pkgme
debuild

(Возможно, придется запустить нового разработчика gpg --gen-key, см. Раздел «Разработка Keysigning» ).

военно-картографическая служба
источник
1

Между тем есть статья, описывающая дилемму, найденную на https://www.nylas.com/blog/packaging-deploying-python/ . В основном говорится, что dh-virtualenv работает вместе с make-deb для простого развертывания кода Python, просто используя файл setup.py. Краткое руководство можно найти по адресу https://gist.github.com/JeOam/bc6cbf38f04d6f9dbf81.

tc88
источник
0

Вы можете попробовать использовать Debreate

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

sudo add-apt-repository ppa:antumdeluge/<ppaname>; sudo apt update; sudo apt install debreate

Я сжал ppa так, что он работает как одна строка кода! Спасибо за удивительный вопрос и будьте уверены, что продолжаете вставлять эти строки кода в терминал!

Galien1
источник