Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

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,

BaptX a écrit :

/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