Come posso creare un pacchetto deb per un singolo script Python?


78

Ho un singolo script Python che voglio distribuire come pacchetto deb. È un indicatore che mostra la data locale nel pannello Unity. Ho seguito la creazione di un pacchetto .deb da script o binari ma non sono riuscito a creare un pacchetto deb perché non riesce.

Qualcuno può darmi istruzioni passo-passo su cosa dovrei fare? Per quanto ne so questo script dipende python-appindicator.

NOTA:
non voglio alcun collegamento alle istruzioni per il packaging di Debian / Ubuntu. Ho visto la maggior parte di loro. Non li trovo amichevoli per i principianti.


6
Mentre le istruzioni per il packaging di Debian e Ubuntu non sono facili per i principianti (fidati di me, lo so), molte applicazioni GUI che creano debs per te mostrano solo un sacco di errori quando esegui un controllo del pacchetto finale, come lintian. Se sei seriamente intenzionato a confezionare, poi darti dentro e seguire le istruzioni è il modo migliore per andare :)
Thomas Boxley,

Non conosco il packaging, ma la funzionalità che stai cercando di aggiungere è integrata in Unity.
Sono Willem il

Risposte:


84

Quello che segue è un esempio di base di come potrebbe apparire un pacchetto sorgente per uno script Python. Sebbene la maggior parte dei tutorial di packaging sia un po 'complessa, possono davvero aiutare se si verifica un problema. Detto questo, ho prima appreso le basi del packaging Debian semplicemente guardando i pacchetti Debian. apt-get sourcequalcosa di simile e impara con l'esempio.

Ecco il layout di base del pacchetto sorgente:

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

Esegui dch --createnella directory per creare una debian/changelogvoce formattata correttamente .

debian / copyright dovrebbe apparire come:

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 può essere solo:7

debian / regole :

#!/usr/bin/make -f

%:
    dh $@ --with python2

Nota che prima ci deve essere "tab" dh $@ --with python2, non spazi.

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/

Questo file indica quale file verrà installato in quale cartella.

Ora costruiscilo con debuild --no-tgz-check

Questo creerà un pacchetto deb funzionale. Lintian lancerà alcuni avvertimenti riguardo alla mancanza di un orig.tar.gz, ma a meno che tu non abbia intenzione di creare un progetto upstream adeguato che rilasci tarball, probabilmente vorrai ignorarlo per ora.


12
Come packager (e backporter), impacco gli script python abbastanza spesso. Posso tranquillamente dire che questa risposta qui è la spiegazione più completa di cosa fare per creare un pacchetto per un singolo script Python.
Thomas Ward

2
Potresti aggiornarlo anche per Python 3? Immagino che dobbiamo apportare modifiche debian/rulese debian/control, ma non ne sono sicuro.
Aditya,

1
@Aditya, forse una nuova domanda è in ordine per Python3? La risposta non sarebbe molto diversa, ma questa risposta mira a essere l'esempio minimo più semplice / nudo di come impacchettare uno script Python. Non sono sicuro di volerlo ingombrare con più implementazioni.
Andrewsomething

@andrewsomething: Allora potresti essere interessato a questo che mi ha spinto a lasciare quel commento ... Su questo è necessario un po 'di editing, vorrei provare a farlo ...
Aditya,

1
E le biblioteche? Se lo script python importa le librerie, allora non funzionerà
D.Snap

18
  1. crea una cartella con qualsiasi nome a casa tua, ad es. mypyscript
  2. Apri la cartella e crea due cartelle con i nomi "DEBIAN" e "usr"
  3. Apri la cartella DEBIAN. Crea un file di testo (senza estensione) con il nome 'controllo' lì.
  4. Apri 'control' e digita come segue e salvalo su 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. Torna alla cartella denominata mypyscript. Apri "usr". Crea una cartella denominata "bin". Apri 'bin' e incolla qui il tuo file pythonscript.

  6. È inoltre possibile effettuare una voce di menu. Ma questo non è essenziale.
  7. Torna alla cartella principale in cui si trova la cartella "mypyscript" o chiudi il browser dei file.
  8. Terminale aperto Assicurarsi che il terminale sia nella cartella principale. digitare. dpkg -b mypyscriptQuindi premere Invio. In pochi secondi il pacchetto deb è pronto

nota: compilare correttamente il file "control". Non usare apostrofi. Serve solo per indicare i nomi.


1
Funziona alla grande! La risposta accettata è complessa.
SuB

Non dimenticare di cambiare l'autorizzazione di "myscript" in 755 e il proprietario di root.
SuB

Come si crea una voce di menu?
Da fare il

9

Puoi provare con Debreate , uno strumento GUI per la creazione di pacchetti.


Debcreate è bello. Mi piace finora, ho appena iniziato a usarlo oggi per costruire dal codice sorgente di Python.
answerSeeker


2

Prova pkgme . Dovrebbe funzionare solo.

Installa tramite:

sudo apt install pkgme

Esegui tramite:

pkgme
debuild

(Potrebbe essere necessario eseguire un nuovo sviluppatore gpg --gen-key, consultare Sviluppo di chiavi per farlo correttamente)



0

Puoi provare a usare Debreate

Questa è un'interfaccia Gui per creare pacchetti e cose che puoi usare il PPA anche se non vuoi scaricarlo dal sito web che è elencato sopra.

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

Ive ha condannato il ppa in modo che funzioni come un'unica riga di codice! Grazie per la fantastica domanda e assicurati di continuare a inserire quelle righe di codice nel terminale!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.