J'ai des difficultés à créer un package pour une bibliothèque partagée.
J'ai exécuté dh_make
et modifié les fichiers. Cependant, lorsque je construis le paquet, j'obtiens ce qui suit:
****** @ ****** - ordinateur portable: ~/Documents/temp/jsoncpp/jsoncpp-0.5.0 $ debuild dpkg-buildpackage -rfakeroot -D -us -uc dpkg-buildpackage: définit CFLAGS sur la valeur par défaut: -g -O2 dpkg-buildpackage: définit CPPFLAGS sur la valeur par défaut: dpkg-buildpackage: définit le paramètre LDFLAGS sur : -Wl, -Bsymbolic-functions Dpkg-buildpackage: définit FFLAGS sur la valeur par défaut: -g -O2 Dpkg-buildpackage: définit CXXFLAGS sur la valeur par défaut: -g -O2 dpkg-buildpackage: paquet source jsoncpp dpkg-buildpackage: version source 0.5.0-1 dpkg-buildpackage: source modifiée par ****** dpkg-buildpackage : Architecture hôte AMD64 Fakeroot debian/rules clean Dh clean Dh_testdir Dh_auto_clean Dh_clean Dpkg-source -b jsoncpp -0.5.0 Dpkg-source: info: en utilisant le format source `1.0 ' Dpkg-source: info: construire jsoncpp en utilisant jsoncpp_0.5.0.orig.tar.gz dpkg-source: info: construction de jsoncpp dans jsoncpp_0.5. 0-1.diff.gz Dpkg-source: info: construire jsoncpp dans jsoncpp_0.5.0-1.dsc Debian/rules construire Dh construire Dh_testdir dh_auto_configure dh_auto_build make [1]: Entrée du répertoire `/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0''..____ .] test -d obj || mkdir obj g ++ -I ./include -c -o obj/lecteur_json.o src/lib_json/json_reader.cpp g ++ -I ./inclure -c -o -o obj/json_writer.o src /lib_json/json_writer.cpp7.. /json_writer.o obj/valeur_json.o ar: création de libjsoncpp.a make [1]: Sortie du répertoire `/ home/******/Documents/temp/jsoncpp/jsoncpp -0.5.0 ' Dh_auto_test Fakeroot debian/rules binary Dh binary Dh_testroot Dh_prep Dh_installdirs dh_auto_install make [1]: entrée dans le répertoire `/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0' Sudo cp -r include/json - -target-directory =/usr/include ERREUR: ld.so: l'objet 'libfakeroot-sysv.so' de LD_PRELOAD ne peut pas être préchargé: ignoré. cp libjsoncpp.a/usr/lib/libjsoncpp.a cp: impossible de créer le fichier normal `/usr/lib/libjsoncpp.a ': Autorisation refusée make [1]: *** [i nstall] Erreur 1 make [1]: Quitter le répertoire `/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0'[.____._revdh_auto_install: make -j1 install DESTDIR =/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0/debian/tmp a renvoyé le code de sortie 2 Make: *** [binary] Erreur 29 dpkg-buildpackage: erreur: le binaire fakeroot debian/rules a donné le statut de sortie d’erreur 2 debuild: erreur fatale à la ligne 1340: dpkg-buildpackage -rfakeroot -D -us -uc a échoué
Le problème semble être ici:
ERREUR: ld.so: l'objet 'libfakeroot-sysv.so' de LD_PRELOAD ne peut pas être préchargé: ignoré.
cp libjsoncpp.a /usr/lib/libjsoncpp.a
cp: impossible de créer le fichier normal `/usr/lib/libjsoncpp.a ': autorisation refusée
... mais je n'ai pas la moindre idée de ce qu'est le problème.
Le makefile est ici si nécessaire.
Le Makefile que vous utilisez ne respecte pas la variable DESTDIR - les packages ne doivent jamais s’installer directement dans/usr au moment de la construction, mais placer les fichiers dans une arborescence temporaire. Vous avez mentionné que vous aviez ajouté le fichier Makefile vous-même. Dans le cas habituel, vous devez le faire utiliser la variable DESTDIR comme préfixe pour tous les chemins d'installation. Après avoir examiné les instructions de construction du paquet, celui-ci utilise scons en tant que système de construction, qui remplace les tris de make. dh_make n'a probablement pas de modèle pour construire des paquets avec cela, vous devriez donc chercher les paquets qui l'utilisent pour la construction, comme yafray, et regarder leurs règles/debian
Comme les packages ne sont jamais créés en tant que root, il est préférable d'afficher et de corriger cette erreur plutôt que de remplacer les fichiers importants par un paquet car celui-ci est créé sur le système d'un développeur peu méfiant.
Comme vous l'avez compris, les problèmes se trouvent ici:
cp libjsoncpp.a /usr/lib/libjsoncpp.a
Vous appelez debbuild
en tant qu'utilisateur normal, qui n'a pas le droit d'écrire dans ce répertoire. Si vous essayez Sudo debbuild
cela devrait fonctionner.