#1 Le 01/10/2007, à 14:34
- Gide
Créer un package .deb à partir d'un exécutable
Bonjour,
Une méthode "quick and dirty" pour créer un .deb à partir d'un exécutable (bin).
Exemple avec SciDAVis : http://scidavis.sourceforge.net/
Après téléchargement et décompression de l'archive scidavis-0.1.0-linux.tar.bz2,
on obtient un répertoire scidavis-0.1.0.
jd@kubuntu:~/Downloads/SciDAVis$ ls
Makefile scidavis-0.1.0 SciDAVis.desktop
On édite alors un fichier .desktop correspondant à l'entrée dans le menu
[Desktop Entry]
Categories=Qt;KDE;Education;Math;
Comment=
Comment[fr]=
Exec=/opt/scidavis/scidavis
GenericName=
GenericName[fr]=
Icon=/opt/scidavis/icon.png
MimeType=
Name=SciDAVis
Name[fr]=SciDAVis
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-DCOP-ServiceType=
X-KDE-SubstituteUID=false
X-KDE-Username=
et un fichier Makefile dans lequel on crée la règle install:
install:
mkdir /opt/scidavis
cp -r ./scidavis-0.1.0/* /opt/scidavis
cp SciDAVis.desktop ~/.local/share/applications/
Pour résumer : créer le répertoire de destination /opt/scidavis ; copier tous les fichiers dans ce répertoire et copier le fichier .desktop
Ensuite un sudo checkinstall va créer le .deb et l'installer :
checkinstall 1.6.1, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran
This software is released under the GNU GPL.
The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs? [y]: n
*****************************************
**** Debian package creation selected ***
*****************************************
*** Warning: The package name "SciDAVis" contains upper case
*** Warning: letters. dpkg might not like that so I changed
*** Warning: them to lower case.
This package will be built according to these values:
0 - Maintainer: [ root@kubuntu ]
1 - Summary: [ Scientific Data Analysis and Visualization ]
2 - Name: [ scidavis ]
3 - Version: [ 0.1.0 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ i386 ]
8 - Source location: [ SciDAVis ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
Enter a number to change any of them or press ENTER to continue:
Installing with make install...
========================= Installation results ===========================
mkdir /opt/scidavis
cp -r ./scidavis-0.1.0/* /opt/scidavis
cp SciDAVis.desktop ~/.local/share/applications/
======================== Installation successful ==========================
Copying files to the temporary directory...OK
Striping ELF binaries and libraries...OK
Compressing man pages...OK
Building file list...OK
Building Debian package...OK
Installing Debian package...OK
Erasing temporary files...OK
Writing backup package...OK
Deleting temp dir...OK
**********************************************************************
Done. The new package has been installed and saved to
/home/jd/Downloads/SciDAVis/scidavis_0.1.0-1_i386.deb
You can remove it from your system anytime using:
dpkg -r scidavis
**********************************************************************
Voilà un .deb utilisable sur d'autres machines...
Des remarques ou améliorations ??
Dernière modification par Gide (Le 04/10/2007, à 21:52)
Hors ligne
#2 Le 01/10/2007, à 21:39
- mr_pouit
Re : Créer un package .deb à partir d'un exécutable
Bonsoir,
install: mkdir /opt/scidavis cp -r ./scidavis-0.1.0/* /opt/scidavis cp SciDAVis.desktop ~/.local/share/applications/
Pour résumer : créer le répertoire de destination /opt/scidavis ; copier tous les fichiers dans ce répertoire et copier le fichier .desktop
Le .desktop doit être installé dans /usr/share/applications/ pour être disponible pour tous les utilisateurs (là il n'est disponible que pour toi). Tu peux également utiliser la commande desktop-file-validate du paquet desktop-file-utils pour vérifier si ton .desktop est valide.
Voilà un .deb utilisable sur d'autres machines...
Pas vraiment : seulement sur des machines i386 (donc pas sur les systèmes ppc ou amd64). Ensuite, checkinstall n'ajoute pas les dépendances (cf. le fichier REQUIREMENTS de l'archive, ou encore la commande objdump -p <le_binaire> | grep NEEDED pour voir les dépendances requises), donc le programme ne fonctionnera pas sur un système qui ne les a pas. Et accessoirement, un paquet ne doit pas toucher à ~ et /opt en théorie.
Bref, ce sont toutes ces raisons qui font qu'il est préférable d'utiliser la méthode de création des paquets à partir des sources (cf. http://doc.ubuntu-fr.org/projets/ecole/paquets).
Mais cela dit, pour un usage local (par exemple entre les différentes machines chez soi), checkinstall est assez pratique.
Hors ligne
#3 Le 02/10/2007, à 08:08
- Gide
Re : Créer un package .deb à partir d'un exécutable
Bonjour,
Merci pour ces remarques constructives.
Le .desktop doit être installé dans /usr/share/applications/ pour être disponible pour tous les utilisateurs (là il n'est disponible que pour toi). Tu peux également utiliser la commande desktop-file-validate du paquet desktop-file-utils pour vérifier si ton .desktop est valide.
Effectivement, c'est le but, mais il est intéressant de préciser pour ceux qui veulent le rendre disponible pour tous les utilisateurs.
seulement sur des machines i386 (donc pas sur les systèmes ppc ou amd64)
L'éxécutable ne fonctionne bien sûr que sur la plateforme pour laquelle il a été compilé. On ne peut rien y faire.
Ensuite, checkinstall n'ajoute pas les dépendances (cf. le fichier REQUIREMENTS de l'archive, ou encore la commande objdump -p <le_binaire> | grep NEEDED pour voir les dépendances requises)
C'est le problème majeur de checkinstall... 2 possibilités :
soit le binaire est compilé sur une distrib et on précise, soit on fait les .deb correspondant aux dépendances.
Par contre si quelqu'un sait comment inclure la liste des dépendances dans l'archive .deb crée, je suis TRES intéressé...
il est préférable d'utiliser la méthode de création des paquets à partir des sources
Tout à fait d'accord ! Mais dans certains cas, les programmeurs ne nous facilitent pas la tâche...
SciDAVis est un fork de QtiPLot qui pose pas mal de problème à la compilation :
http://forum.ubuntu-fr.org/viewtopic.php?id=117856
Finalement, cela permet au minimum d'avoir un système "propre" : On peut facilement désinstaller les binaires qui en général trainent dans l'arborescence ....
a+
Dernière modification par Gide (Le 02/10/2007, à 08:12)
Hors ligne
#4 Le 03/10/2007, à 06:57
- Bismut
Re : Créer un package .deb à partir d'un exécutable
Bref, ce sont toutes ces raisons qui font qu'il est préférable d'utiliser la méthode de création des paquets à partir des sources (cf. http://doc.ubuntu-fr.org/projets/ecole/paquets).
Oui, mais comment fait-on quand il n'y a pas de sources ?
Je développe en XUL/JS, et mon application est directement exécutable depuis mon répertoire de développement... il n'y a aucune dépendance.
Comment en faire un .deb ?
C'est la 1ère fois que je vois un tuto capable de créer un .deb de mon application, et ce n'est donc pas une bonne méthode ? Que faire dans ce cas ? Personne n'a jamais répondu à mes topics, sniff...
Mac Mini 2009 avec Archlinux
Asus EeePC S101 avec Archlinux
HTC Magic avec Android
Hors ligne
#5 Le 05/10/2007, à 18:30
- mr_pouit
Re : Créer un package .deb à partir d'un exécutable
Bonjour,
Comment en faire un .deb ?
Tu peux essayer de regarder le packaging des extensions firefox/thunderbird (c'est en XUL ça aussi, non ?).
Hors ligne
#6 Le 06/10/2007, à 16:40
- Bismut
Re : Créer un package .deb à partir d'un exécutable
Bah ça n'est pas vraiment le sujet. Mon appli. est en fait une extension Firefox autonome qui tourne grâce à XULRunner.
En gros, c'est comme Songbird, NVU ou autres...
Le déploiement .deb n'est pas développé sur la plateforme Mozilla, a priori c'est une particularité du système Debian ?
Je sais pas, un .deb c'est quoi ? un fichier compressé comprenant des infos sur la manière d'installer non ? Nom / Description / Destination,... non ?
J'en connais pas trop mais y a bien des logiciels qui marchent dans leur répertoire sous Linux ? Rainlendar par exemple se lance à partir de son répertoire dézippé... L'auteur ne fournit pas de .deb.
Comment en créer un à partir de ça ? c'est possible ?
Mac Mini 2009 avec Archlinux
Asus EeePC S101 avec Archlinux
HTC Magic avec Android
Hors ligne
#7 Le 17/10/2007, à 21:49
- mr_pouit
Re : Créer un package .deb à partir d'un exécutable
Bah ça n'est pas vraiment le sujet. Mon appli. est en fait une extension Firefox autonome qui tourne grâce à XULRunner.
En gros, c'est comme Songbird, NVU ou autres...
Dans ce cas, essaie de regarder les paquets source de kompozer ou sunbird (apt-get source sunbird).
Je sais pas, un .deb c'est quoi ? un fichier compressé comprenant des infos sur la manière d'installer non ? Nom / Description / Destination,... non ?
Oui, c'est un tar qui contient 2 archives gz : une qui contient les fichiers et une qui contient les informations du paquet (nom, dépendances, description...).
J'en connais pas trop mais y a bien des logiciels qui marchent dans leur répertoire sous Linux ? Rainlendar par exemple se lance à partir de son répertoire dézippé... L'auteur ne fournit pas de .deb.
Comment en créer un à partir de ça ? c'est possible ?
Si c'est un binaire, alors c'est préférable de compiler plutôt que de packager le binaire fourni (car il ne fonctionnera pas sur toutes les plateformes). Mais sinon, il suffit de faire des {cp,mv,install} dans le debian/rules au lieu d'un {./configure,make,make install}.
Hors ligne
#8 Le 18/10/2007, à 19:38
- Bismut
Re : Créer un package .deb à partir d'un exécutable
Ok, je comprends, c'est déjà plus clair... merci bien
Mac Mini 2009 avec Archlinux
Asus EeePC S101 avec Archlinux
HTC Magic avec Android
Hors ligne