Як створити пакет deb для одного сценарію python?


78

У мене є єдиний скрипт python, який я хочу розповсюдити як деб пакет. Це показник, який показує місцеву дату на панелі Unity. Я слідую, щоб створити .deb пакет із скриптів або двійкових файлів, але я не зміг створити пакет дебюту, оскільки він не працює.

Чи може хтось дати мені покрокову інструкцію про те, що я повинен робити? Наскільки я знаю, цей сценарій залежить від цього python-appindicator.

ПРИМІТКА.
Я не хочу посилань на інструкції щодо упаковки Debian / Ubuntu. Я бачив більшість із них. Я не вважаю їх доброзичливими для початківців.


6
Хоча інструкції щодо упаковки Debian та Ubuntu не є початковими для користувачів (довіряйте мені, я знаю), багато програм GUI, які створюють налагодження для вас, просто виявляють купу помилок, коли ви запускаєте остаточну перевірку пакунків, наприклад, лінійську. Якщо ви серйозно ставитесь до упаковки, то жорстке розроблення та інструкція - це найкращий шлях :)
Thomas 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 / правила :

#!/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

Це створить функціональний пакет дебютів. Lintian збирається винести кілька попереджень щодо відсутності orig.tar.gz, але якщо ви не плануєте створити належний проект, що виробляє версію, яка б випускала tarball, ви, мабуть, просто захочете проігнорувати це.


12
Як пакувальник (і підтримка) я пакую сценарії пітона досить часто. Я сміливо можу сказати, що ця відповідь тут є найповнішим поясненням того, що потрібно зробити, щоб створити пакет для одного сценарію python.
Thomas Ward

2
Чи можете ви також оновити його для Python 3? Я думаю , нам потрібно внести зміни в debian/rulesі debian/control, але я не впевнений в цьому.
Адітя

1
@Aditya, можливо, для Python3 потрібне нове запитання? Відповідь не була б дуже різною, але ця відповідь має на меті бути найпростішим / найменшим мінімальним прикладом того, як упакувати сценарій Python. Не впевнений, що я хочу захаращувати це кількома реалізаціями.
andrewsomething

@andrewsomething: Тоді вас може зацікавити той, який спонукав мене залишити цей коментар ... Потрібно трохи редагувати на цьому, я б спробував це зробити ...
Aditya

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'. Відкрийте 'бін' і вставте туди свій файл піктограми.

  6. Ви також можете зробити меню. Але це не суттєво.
  7. Поверніться до домашньої папки, де папка "mypyscript" лежить або закрийте браузер файлів.
  8. Відкритий термінал. Будьте впевнені, що термінал знаходиться в домашній папці. введіть. dpkg -b mypyscriptПотім натисніть клавішу Enter. За лічені секунди ваш пакет дебютів готовий

Примітка. Будь ласка, заповніть файл "управління" належним чином. Не використовуйте апострофи. Це лише для вказівки імен.


1
Чудово працює! Прийнята відповідь є складною.
SuB

Не забудьте змінити дозвіл 'myscript' на 755 і власника його на root.
SuB

Як створити запис у меню?
Зробити

9

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


Debcreate - це класно. Мені це подобається поки що, я тільки почав використовувати його сьогодні для створення з вихідного коду python.
відповідьПереглядач

3

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


Так, я також люблю додавати. wiki.ubuntu.com/Quickly , якщо ви віддаєте перевагу відео, як я, ютуб - чудовий ресурс
Jiew Meng

Швидко не можна просто перетворити пакет у .deb-пакет
Архіман Паніграхі

2

Спробуйте pkgme . Це повинен був просто працювати.

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

sudo apt install pkgme

Виконати через:

pkgme
debuild

(Можливо, доведеться запустити нового розробника gpg --gen-key, див. Ключові розробки, щоб зробити це правильно)


1

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


0

Ви можете спробувати використовувати Debreate

Це інтерфейс Gui для створення пакетів і речей, які ви можете використовувати PPA також, якщо ви не хочете завантажити його з веб-сайту, перерахованого вище.

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

Ive обумовив ppa, щоб він працював як один єдиний рядок коду! Дякуємо за дивовижне запитання і не забудьте продовжувати додавати ці рядки коду до терміналу!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.