Comment créer un paquet deb pour un seul script python?


78

J'ai un seul script python que je veux distribuer en tant que paquet deb. C'est un indicateur qui affiche la date locale dans le panneau Unity. J'ai suivi créer un package .deb à partir de scripts ou de fichiers binaires, mais je ne pouvais pas créer un package deb car il échouait.

Est-ce que quelqu'un peut me donner des instructions étape par étape sur ce que je devrais faire? Pour autant que je sache, ce script dépend de python-appindicator.

NOTE:
Je ne veux pas de liens vers les instructions de packaging Debian / Ubuntu. J'ai vu la plupart d'entre eux. Je ne les trouve pas amical pour les débutants.


6
Tandis que les instructions sur l’emballage de Debian et Ubuntu ne sont pas conviviales pour les débutants (croyez-moi, je le sais), de nombreuses applications à interface graphique qui créent des debs ne font que générer de nombreuses erreurs lorsque vous exécutez un vérificateur de paquet final, tel que Lintian. Si vous êtes sérieux dans le domaine de l'emballage, le mieux est de suivre et de suivre les instructions à la lettre :)
Thomas Boxley Le

Je ne connais pas l’emballage, mais les fonctionnalités que vous essayez d’ajouter sont intégrées à Unity.
C'est Willem

Réponses:


84

Ce qui suit est un exemple de base de l'apparence possible d'un paquet source pour un script python. Bien que la plupart des didacticiels sur l’emballage soient un peu complexes, ils peuvent vraiment vous aider si vous rencontrez un problème. Cela dit, j’ai d’abord appris les bases du packaging Debian en regardant simplement les paquets Debian. apt-get sourcequelque chose de similaire et apprendre par l'exemple.

Voici la présentation de votre paquet source de base:

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

Exécuter dch --createdans le répertoire pour créer une debian/changelogentrée correctement formatée .

debian / copyright devrait ressembler à ceci:

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 peut simplement être:7

debian / rules :

#!/usr/bin/make -f

%:
    dh $@ --with python2

Notez qu'il doit y avoir "tab" avant dh $@ --with python2, pas d'espaces.

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/

Ce fichier indique quel fichier sera installé dans quel dossier.

Maintenant, construis-le avec debuild --no-tgz-check

Cela créera un paquet deb fonctionnel. Lintian va lancer quelques avertissements concernant l’absence d’un fichier orig.tar.gz, mais à moins que vous ne envisagiez de créer un projet en amont proprement dit contenant des versions de tarball, vous voudrez probablement l’ignorer pour le moment.


12
En tant que conditionneur (et portier), je compresse assez souvent les scripts python. Je peux affirmer sans crainte que cette réponse constitue l'explication la plus complète de la procédure à suivre pour créer un package pour un seul script Python.
Thomas Ward

2
Pourriez-vous également le mettre à jour pour Python 3? Je suppose que nous devons apporter des modifications debian/ruleset debian/control, mais je ne suis pas sûr de cela.
Aditya

1
@Aditya, peut-être une nouvelle question pour Python3? La réponse ne serait pas très différente, mais cette réponse vise à être l'exemple le plus simple / minimaliste de la mise en package d'un script Python. Pas sûr que je veuille l'encombrer de multiples implémentations.
andrewsomething

@ andrewsomething: Ensuite, vous pourriez être intéressé par celui-ci qui m'a incité à laisser ce commentaire ... Un peu de retouche est nécessaire sur celui-là, je m'y essaierais ...
Aditya le

1
Qu'en est-il des bibliothèques? Si le script python importe des bibliothèques, cela ne fonctionnera pas
D.Snap

18
  1. créez un dossier avec n'importe quel nom sur votre maison, par exemple: mypyscript
  2. Ouvrez le dossier et créez deux dossiers avec les noms 'DEBIAN' et 'usr'
  3. Ouvrez le dossier DEBIAN. Créez un fichier texte (sans extension) avec le nom 'control' ici.
  4. Ouvrez 'control' et tapez comme suit et enregistrez-le sur 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. Retour au dossier nommé mypyscript. Ouvrez 'usr'. Créez un dossier nommé 'bin'. Ouvrez 'bin' et collez votre fichier pythonscript à cet endroit.

  6. Vous pouvez également créer une entrée de menu. Mais ce n'est pas essentiel.
  7. Retournez au dossier de départ où se trouve le dossier 'mypyscript' ou fermez le navigateur de fichiers.
  8. Terminal ouvert. Assurez-vous que le terminal est dans le dossier de départ. tapez dpkg -b mypyscript.Puis appuyez sur Entrée. En quelques secondes votre paquet deb est prêt

remarque: veuillez remplir correctement le fichier 'control'. N'utilisez pas d'apostrophes. C'est seulement pour indiquer les noms.


1
Fonctionne très bien! La réponse acceptée est complexe.
SuB

N'oubliez pas de changer l'autorisation de 'myscript' en 755 et son propriétaire en root.
SuB

Comment créer une entrée de menu?
À faire

9

Vous pouvez essayer avec Debreate , un outil graphique permettant de créer des packages.


Debcreate est cool. Je l'aime jusqu'à présent, je viens juste de commencer à l'utiliser aujourd'hui pour compiler à partir du code source Python.
answerSeeker


2

Essayez pkgme . C'est censé fonctionner.

Installer via:

sudo apt install pkgme

Courez via:

pkgme
debuild

(Un nouveau développeur doit peut-être s'exécuter gpg --gen-key, voir Développement des clés pour le faire correctement)



0

Vous pouvez essayer d'utiliser Debreate

Ceci est une interface graphique permettant de créer des packages et des outils que vous pouvez utiliser avec PPA également si vous ne souhaitez pas le télécharger à partir du site Web indiqué ci-dessus.

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

J'ai condamné le ppa pour qu'il ne soit composé que d'une seule ligne de code! Merci pour cette question géniale et assurez-vous de continuer à insérer ces lignes de code dans le terminal!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.