Journal : py2deb : fabriquer des debs facilement ...
Posté par manatlan (Jabber id, page perso, ) le 03 janvier 2008
Il y a t il des spécialistes "debian / deb" dans la salle ? (je pense que oui, sinon je ne posterai pas ici)
Je ne suis pas un spécialiste deb, je tourne sous ubuntu, mais je galère toujours un peu pour livrer mes créations. J'ai donc créer un module python permettant d'automatiser la tâche au maximum.
Le résultat est plutôt probant : ça génère des debs, qui semblent bien fait, et qui en plus : s'installent ;-)
En fait, je me suis vachement inspiré de ce tutorial :
http://wiki.showmedo.com/index.php?title=LinuxJensMakingDeb
En gros, pydeb, consitue les fichiers debian/* automatiquement, et utilise les outils de dpkg-dev, à savoir dpkg-buildpackage en fakeroot pour consituer un paquet deb (et accessoirement un rpm (aliené), ainsi qu'un paquet "source debian").
Voilà, pour moi, ça me semble ok, il me reste qques détails à faire (signature des paquets, description de multiples auteurs ...).
Mais j'aurai besoin de feedback, d'avis, sur la façon de consituer ce deb ... Si des spécialistes voulaient jeter un coup d'oeuil ...
J'ai vite fait une page à 2 sous ici :
http://manatlan.infogami.com/py2deb
et py2deb est livré en deb (fabriqué par lui même ;-)
http://manatlan.free.fr/setup/python-py2deb_0.3_all.deb
Je ne suis pas un spécialiste deb, je tourne sous ubuntu, mais je galère toujours un peu pour livrer mes créations. J'ai donc créer un module python permettant d'automatiser la tâche au maximum.
Le résultat est plutôt probant : ça génère des debs, qui semblent bien fait, et qui en plus : s'installent ;-)
En fait, je me suis vachement inspiré de ce tutorial :
http://wiki.showmedo.com/index.php?title=LinuxJensMakingDeb
En gros, pydeb, consitue les fichiers debian/* automatiquement, et utilise les outils de dpkg-dev, à savoir dpkg-buildpackage en fakeroot pour consituer un paquet deb (et accessoirement un rpm (aliené), ainsi qu'un paquet "source debian").
Voilà, pour moi, ça me semble ok, il me reste qques détails à faire (signature des paquets, description de multiples auteurs ...).
Mais j'aurai besoin de feedback, d'avis, sur la façon de consituer ce deb ... Si des spécialistes voulaient jeter un coup d'oeuil ...
J'ai vite fait une page à 2 sous ici :
http://manatlan.infogami.com/py2deb
et py2deb est livré en deb (fabriqué par lui même ;-)
http://manatlan.free.fr/setup/python-py2deb_0.3_all.deb
> Lire le journal (21 commentaires, moyenne: 1,3).
Vous avez demandé le commentaire #893842.



setuptools ?
Heu, vu ce que fait setuptools en standard, il ne doit pas manquer grand'chose pour lui faire créer des deb automatiquement (il y a déjà une commande bdist_rpm, mais pas bdist_deb).
En cherchant un peu sur Google, j'ai trouvé ça : http://easy-deb.sourceforge.net/ et ça : http://stdeb.python-hosting.com/
(je ne peux pas tester, je suis sous Mandriva :-))
[^]Re: setuptools ?
Parlons en ...
Setuptools/distutils : c'est la méthode pythonesque de packager son programme. Depuis peu, il y a même les EGG (j'ai même fait un tuto là dessus). Et c'est, je pense, que c'est vers là qu'il faut aller !
Mais je crois que la distribution de package python est en pleine mutation, car aux EGGs, se rajoute encore les 2 systèmes concurrents entre eux : pycentral et python-support (exclusivement debian, non ?)
Malheureusement, c'est assez indigeste, et demande également beaucoup de temps (je trouve), et les tutos clairs ne sont pas légions. Pour ma part, pas plus tard qu'il y a une semaine, j'ai tenté de passer par setuptools pour générer un sdist (source distrib), ou un bdist_rpm (en vue de l'aliener en deb).
J'ai bien passé 8h dessus, sans rien en sortir. Impossible de packager les "data_files" (installation de fichier data dans le FS, genre /usr/share/). ça n'a franchement pas l'air d'être possible, et on est apparemment obligé de passer par "package_data" (et donc de mettre les data dans la sous arbo de l'application).
(pour comparer, avec le temsps de dev de py2deb : au bout de 2h j'avais des packages deb générés, avec des fichiers que je place où je veux)
Je connaissais les 2 liens que tu donnes. easy-deb est certainement la meilleure solution (egg compliant), mais ce n'est plus maintenu, et c'est bien vieux (2005).
L'autre, j'avais tenter stdeb, sans arriver non plus à mes fins, mais c'était avec la version 0.1 (j'ai vu que maintenant il y a de la 0.2 depuis 2007, faudra que je retente quand même)
Il en existe d'autres, avec des front-end gui (ce que je comptais faire pour py2deb, mais j'ai pas l'impression que ça soit necessaire dans un premier temps)
Bref, je ne desespere pas comprendre un jour les distutils, et un jour générer des deb via setup.py ... Mais en attendant, la méthode que je propose est bien plus rapide, plus simple, pour les gars qui n'ont pas le temps de plonger dans le packaging (et oui, on trouve de moins en moins de gars qui se propose de packager ton appli, du coup, le dev est obligé de le faire ;-)
Bon, dans le monde ubu/debian, launchpad se propose de te packager tes applis en deb (multi architecture), tout en hostant un vrai repository deb. Il suffit juste de fournir un paquet source, et launchpad s'occupe du reste. (les fameux PPA de launchpad). Ce qui simplifie encore plus le problème de l'empaquetage (je n'ai pas encore essayer, mais c'est au programme)
Maintenant, si qqu'un a un (ou des bons) tutos setuptools/distutils, je suis assez prenneur.
manatlan.com
[^]Re: setuptools ?
autre chose importante ... que j'ai oublié
Je crois qu'il est impossible de dire à setuptools, qu'on a besoin de programmes externes (non python) ... genre forcer l'installation "dpkg-dev" par exemple, quand ton prog a besoin de ces outils
manatlan.com
[^]Re: setuptools ?
je crois que tu peux aussi rajouter scons, a priori numpy et scipy vont passer a terme pour remplacer setuptools.
Sous python c'est un peu le merdier je dirais et je n'ai pas l'impression que les eeg regles beaucoup de choses en realite, enfin on verra. En attendant j'aimerai bien qu'un outil tel que py2exe ou py2app pour linux qui fonctionne...
[^]Re: setuptools ?
bah, py2deb permet facilement de déployer une appli python sur un poste debian ... au même titre que py2app pour mac, ou py2exe pour win ...
Cependant, si tu cherches un bon freezer, qui fonctionne très bien sous linux (et win mac), il y a l'excellentissime pyinstaller
manatlan.com
[^]Re: setuptools ?
Mais je crois que la distribution de package python est en pleine mutation, car aux EGGs, se rajoute encore les 2 systèmes concurrents entre eux : pycentral et python-support (exclusivement debian, non ?)
Ce n'est pas vraiment "concurrent". Chaque distribution a ses outils dédiés pour gérer les packages. Si ta distrib fournit le paquet que tu veux, et que tu n'as pas besoin de la toute dernière version, alors il est recommandé d'utiliser le paquet fourni par la distrib.
L'intérêt de setuptools c'est :
1. de donner accès à des tas de paquets (bibliothèques, programmes) qui ne sont pas intégrés par ta distrib. Tu tapes "easy_install nom_du_paquet" et c'est fait.
2. de te permettre d'installer facilement des versions "bleeding edge" voire des versions de développement si tu en as envie.
C'est un peu comme recompiler un programme depuis ses sources (./configure etc.), sauf que setuptools facilite largement la tâche en l'automatisant, ainsi que la gestion des dépendances vis-à-vis d'autres paquets setuptools.
Pour un développeur l'intérêt de setuptools est que c'est une méthode de déploiement qui marche sur toutes les plateformes, y compris sous Mac et Windows...
[^]buildout
Il existe aussi un bon moyen de distribuer du python, c'est de faire un buildout. J'ai traduit il y a peu un tutoriel sur le sujet :
http://www.afpy.org/Members/ccomb/tutoriel-buildout
(ou le même en statique http://ccomb.free.fr/buildout/tutorial.fr.html )