#1 Le 15/02/2009, à 12:49
- Kyoaku
[Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Bonjour à tous. Voila je suis etudiant en bts informatique, et je m'interesse à la création de paquet, car je trouve ce système vraiment sympa.
j'ai donc suivi ce tuto http://www.sukria.net/fr/libreast/ pour comprende comment sont crées les paquets, car celui proposé dans la doc est un peut complèxe et je me perds dans les manipulations.
Jai donc utilisé debhelper, mais arrivé au moment de choisir le répertoire d'installation du paquet, j'obtient cette erreur:
fakeroot debian/rules binary
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
DESTDIR=
BINDIR=/usr/bin
install -d -m 0755 -o root -g root //usr/bin
install -m 0755 -o root -g root hello //usr/bin
install: ne peut évaluer `hello': Aucun fichier ou dossier de ce type
make: *** [install] Erreur 1
dpkg-buildpackage: échec: fakeroot debian/rules binary a produit une erreur de sortie de type 2
voici le code correspondant dans me fichier rules
DESTDIR=
BINDIR=/usr/bin
install: build
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
install -d -m 0755 -o root -g root $(DESTDIR)/$(BINDIR)
install -m 0755 -o root -g root hello $(DESTDIR)/$(BINDIR)
# Add here commands to install the package into debian/hello.
$(MAKE) install DESTDIR=$(CURDIR)/debian/hello
Ou plus simplement je voudrais savoir comment modifier le fichier rules généré par debhelper pour changer le repertoir cible dans lequel le paquet s'installera.
Merci d'avance pour votre aide.
Dernière modification par Kyoaku (Le 27/02/2009, à 11:09)
Hors ligne
#2 Le 15/02/2009, à 15:28
- olivierb2
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Es-tu sur que tu as quelque chose a compilé qui va te créer un fichier de destination hello?
Olivier.
Serveurs linux complet clef en main à prix mini : http://ishare.iabsis.com
Hors ligne
#3 Le 15/02/2009, à 16:23
- Kyoaku
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Non, justement j'ai comenté la ligne servant a compiler car c'est juste un script bash (.sh) qui doit etre empaqueté (juste histoire de voir le principe en fait)
Hors ligne
#4 Le 16/02/2009, à 07:31
- gpocentek
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Les deux lignes 'install blabla' de ton debian/rules posent problème. DESTDIR est vide, donc tu essaies d'installer directement sur le système. Ca ne fonctionne pas puisque tu n'as pas les droits.
Définis DESTDIR correctement et ça fonctionnera.
Par ailleurs, pourquoi installer manuellement (avec install), puis refaire la même chose juste en dessous via un Makefile ? Il y a un truc qui cloche.
Hors ligne
#5 Le 16/02/2009, à 10:35
- olivierb2
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Si tu n'as rien à compiler, tu dois quand même copier quelque chose dans ton $(DESTDIR). Ton scripte indique que tu veux installer un hello, donc tu dois avoir un hello dans ton $(CURDIR).
Serveurs linux complet clef en main à prix mini : http://ishare.iabsis.com
Hors ligne
#6 Le 16/02/2009, à 20:15
- Kyoaku
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Ah ok, donc donc j'ai essayé de suivre vos conseils, et mon code donne ceci:
DESTDIR=/usr/share/hello
BINDIR=/usr/bin
#install -d -m 0755 -o root -g root $(DESTDIR)/$(BINDIR)
#install -m 0755 -o root -g root hello $(DESTDIR)/$(BINDIR)
# Add here commands to install the package into debian/hello.
$(MAKE) install DESTDIR=$(CURDIR)/debian/hello
et là une autre erreur apparait : "make[1]: *** Pas de règle pour fabriquer la cible « install ». Arrêt."
mais je viens de remarquer que j'ai la même erreur avec le clean :
clean:
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp
# Add here commands to clean up after the build process.
-$(MAKE) clean
dh_clean
qui me donne la même erreur : "make[1]: *** Pas de règle pour fabriquer la cible « clean ». Arrêt."
mais aparament cela ne le gène pas puisqu'il continue...
(je pense que je ferais mieux de me familiariser avec les makefiles avant de vouloir m'attaquer à un plus gros morceau )
Hors ligne
#7 Le 16/02/2009, à 20:27
- olivierb2
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Si tu n'a rien a compiler, tu dois simplement commenter la ligne make et utiliser par exemple cp pour copier ton script vers (DESTDIR)
Serveurs linux complet clef en main à prix mini : http://ishare.iabsis.com
Hors ligne
#8 Le 16/02/2009, à 21:00
- Kyoaku
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Effectivement c'est magique, j'ai remplacé
$(MAKE) install DESTDIR=$(CURDIR)/debian/hello
par
cp -r $(CURDIR)/debian DESTDIR
et j'ai ajouté "usr/share/hello" dans le fichier dirs
Merci beaucoup pour votre aide olivierb2 et gpocentek
Hors ligne
#9 Le 16/02/2009, à 21:36
- mr_pouit
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Bonsoir,
cp -r $(CURDIR)/debian DESTDIR
Ça ne me paraît pas correct du tout : cette commande a créé un dossier nommé DESTDIR (et non la valeur de $(DESTDIR)) qui contient tout ton arbre debian (qui n'a rien à faire dans un paquet binaire soit dit en passant).
Pour reprendre ce que dit gpocentek, il suffit de mettre ton $(DESTDIR) à une valeur correcte, par exemple $(CURDIR)/debian/hello.
Hors ligne
#10 Le 17/02/2009, à 09:44
- Kyoaku
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Ah ok, suite à une install du paquet, j'ai constaté que tout le répertoire avait été copié mais l'exécutable était absent , donc après avoir modifié mon DESTDIR, j'ai toujours le même message d'erreur...
Hors ligne
#11 Le 20/02/2009, à 12:02
- mr_pouit
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Peux-tu copier ton debian/rules ? (et pour connaître le contenu d'un paquet, pas besoin de l'installer, tu peux faire "dpkg -c ton-paquet.deb")
Hors ligne
#12 Le 20/02/2009, à 22:36
- Kyoaku
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Ah ok merci pour l'info ^^
debian/rules :
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
configure: configure-stamp
configure-stamp:
dh_testdir
# Add here commands to configure the package.
touch configure-stamp
build: build-stamp
build-stamp: configure-stamp
dh_testdir
# Add here commands to compile the package.
#$(MAKE)
#docbook-to-man debian/hello.sgml > hello.1
touch build-stamp
clean:
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp
# Add here commands to clean up after the build process.
-$(MAKE) clean
dh_clean
install: build
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
DESTDIR=/home/kyo/hello
BINDIR=home/kyo/usr/bin
#install -d -m 0755 -o root -g root $(DESTDIR)/$(BINDIR)
#install -m 0755 -o root -g root hello $(DESTDIR)/$(BINDIR)
# Add here commands to install the package into debian/hello.
#$(MAKE) install DESTDIR=$(CURDIR)/debian/hello
cp -r $(CURDIR)/debian /home/kyo/hello
# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: build install
dh_testdir
dh_testroot
dh_installchangelogs
dh_installdocs
dh_installexamples
# dh_install
# dh_installmenu
# dh_installdebconf
# dh_installlogrotate
# dh_installemacsen
# dh_installpam
# dh_installmime
# dh_python
# dh_installinit
# dh_installcron
# dh_installinfo
dh_installman
dh_link
dh_strip
dh_compress
dh_fixperms
# dh_perl
# dh_makeshlibs
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure
Hors ligne
#13 Le 20/02/2009, à 23:16
- mr_pouit
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
DESTDIR=/home/kyo/hello
BINDIR=home/kyo/usr/bin
#install -d -m 0755 -o root -g root $(DESTDIR)/$(BINDIR)
#install -m 0755 -o root -g root hello $(DESTDIR)/$(BINDIR)
Si je regarde bien le didacticiel que tu as suivi, il fallait mettre ces lignes dans le Makefile du programme (hello-1.0/Makefile) et non dans ton debian/rules.
Ensuite, $BINDIR et $DESTDIR sont incorrects : $BINDIR doit être un chemin absolu (par exemple /usr/bin), c'est là où le binaire sera sur le système ; $DESTDIR doit être relatif à ton packaging (car il est utilisé uniquement lors de la construction du paquet).
Une fois que c'est corrigé, il suffira de supprimer le cp -r blabla et de décommenter la ligne contenant la commande $(MAKE) pour que ça marche.
# Add here commands to install the package into debian/hello.
#$(MAKE) install DESTDIR=$(CURDIR)/debian/hello
cp -r $(CURDIR)/debian /home/kyo/hello
Si tu veux plus de documentation, je te conseille de lire http://doc.ubuntu-fr.org/projets/ecole/paquets.
Hors ligne
#14 Le 24/02/2009, à 11:58
- Kyoaku
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
ok, mais il se trouve que lors de la création du dossier debian, debhelper aurait dut me creer un fichier makefile (si j'ai bien tout suivi...), or je n'en ai aucun. Ca doit etre cela la souce de mon problème...:/
Hors ligne
#15 Le 24/02/2009, à 12:02
- gpocentek
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
debhelper utilise les Makefile existants si tu lui dit de le faire. Il ne crée jamais de Makefile par lui même.
Hors ligne
#16 Le 24/02/2009, à 12:59
- Kyoaku
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Donc si je comprends bien je dois créer un fichier Makefile et insérer
DESTDIR=
BINDIR=usr/bin
#install -d -m 0755 -o root -g root $(DESTDIR)/$(BINDIR)
#install -m 0755 -o root -g root hello $(DESTDIR)/$(BINDIR)
Hors ligne
#17 Le 24/02/2009, à 13:07
- gpocentek
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Oui, comme mr_pouit l'a dit plus haut.
Hors ligne
#18 Le 27/02/2009, à 11:09
- Kyoaku
Re : [Résolu]Comment déterminer le répertoire d'installation d'un .deb?
Voila, après avoir suivi vos conseils, j'ai enfin réussi, je vous remerci tous pour votre aide et surtout votre patience .Maintenant je vais faire un petit pdf de cette page et recomencer en essayant de comprendre mes erreurs.
Encore merci
Hors ligne