Vraag Hoe maak ik een deb-pakket voor een enkel Python-script?


Ik heb één python-script dat ik wil distribueren als een deb-pakket. Het is een indicator welke de lokale datum in het Unity-paneel toont. Ik volgde maak een .deb-pakket van scripts of binaries maar ik kon geen deb-pakket maken omdat het mislukt.

Kan iemand me een stap-voor-stap instructie geven over wat ik zou moeten doen? Voor zover ik weet, is dit script afhankelijk van python-appindicator.

NOTITIE:
Ik wil geen links naar de verpakkingsinstructies van Debian / Ubuntu. Ik heb de meesten van hen gezien. Ik vind ze niet beginnersvriendelijk.


77
2017-12-27 12:12


oorsprong


Terwijl de verpakkingsinstructies van Debian en Ubuntu zijn niet beginnersvriendelijk (vertrouw me, ik weet het), veel GUI-toepassingen die debs voor je maken, verschijnen gewoon met een hoop fouten wanneer je een laatste pakketchecker uitvoert, zoals lintian. Als je serieus bezig bent met het verpakken, dan is het moeilijker om het uit te lijnen en de instructies te doorlopen :) - Thomas Boxley
Ik weet niet wat de verpakking is, maar de functionaliteit die u probeert toe te voegen, is ingebouwd in Unity. - It's Willem


antwoorden:


Wat volgt is een eenvoudig voorbeeld van hoe een bronpakket voor een python-script eruit zou kunnen zien. Hoewel de meeste handleidingen over verpakkingen een beetje ingewikkeld zijn, kunnen ze echt helpen als je een probleem hebt. Dat gezegd hebbende, heb ik voor het eerst de basis van Debian-verpakking geleerd door simpelweg naar Debian-pakketten te kijken. apt-get source iets vergelijkbaars en leren door het voorbeeld.

Dit is de indeling van je basisbronpakket:

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

Rennen dch --create in de map om een ​​juiste opmaak te maken debian/changelog binnenkomst.

debian / copyright zou moeten lijken op:

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 kan gewoon zijn: 7

debian / rules:

#!/usr/bin/make -f

%:
    dh $@ --with python2

Merk op dat er eerder een "tab" moet zijn  dh $@ --with python2, geen spaties.

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/

Dit bestand geeft aan welk bestand in welke map wordt geïnstalleerd.

Bouw het nu met debuild --no-tgz-check

Hiermee wordt een functioneel deb-pakket gemaakt. Lintian zal een paar waarschuwingen geven over het ontbreken van een orig.tar.gz, maar tenzij je van plan bent om een ​​goed upstream-project te maken dat tarball-releases maakt, wil je dat waarschijnlijk voorlopig negeren.


83
2017-12-30 19:25



Als een packager (en een backporter), pak ik vrij vaak pythonscripts in. Ik kan gerust zeggen dat dit antwoord hier de meest complete uitleg is van wat te doen om een ​​pakket te maken voor een enkel pythonscript. - Thomas Ward♦
Kun je het ook updaten voor Python 3? Ik denk dat we er veranderingen in moeten aanbrengen debian/rules en debian/control, maar daar ben ik niet zeker van. - Aditya
@Aditya, misschien is er een nieuwe vraag voor Python3? Het antwoord zou niet heel anders zijn, maar dit antwoord is bedoeld als het eenvoudigste / absolute minimale voorbeeld van hoe een Python-script te verpakken. Ik weet niet zeker of ik het wil oplossen met meerdere implementaties. - andrewsomething
@andrewsomething: Dan ben je misschien geïnteresseerd in deze die me ertoe aanzetten om die opmerking achter te laten ... Er is een beetje bewerking nodig, ik zou het proberen ... - Aditya
Hoe zit het met de bibliotheken? Als het Python-script bibliotheken importeert, werkt het niet - D.Snap


  1. maak een map aan met elke naam in je huis, bijvoorbeeld: mypyscript
  2. Open de map en maak twee mappen met de namen 'DEBIAN' en 'usr'
  3. Open de map DEBISCH. Maak een tekstbestand (zonder extensie) met de naam 'controle' daar.
  4. Open 'controle' en typ als volgt en sla het op DEBIAN op

    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. Terug naar de map met de naam mypyscript. Open 'usr'. Maak een map met de naam 'bin'. Open 'bin' en plak daar je pythonscript-bestand.

  6. U kunt ook een menu-item maken. Maar dat is niet essentieel.
  7. Terug naar de basismap waar de map 'mypyscript' ligt of de bestandsbrowser sluit.
  8. Open terminal. Zorg ervoor dat de terminal zich in de basismap bevindt. type dpkg -b mypyscript . Druk vervolgens op enter. Binnen enkele seconden is je deb-pakket klaar

Notitie: vul het 'besturingsbestand' correct in. Gebruik geen apostrofs. Het is alleen voor het aanduiden van de namen.


18
2017-12-30 16:16



Werkte zo goed. :-) Bedankt! - Ionică Bizău
Werkt goed! Het geaccepteerde antwoord is complex. - SuB
Vergeet niet om de toestemming van 'myscript' in 755 en de eigenaar ervan in root te veranderen. - SuB
Hoe maak ik een menu-item aan? - To Do


Je zou het kunnen proberen Debreate, een GUI-tool voor het maken van pakketten.


9
2017-12-30 13:55



Debcreate is cool. Ik vind het tot nu toe leuk, ben het net vandaag gaan gebruiken om te bouwen van de python-broncode. - answerSeeker


Ik zou snel kijken, geweldig voor het maken van snelle apps en het genereren van debielen op Google of je kunt hier tutorials vinden http://developer.ubuntu.com/


3
2017-12-30 23:16



Ja, ik wil ook toevoegen. wiki.ubuntu.com/Quickly, als je video's zoals ik leuk vindt, youtube is een geweldige bron - Jiew Meng
Snel kan een pakket niet eenvoudig in .deb-pakket worden omgezet - Archisman Panigrahi


Proberen pkgme. Het hoort gewoon te werken.

Installeren via:

sudo apt install pkgme

Ren via:

pkgme
debuild

(Mogelijk moet een nieuwe ontwikkelaar worden uitgevoerd gpg --gen-key, zien Ontwikkeling Keysigning om dit correct te doen)


2
2017-12-30 20:16





Ondertussen is er een artikel waarin het dilemma wordt beschreven https://www.nylas.com/blog/packaging-deploying-python/. Het geeft vooral aan dat er dh-virtualenv samenwerkt met make-deb om eenvoudig Python-code te implementeren, alleen met behulp van een setup.py-bestand. Een korte handleiding is te vinden op https://gist.github.com/JeOam/bc6cbf38f04d6f9dbf81


1
2017-11-18 19:46





Je zou kunnen proberen te gebruiken Debreate

Dit is een Gui-interface om pakketten te maken en zo kunt u de PPA ook gebruiken als u deze niet wilt downloaden van de website die hierboven wordt vermeld.

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

Ive condenced ppa zodat het als één enkele lijn van code loopt! Bedankt voor de geweldige vraag en zorg ervoor dat je die coderegels in de terminal blijft houden!


0
2017-07-08 02:36