Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Création de paquet pour programme python

16 réponses
Avatar
Merwin
Bonjour,

J'ai développé plusieurs programme en python:

- Une bibliothèque
- Un programme complet (plusieurs fichiers, des icones, etc)
- Deux petits scripts d'une seule ligne

Je souhaite donc créer 4 paquets debian pour pouvoir installer
facilement ces scripts.

Je n'ai absolument aucune idée de la façon pour faire ceci. J'ai bien lu
des infos sur le net, donc dans mon cas ce sont des paquets binaires
qu'il me faut (enfin je crois).

Mais j'ai quelques soucis:

- Comment savoir où installer mes scripts? Cela dépend de la version de
Python. J'ai trouvé un truc qui s'appelle python-support, mais je n'ai
pas trop compris comment m'en servir.

- Comment vérifier/mettre les droits d'exécution sur les scripts ?

- Comment créer des liens symboliques dans /usr/bin ?

Merci d'avance,

--
Thibaut

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/1273475535.2130.5.camel@dev-station

6 réponses

1 2
Avatar
Vincent Danjean
On 10/05/2010 13:11, Christophe wrote:
Le lundi 10 mai 2010 à 12:43 +0200, Vincent Danjean a écrit :
Le plus propre est quand même de mettre ces liens directement dans le
paquet s'ils sont connus lors de la création du paquet.



Bien vu, je raisonnais comme s'il s'agissait de liens physiques. Je
n'avais jamais essayé de déplacer des liens symboliques d'ailleurs.



dh_link permet de créer les liens conformément à la 'réglementation' ;-)

A+
Vincent

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Skami 18
Salut,

En fait, pour faire un paquet debian (*.deb), c'est assez simple et
plutôt cool:

Basiquemment, un paquet est une archive (comme tes *.zip) qui contient
tout les fichier qui composent ton programme, plus des information
comme: de quoi à besoin ton programme pour fonctionner (dépendances), la
liste des fichiers de configuration (utile pour le dpkg-reconfigure),
des déclenchement (example: mettre à jours le système de fichiers
d'initialisation en cas d'installation de pilotes, etc...) et d'autres
trucs optionnels... ainsi qu' évidemment le nom et la version.

Pour faire ça, on utilise la commande "dpkg --build <dossier de ton
programme> ton programme_numéro de version du programme-numéro de
version du paquet_architechture.deb" comme ceci:
dpkg --build pspvt/ pspvt_10.05-1_all.deb


Et DPKG transforme ton dossier ou tu as organisé les données ci-dessus
en un paquet *.deb installable d'un double-clic dans GDebi-Gtk ou d'une
ligne de commande dans GDebi-tout-court ou dans aptitude.

Que mettre dans ton dossier avant de le transformer en *.deb?
Déjà, toute l'arborescence de ton programme:
Si tu as un fichier "/usr/bin/ton_soft" à installer, tu devras le mettre
dans: "<ton_dossier>/usr/bin/ton_soft", si tu as un dossier
"/usr/share/ton_soft" ce sera "<ton_dossier>/usr/share/ton_soft"...
Tu peux mettre autant de dossiers et de fichiers que tu veux, et les
droits sont (apparement) conservés (je crois, mais c'est à confirmer!).

Ensuite tu crée un fichier "<ton_soft>/DEBIAN/control" qui ne sera pas
installé, mais qui contiendra toutes les informations nécéssaires
(nom,version,dépendances,etc...)
Dans le même dossier ("DEBIAN"), tu peux mettre les scripts "preinst",
"postinst" (très utile pour démarrer les DaeMON quand ils sont
installés, TOR et Postfix l'utilisent, ou pour régler les droits),
"prerm" (très utile pour nettoyer son merdier avant de partir, mon soft
devrait l'utiliser xD) ainsi que d'autres fichiers divers... SEUL LE
FICHIER "control" EST OBLIGATOIRE!

Voici un example:
ton_soft/
|-- DEBIAN
| |-- control #obligatoire!!
| |-- postinst
| |-- preinst
| |-- prerm
| `-- triggers
|-- etc
| `-- truc.conf
`-- usr
|-- bin
| `-- ton_soft
`-- share
`-- ton_soft
|-- coincoin.db
|-- data.bin
|-- default.xml
`-- pic0.png

6 directories, 11 files



Après, tu fais "dpkg --build ton_soft tonsoft_0.2-1_i368.deb" et ça te
crée le fichier "tonsoft_0.2-1_i368.deb" qui est ton paquet.

Par example dans mon cas, pour obtenir mon paquet je fais:

$ tree pspvt_debian/ #mon arborescence:
pspvt_debian/
|-- DEBIAN
| |-- conffiles #Pour reconfigurer le merdier
| |-- postinst #C'es écris en Bash; là dedans...
| `-- control #Information obligatoires
|-- etc
| `-- pspvt #Fichier de config' listé dans 'conffiles'
`-- usr
|-- bin
| `-- pspvt -> ../share/pspvt/pspvt.py
`-- share
|-- applications
| `-- pspvt.desktop #Raccourcic pour le menu graphique
|-- man
| `-- man1
| `-- pspvt.1.gz #Page de manuel, qui déclenche le
trigger de man-db
|-- pixmaps
| `-- pspvt #images
| |-- icon.png
| `-- pspvt.png
`-- pspvt
|-- libpspvt.py #machin
|-- pspvt.py #bidule
`-- ui_pspvt.glade #chose

11 directories, 11 files #wahh! j'en ai fait de code xD
$ dpkg --build pspvt_debian/ pspvt_10.02-1_all.deb #Et on empaquette...
dpkg-deb : construction du paquet « pspvt » dans «
pspvt_10.02-1_all.deb ».
$ sudo dpkg -i pspvt_10.02_all.deb #...et on installe
(Lecture de la base de données... 161993 fichiers et répertoires
déjà installés.)
Préparation du remplacement de pspvt 10.02-1 (en utilisant
pspvt_10.02_all.deb) ...
Dépaquetage de la mise à jour de pspvt ...
Paramétrage de pspvt (10.02-1) ...
Traitement des actions différées (« triggers ») pour « man-db »...


Tout simplement!


Tu trouvera plusieurs tutos et informations sur la syntaxe des fichiers
sur le net (google est ton ami), dans les pages de manuel, sur le site
officiel de debian, dans la doc ubuntu-fr (souvent valable pour Debian)
et si ça ne suffit pas, tu peux tout simplement regarder dans le source
d'un paquet: c'est à ça que ça sert le Logiciel Libre :-)

Bon packaging!

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
François Cerbelle
--6sX45UoQRIJXqkqR
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Le Tuesday 11 May 2010 à 18:44:10 (+0200), Skami 18 a écrit :
En fait, pour faire un paquet debian (*.deb), c'est assez simple et
plutôt cool:


[...]

Salut tous,

J'ai du mal à comprendre l'intérêt de construire manuellement un paqu et
binaire Debian à la place de construire un paquet source qui pourra être
distribué, reconstruit, mis à jour, ...

Le seul et unique intérêt que j'y vois est didactique/pédagogique pour
comprendre comment fonctionne le système de paquetage Debian. Mais, là,
le but recherché est de construire un paquet.

Fanfan
--
Moi, Adam et Ève, j'y crois plus tu vois, parce que je suis pas un
idiot : la pomme, ça peut pas être mauvais, c'est plein de pectine...
[J.C. VanDamme]

--6sX45UoQRIJXqkqR
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iD8DBQFL6bi6n0FdfiSfsswRAi5tAJwLojFwUwdQl6nb92K9aXCztzUmEwCfUco2
XZxkdl5+FHAmU6fcoKTAgYE =r++M
-----END PGP SIGNATURE-----

--6sX45UoQRIJXqkqR--

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Skami 18
Le 11/05/2010 22:06, François Cerbelle a écrit :
a place de construire un paquet source qui pourra être
distribué, reconstruit, mis à jour, ...

Le seul et unique intérêt que j'y vois est didactique/pédagogique pour
comprendre comment fonctionne le système de paquetage Debian. Mais, là,
le but recherché est de construire un paquet.



En fait ça peut servir quand on ne peut PAS utiliser de paquets sources:
je suis tout seul comme un blaireau à coder mon soft, je dois donc faire
les paquets Debian et Ubuntu en vitesse de cette façon, par ce que ça
serait une perte de temps de créer un paquet source, de créer une
machine virtuelle sous Ubuntu avec Qemu, et de compiler mon paquet sous
Debian et sous Ubuntu: je préfère faire mon paquet comme ça en
spécifiant comme équivalents les noms des dépendances pour Debian et
ceux pour Ubuntu.

De toute façon, le python est indépendant de l'architecture, alors la
compilation perds de son intérêt...

Si je comprends bien, un paquet source indique comment compiler un
logiciel et comment le transformer en paquet?
Je pense que ça n'a d'intérêt que pour les gros projets ou les logiciels
dépendants de l'architecture... mais après, je peux me tromper :-p

--
╭─────────────────────────────────────────────╮
│ ⬚ [ xterm - ] − □ X │
├─────────────────────────────────────────────┤
│| # cat /proc/info |│
│| Mail: |│
│| Site: <http://sk18_website.sfhost.net> |│
│| Projet: <http://pspmt.googlecode.com> |│
│| Skami_18 is free software: you can |│
│| redistribute it and/or modify it under |│
│| the terms of the GNU General Public |│
│| License as published by the Free Software |│
│| Foundation, either version 3 of the |│
│| License, or any later version. |│
│| # |│
└─────────────────────────────────────────────┘

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Vincent Danjean
On 10/05/2010 13:04, Merwin wrote:
Le 10/05/2010 12:45, Vincent Danjean a écrit :
4 ? Le "donc" est de trop dans ta phrase. Il manque des informations
pour pouvoir conclure comme toi.



La lib python: 1 Paquet
Le programme: 1 Paquet
Les deux scripts: 2 Paquets



Le sens de ma remarque était plutôt qu'on pouvait faire un seul paquet.
Est-ce que tes paquets sont suffisamment gros pour justifier leur découpage ?

A+
Vincent

--
Vincent Danjean GPG key ID 0x9D025E87
GPG key fingerprint: FC95 08A6 854D DB48 4B9A 8A94 0BF7 7867 9D02 5E87
Unofficial packages: http://moais.imag.fr/membres/vincent.danjean/deb.html
APT repo: deb http://perso.debian.org/~vdanjean/debian unstable main

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Vincent Danjean
On 12/05/2010 18:41, Skami 18 wrote:
Si je comprends bien, un paquet source indique comment compiler un
logiciel et comment le transformer en paquet?



Oui, sauf que la partie compilation est optionnelle (justement pour
les scripts)

Je pense que ça n'a d'intérêt que pour les gros projets ou les logiciels
dépendants de l'architecture... mais après, je peux me tromper :-p



Je pense que tu te trompes.

Il est très difficile (et encore plus à maintenir) de faire correctement
(ie conforme à la policy Debian) des paquets binaires directement. [C'est
par contre effectivement facile de créer des fichiers .deb directement.]

Pour reprendre le langage que tu cites (python), il est possible de
compiler les fichiers py pour accélérer leur chargement/exécution. Cette
compilation doit dépendre de la version de python utilisée (éventuellement
plusieurs) et il faut faire un nettoyage correct quand le paquet est
supprimé et/ou une version de python enlevée du système. Tu peux tenter
de le faire à la main. Ou alors, tu peux créer un paquet source qui
invoquera dh_pysupport qui ajoutera automatiquement le support pour
python-support qui sera tout le boulot pour toi correctement...

--
Vincent Danjean GPG key ID 0x9D025E87
GPG key fingerprint: FC95 08A6 854D DB48 4B9A 8A94 0BF7 7867 9D02 5E87
Unofficial packages: http://moais.imag.fr/membres/vincent.danjean/deb.html
APT repo: deb http://perso.debian.org/~vdanjean/debian unstable main

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
1 2