#1 Le 08/01/2009, à 21:59
- BaptX
Package à partir d'une librairie dynamique
Bonjour à tous,
Dans le cadre d'un projet de mon école, il nous ait demandé de créer un package d'une librairie. La librairie étant dépendante d'un programme (libmpg123 pour mpg123 pour ne pas les citer), je ne peux que récupérer le fichier .so et son ami le fichier .h.
J'ai donc eu l'idée de créer un package à partir de ces fichiers juste en faisant une copie.
Voici donc ce que me donne mon fichier Makefile :
DESTDIR=/tmp
BINDIR=/usr/bin
all: libmpg123
libmpg123:
clean:
install:
cp -r *.so /usr/bin
cp -r *.h /usr/include
Quand j'essaye d'éxécuter dpkg-buildpackage, voici ce qu'il me répond:
dpkg-buildpackage: set CPPFLAGS to default value:
dpkg-buildpackage: set CFLAGS to default value: -g -O2
dpkg-buildpackage: set CXXFLAGS to default value: -g -O2
dpkg-buildpackage: set FFLAGS to default value: -g -O2
dpkg-buildpackage: set LDFLAGS to default value: -Wl,-Bsymbolic-functions
dpkg-buildpackage: paquet source libmpg123
dpkg-buildpackage: version source 0-1
dpkg-buildpackage: source changé en BaptX <baptx@unknown>
dpkg-buildpackage: architecture hôte i386
debian/rules clean
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp
# Add here commands to clean up after the build process.
/usr/bin/make clean
make[1]: entrant dans le répertoire « /home/baptx/Bureau/test package/libmpg123-0 »
make[1]: Rien à faire pour « clean ».
make[1]: quittant le répertoire « /home/baptx/Bureau/test package/libmpg123-0 »
dh_clean
dpkg-source -b libmpg123-0
dpkg-source : construction de libmpg123 à partir de libmpg123_0.orig.tar.gz
dpkg-source : construction de libmpg123 dans libmpg123_0-1.diff.gz
dpkg-source : construction de libmpg123 dans libmpg123_0-1.dsc
debian/rules build
dh_testdir
# Add here commands to configure the package.
touch configure-stamp
dh_testdir
# Add here commands to compile the package.
/usr/bin/make
make[1]: entrant dans le répertoire « /home/baptx/Bureau/test package/libmpg123-0 »
make[1]: Rien à faire pour « all ».
make[1]: quittant le répertoire « /home/baptx/Bureau/test package/libmpg123-0 »
#docbook-to-man debian/libmpg123.sgml > libmpg123.1
touch build-stamp
debian/rules binary
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
# Add here commands to install the package into debian/libmpg123.
/usr/bin/make DESTDIR=/home/baptx/Bureau/test package/libmpg123-0/debian/libmpg123 install
make[1]: entrant dans le répertoire « /home/baptx/Bureau/test package/libmpg123-0 »
make[1]: *** Pas de règle pour fabriquer la cible « package/libmpg123-0/debian/libmpg123 ». Arrêt.
make[1]: quittant le répertoire « /home/baptx/Bureau/test package/libmpg123-0 »
make: *** [install] Erreur 2
dpkg-buildpackage: échec: debian/rules binary a produit une erreur de sortie de type 2
J'ai exécuté avant la commande dh_make dans le but de créer ce package.
Je peux comprendre que ça soit pas très propre, mais étant débutant en linux (issu du Windows, l'école nous fait coder sous Linux), je n'ai trouvé que cette solution. Si quelqu'un a quelque chose de mieux à me proposer, je suis preneur
PS: Voici la liste des fichiers qui se trouvent dans le répertoire où je veux faire mon package:
- libmpg123.so
- libmpg123.so.0
- libmpg123.so.0.11.3
- mpg123.h
- Makefile
#2 Le 09/01/2009, à 08:38
- gpocentek
Re : Package à partir d'une librairie dynamique
Ton Makefile n'est pas correct. Pourquoi créer des cibles vides (libmpg123, clean et all ne font rien) ?
Ton Makefile pourrait simplement être
#!/usr/bin/make -f
install:
cp -r *.so $DESTDIR/usr/bin
cp -r *.h $DESTDIR/usr/include
Et tu as même tout intérêt à installer tes fichiers en utilisant dh_install au lieu d'utiliser un Makefile.
Autre chose, libmpg123 est dans les dépôts, je ne vois pas trop pourquoi tu veux en refaire un paquet. Et "library" se traduit pas "bibliothèque" en français.
Dernière modification par Gloubiboulga (Le 10/01/2009, à 07:47)
Hors ligne
#3 Le 09/01/2009, à 12:07
- TiT_TiX
Re : Package à partir d'une librairie dynamique
Merci pour ta réponse rapide.
Je cherche en fait à faire un package à partir de cette librairie car c'est ce que le prof nous demande.
Pour cela, il nous a donné une méthode dans son cours qui est:
- Faire son Makefile
- Faire un tar gz du dossier de la librairie
- Appeler dh_make
- Cleaner le dossier Debian (virer les .ex, .EX, docs, dirs)
- Appeler dpkg
Le problème est que cette méthode est visiblement utilisée pour un code source, et je n'ai pas réussi à l'appliquer à un fichier .so.
Le prof m'a répondu ceci:
>est-il possible d'en créer un (package) directement avec la librairie dynamique (fichier .so)
Oui, mais avec 2 versions:
- la version binaire qui ne contient que le .so
- la version de développement qui contient le .so et tous les .h nécessaires pour
qui veut compiler un programme utilisant cette bibliothèque
Malheureusement, je ne trouve pas de méthode sur le net pour le faire.
Et dans les dépôts, il n'y a pas libmpg123 mais bel et bien le programme mpg123. Le prof veut que notre programme, lors de l'installation du package, aille télécharger sur notre compte étudiant le package de la librairie.
J'espère avoir été plus clair.
#4 Le 10/01/2009, à 02:45
- mr_pouit
Re : Package à partir d'une librairie dynamique
Bonsoir,
/usr/bin/make DESTDIR=/home/baptx/Bureau/test package/libmpg123-0/debian/libmpg123 install
Ton problème vient du fait que tu as un espace dans ton chemin.
Et dans les dépôts, il n'y a pas libmpg123 mais bel et bien le programme mpg123. Le prof veut que notre programme, lors de l'installation du package, aille télécharger sur notre compte étudiant le package de la librairie.
Si si : http://packages.ubuntu.com/search?keywords=libmpg123-0
Hors ligne