Il y a une tonne d'informations sur la façon de le faire, mais puisque "il y a plus d'une façon d'écorcher un chat" Je n'ai pas réussi à comprendre le processus, et tous les tutoriels/manuels qui couvrent une partie du processus semblent faire certaines hypothèses qui sont différentes de celles des autres tutoriels.
Jusqu'à présent, voici ce que je pense avoir compris.
- Mon objectif final devrait être de créer un paquet .deb "binaire". Ce paquet sera indépendant de la plate-forme (32/64 bits) comme tous les programmes Python.
- Pour créer un paquet "binaire", je dois d'abord créer un paquet source.
- Pour créer le paquet source, je peux utiliser soit
CDBS
oudebhelper
. Debhelper est le moyen recommandé pour les débutants. - L'essentiel de la création d'un paquet source consiste à remplir le champ
DEBIAN
dans le répertoire source avec un certain nombre de fichiers précisant où les fichiers doivent être copiés, à quel droit d'auteur et à quel régime de licence ils sont soumis, quelles dépendances ils ont, etc... - L'étape 4 peut être largement automatisée.
dh_make
commande si Le code source de Python est également fourni avec un programme "distutils".setup.py
script.
Maintenant mes questions :
- Ma compréhension du processus est-elle correcte ? Y a-t-il quelque chose qui m'échappe ou que j'ai mal compris ?
- L'étape 5 est vraiment la plus confuse pour moi : plus précisément les deux points qui restent les plus obscurs pour moi sont :
-
Comment rédiger un
setup.py
script qui installe un programme autonome ? EDIT : Par programme autonome J'entends par là un programme destiné à être utilisé par un utilisateur d'ordinateur de bureau (par opposition à un utilisateur d'ordinateur de bureau). module que je comprends comme une collection de fonctionnalités à utiliser par d'autres logiciels après avoir été importées). Dans mon cas spécifique, j'aurais en fait besoin de deux Ces "programmes" : le logiciel principal et un utilitaire séparé (en fait un deuxième "programme" qui devrait se trouver dans le même paquet que l'autre). - Quelles sont les spécificités d'un tel script pour les paquets DEB ? La documentation officielle ne semble traiter que de RPM et de Windows...
-
Comment rédiger un
BTW : Ce sont les meilleures sources d'information que j'ai pu trouver moi-même jusqu'à présent. Si vous avez quelque chose de mieux que ça, merci de le partager ! :)
- Guide d'empaquetage Python d'Ubuntu
- Création d'un paquet .deb à partir d'un fichier python setup.py (il montre les étapes, mais ça ne expliquer suffisamment pour que je puisse les suivre)
- Vidéo ShowMeDo sur la "création d'un paquet .deb à partir d'un programme python". python" (il ne semble pas être à jour et - si j'ai bien compris - produira des paquets pour un usage personnel, sans dépendances et sans changelog signé et autres données clés qui le rendront incompatible avec la charte Debian).
2 votes
Avant de pouvoir préparer un programme python pour un conditionnement binaire, vous devez le préparer pour une distribution générale. C'est la
setup.py
bit. Ceci est comparable à laautotools
étape que de nombreux projets GNU C/C++ utilisent, mais qui est spécifique à python. C'est plus facile qu'il n'y paraît, lisez docs.python.org/distutils/index.html1 votes
@TokenMacGuy - Merci, j'ai déjà compris l'idée générale (ma formulation est peut-être incorrecte, mais c'est la partie 5 du processus que je décris). Ce qui est déroutant pour moi, c'est que dans la documentation officielle je n'ai pas pu trouver un mode d'emploi explicite sur la façon de distribuer les programmes autonomes plutôt que des modules. Peut-être s'agit-il simplement d'un problème de terminologie et que ce que j'appelle des "programmes autonomes" sont un type spécifique de modules ?
1 votes
@mac : Vous pouvez installer des scripts, c'est-à-dire des fichiers exécutables pour lancer votre programme. Voir docs.python.org/distutils/setupscript.html#installation-scripts
0 votes
@Thomas - J'ai lu cela avant, mais je suis toujours confus : mon programme a une
main.py
(je suppose qu'on pourrait l'appeler "un script") ET une série de modules ET quelques autres fichiers YAML et SVG... J'ai encore du mal à trouver une documentation claire sur la façon de réaliser cela. Le meilleur que j'ai pu trouver jusqu'à présent est le tutoriel sur les distutils que j'étudie toujours...0 votes
Par programme autonome, voulez-vous dire quelque chose qui n'aura pas python comme dépendance ? Les versions récentes de Debian et Ubuntu sont toutes deux livrées avec au moins python 2.6, donc si votre code est compatible avec la version 2.6, un "programme autonome" peut en fait n'être qu'un cas particulier de module, comme vous l'avez suggéré.
0 votes
@Wilduck - Merci d'avoir repéré l'ambiguïté de ma terminologie, j'ai essayé de la clarifier en modifiant la question originale ci-dessus.
0 votes
Faites un petit python/shell script qui lance votre programme. Cela pourrait être aussi simple que
python /path/to/program.py
. Rendez-le exécutable et placez-le quelque part comme/usr/local/bin
. Cela devrait suffire pour obtenir le comportement que vous souhaitez.0 votes
@mac : Oui, tout cela devrait être possible. Votre main.py est un script, vos autres fichiers Python sont probablement un paquet (ou plusieurs paquets). Les fichiers YAML et SVG sont soit des données de package, soit des fichiers de données.
0 votes
Je pense que ce que vous voulez faire est quelque chose de commun dans Debian mais qui n'est pas supporté nativement par distutils : Avoir une application composée de modules et d'un runner script, sans que les modules ne soient installés et rendus publics dans les sites-packages. Gajim par exemple fait cela en installant les modules dans /usr/share/gajim et en modifiant sys.path dans le runner script.
0 votes
Il semble que la référence Ubuntu a a été déplacé et est maintenant "déprécié". . Mais je n'ai pas trouvé d'explication quant à la raison pour laquelle il est considéré comme obsolète.
0 votes
Duplicata possible de Comment faire un empaquetage Debian d'un paquet Python ?
0 votes
Les 3 liens du bas sont cassés.