Question Comment créer un paquet deb pour un script python unique?


J'ai un script python unique que je veux distribuer en 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 binaires mais je n'ai pas pu créer un paquet deb car il échoue.

Quelqu'un peut-il me donner une instruction étape par étape sur ce que je devrais faire? Pour autant que je sache, ce script dépend de python-appindicator.

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


77
2017-12-27 12:12


origine


Alors que les instructions d'emballage Debian et Ubuntu ne sont pas débutant amical (croyez-moi, je sais), de nombreuses applications d'interface graphique qui créent des debs ne font que générer un tas d'erreurs lorsque vous exécutez un vérificateur de paquet final, tel que lintian. Si vous êtes sérieux en ce qui concerne l'emballage, le meilleur moyen d'y parvenir est de le maîtriser et de suivre les instructions :) - Thomas Boxley
Je ne connais pas le packaging, mais les fonctionnalités que vous essayez d'ajouter sont intégrées à Unity. - It's Willem


Réponses:


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

Voici la disposition de base de votre paquet source:

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

Courir dch --create dans le répertoire pour créer un format correctement formaté debian/changelog entrée.

debian / copyright devrait ressembler à:

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 être juste: 7

debian / rules:

#!/usr/bin/make -f

%:
    dh $@ --with python2

Notez qu'il doit y avoir un "onglet" avant  dh $@ --with python2, pas des 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 le manque d'orig.tar.gz, mais à moins que vous ne vouliez créer un projet en amont qui crée des versions pour tarball, vous voudrez probablement l'ignorer pour l'instant.


83
2017-12-30 19:25



En tant que packager (et backporter), je compresse assez souvent les scripts python. Je peux affirmer que cette réponse est l'explication la plus complète de ce qu'il faut faire pour créer un paquet pour un seul script python. - Thomas Ward♦
Pourriez-vous également le mettre à jour pour Python 3? Je suppose que nous devons faire des changements dans debian/rules et debian/control, mais je n'en suis pas certain. - Aditya
@Aditya, peut-être une nouvelle question est en ordre pour Python3? La réponse ne serait pas très différente, mais cette réponse vise à être l'exemple le plus simple et le moins strict de la manière de compiler un script Python. Je ne suis pas sûr de vouloir l'encombrer avec plusieurs implémentations. - andrewsomething
@andrewsomething: Alors vous pourriez être intéressé par celui-là ce qui m'a incité à laisser ce commentaire ... Un peu de retouche est nécessaire sur celui-là, je tenterais ma chance ... - Aditya
Qu'en est-il des bibliothèques? Si le script python importe des bibliothèques, cela ne fonctionnera pas - D.Snap


  1. créer 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".
  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-y votre fichier pythonscript.

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

Remarque: veuillez remplir le fichier de contrôle correctement. N'utilisez pas d'apostrophes. C'est seulement pour indiquer les noms.


18
2017-12-30 16:16



Travaillé si bien. :-) Merci! - Ionică Bizău
Fonctionne très bien! La réponse acceptée est complexe. - SuB
N'oubliez pas de changer la permission de "myscript" à 755 et le propriétaire à root. - SuB
Comment créer une entrée de menu? - To Do


Vous pourriez essayer avec Débrider, un outil graphique pour créer des paquets.


9
2017-12-30 13:55



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


Je voudrais vérifier rapidement, idéal pour créer des applications rapides et générer des debs google il ou vous pouvez trouver des tutoriels ici http://developer.ubuntu.com/


3
2017-12-30 23:16



Oui, j'aime aussi ajouter. wiki.ubuntu.com/Quickly, si vous préférez les vidéos comme moi, Youtube est une excellente ressource - Jiew Meng
Ne peut pas simplement transformer un package en package .deb - Archisman Panigrahi


Essayer pkgme. C'est censé fonctionner.

Installer via:

sudo apt install pkgme

Exécuter via:

pkgme
debuild

(Un nouveau développeur devra peut-être exécuter gpg --gen-key, voir Clé de développement pour le faire correctement)


2
2017-12-30 20:16





En attendant, il y a un article décrivant le dilemme trouvé sur https://www.nylas.com/blog/packaging-deploying-python/. Il indique principalement que dh-virtualenv fonctionne avec make-deb pour déployer facilement du code Python en utilisant simplement un fichier setup.py. Un petit manuel se trouve sur https://gist.github.com/JeOam/bc6cbf38f04d6f9dbf81


1
2017-11-18 19:46





Vous pourriez essayer d'utiliser Débrider

Ceci est une interface Gui pour créer des paquets et des choses que vous pouvez utiliser le PPA également si vous ne voulez pas le télécharger à partir du site Web mentionné ci-dessus.

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

J'ai condamné le ppa pour qu'il fonctionne comme une seule ligne de code! Merci pour la question géniale et assurez-vous de continuer à insérer ces lignes de code dans le terminal!


0
2017-07-08 02:36