web-dev-qa-db-fra.com

Comment créer un paquet deb pour mon application pygtk?

J'écris une application pygtk et je veux en faire un paquet deb.

$ tree WebPad/
WebPad/
|-- jspad
|   |-- __init__.py
|   |-- main.py
|   |-- t.py
|-- pixmaps
|   |-- c.png
|   |-- run.png
|   `-- webpad.png
|-- README
|-- run.py
`-- templates
    `-- webpad.tpl

3 directories, 19 files

Dois-je changer la disposition du répertoire?

4
znetor

Tout d'abord, vous devez créer un setup.py fichier utilisant distutils dans le répertoire racine de votre projet. Il doit contenir un texte similaire au suivant:

#!/usr/bin/env python

from distutils.core import setup
from glob import glob

setup(name = "WebPad",
    version="0.1",
    author="znetor",
    packages=["jspad"],
    data_files=[('share/webpad/pixmaps', glob("pixmaps/*"), ('share/webpad/templates', ['templates/webpad.tpl'])],
    scripts=['run.py'])

Et vous devez également créer un fichier MANIFEST.in:

recursive-include pixmaps *
recursive-include templates *

Une fois que vous avez fait cela, vous pouvez exécuter diverses commandes sur le terminal pour distribuer votre projet:

chmod +x setup.py
Sudo ./setup.py install # installs your project to /usr/local
./setup.py sdist # creates a source distribution in dist/

La dernière commande est celle qui nous intéresse. Une fois que vous avez une distribution source avec un script setup.py distutils, vous pouvez ensuite suivre le Guide de packaging Python pour Ubunt . Fondamentalement, cela implique de créer un debian/ répertoire à la racine de votre projet avec divers bits d'information et exécutant debuild.

J'ai écrit n tutoriel sur la façon de le faire il y a quelque temps, certaines d'entre elles ne sont pas les meilleures pratiques, mais cela vous aidera à comprendre quelques concepts.

5
Flimm

J'ai toujours aimé les méthodes "apprendre par l'exemple", alors voici: http://packages.ubuntu.com/natty/all/software-center/download

  1. Téléchargez le package depuis l'un des miroirs.
  2. Ouvrez-le avec le gestionnaire d'archives.
  3. Vous verrez quelques répertoires. Ils sont structurés comme vous le faites à la racine absolue du système de fichiers.

Conclusion:

Le coureur devra aller dans le répertoire/usr/bin /. Renommez-le en "web-pad" ou "webpad" et assurez-vous qu'il commence par "#!/Usr/bin/python". De cette façon, vous pouvez facilement le lancer à partir de la ligne de commande, sans avoir à écrire "python web-pad". Au lieu de cela, "web-pad" sera suffisant.

Les autres fichiers devront aller dans/usr/share/web-pad/ou/usr/share/webpad/Pour que le lanceur fonctionne, vous devrez créer un/usr/share/pyshared-data/web-pad ou/usr/share/pyshared-data/webpad file. Je pense que cela ajoute vos fichiers source au chemin d'inclusion, afin que le lanceur puisse les lancer. Encore une fois, à titre d'exemple, utilisez le fichier/usr/share/pyshared-data/software-center à l'intérieur du package.

Vous devez également consulter d'autres fichiers du package du centre logiciel. Ils peuvent fournir des informations très utiles.

Et oui, regardez les fichiers dans le répertoire DEBIAN. Surtout le fichier de contrôle, car c'est là que vous définissez les dépendances, la description, la version, les conflits, etc ...

Le fichier des déclencheurs vous permet de définir des déclencheurs pour votre application. (lance probablement l'application lorsque quelque chose est fait, mais je ne suis pas sûr. Vous pouvez toujours essayer ...) Le script prerm s'exécute avant la suppression des fichiers. (suppression du package) Le script preinst s'exécute avant que les fichiers ne soient copiés à leur place. (installation du package) Le script postrm s'exécute après la suppression des fichiers. (suppression du package) Le script postinst s'exécute après la copie des fichiers à leur place. (installation du paquet) Le fichier md5sums contient les sommes de contrôle md5 des fichiers à l'intérieur. Le fichier conflies contient probablement les fichiers de configuration, bien que je n'en sois pas sûr.

Comme l'a dit @Flimm, File roller a une fonctionnalité intégrée d'ouverture des archives deb de manière plus conviviale - cela inclut le décompression de control.tar.gz dans le répertoire DEBIAN, data.tar.gz dans la racine (il contient vos fichiers) et cache le fichier debian-binary. L'ouverture de fichiers deb dans Ark ne fait pas cela.

L'UTILISATION DU ROULEAU DE FICHIERS POUR FAIRE DES PAQUETS DEB NE FONCTIONNERA PAS! LE FILE ROLLER PREND EN CHARGE UNIQUEMENT LES LECTURES DE LECTURE!

Vous pouvez essayer cette application, je l'ai regardée et elle semble assez bonne: http://debcreator.cmsoft.net/#download

2
nickguletskii

Vous pouvez également vouloir porter votre application sur rapidement , puis utiliser le quickly package commande pour faire l'emballage automatiquement pour vous. Il y a aussi plus d'informations sur les commandes rapides sur le site Ubuntu App Developer .

2
David Planella