Pourquoi dh usrlocal envoie une erreur de construction?
j'essaie de compiler un paquet deb pour mon serveur. Quand je vais à construire, tout semble bon jusqu'à ce qu'il arrive à dh_usrlocal
la compilation s'arrête et retourne une erreur. Le problème, c'est que j'essaie ça pour la première fois et je ne sais vraiment pas où chercher le problème.
C'est la sortie de mon terminal, j'ai aussi inclus la commande, j'ai couru en bas de la sortie.
make[2]: Leaving directory `/home/ian/Desktop/scst-2.1.0/src'
make[1]: Leaving directory `/home/ian/Desktop/scst-2.1.0'
dh_install
dh_installdocs
dh_installchangelogs
dh_installexamples
dh_installman
dh_installcatalogs
dh_installcron
dh_installdebconf
dh_installemacsen
dh_installifupdown
dh_installinfo
dh_pysupport
dh_installinit
dh_installmenu
dh_installmime
dh_installmodules
dh_installlogcheck
dh_installlogrotate
dh_installpam
dh_installppp
dh_installudev
dh_installwm
dh_installxfonts
dh_bugfiles
dh_lintian
dh_gconf
dh_icons
dh_perl
dh_usrlocal
dh_usrlocal: debian/scst/usr/local/include/scst/scst.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_user.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/Module.symvers is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_debug.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_const.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_sgv.h is not a directory
rmdir: failed to remove `debian/scst/usr/local/include/scst': Directory not empty
dh_usrlocal: rmdir debian/scst/usr/local/include/scst returned exit code 1
make: *** [binary] Error 1
dpkg-buildpackage: error: debian/rules binary gave error exit status 2
ian@vm01:~/Desktop/scst-2.1.0$ sudo dpkg-buildpackage -rfakeroot
Toute aide serait appréciée.
3 réponses
vous devriez éviter d'exécuter dh_usrlocal. pour ce faire, il suffit d'ajouter ceci à debian/rules: override_dh_usrlocal:
de manière générale, si vous avez un problème avec une cible spécifique, vous l'annulez simplement en ajoutant override_{target} dans votre debian/rules.
exemple, vous avez un problème avec dh_icons. vous n'avez qu'à ajouter ceci dans votre debian/rules
override_dh_icons:
{insert your processing commands or do nothing to skip it when building package}
IMPORTANT: cette erreur ne se produit que lorsque vous essayez d'installer /usr/local/
j'ai déplacé mon paquet à installer de /usr/local/lib/python3/dist-packages/
/usr/lib/python3/dist-packages
et l'erreur a disparu. dh_usrlocal semble être cassé ou mon paquet ne respecte pas les règles qu'il attend.
j'ai commencé à avoir l'erreur après avoir ajouté un package.install
vers mon paquet debian pour qu'il copie le contenu du paquet dans le système de fichiers. (J'était en train d'installer /usr/local/
à l' temps)
le Contenu de mon fichier d'installation lorsqu'il a échoué:
usr/* usr/
Contenu lorsqu'il fonctionne correctement:
usr/ usr/
structure du paquet debian:
packagename-0.1/
debian/
usr/
local/
lib/
python3/
packagename/
Edit: Cela ne semble fonctionner qu'en copiant les répertoires racine. Une fois que j'ai essayé de spécifier la copie au-delà de usr/, il se casse avec la même erreur. Voir le haut de la réponse pour trouver ma solution.
Un paquet Debian correct n'est pas autorisé à générer des trucs là-bas mais des répertoires vides.C'est pourquoi elle se plaint de ne pas pouvoir supprimer le répertoire. Il ne s'attend pas à ce que les fichiers soient là.la seule chose que vous pouvez avoir est un répertoire dans /usr/local et c'est ce que dh_usrlocal essaie de gérer mais vous ne devriez pas avoir de fichiers
les utilisateurs ne mettent les fichiers que dans /usr/local/.
je pense aussi que si vous avez le nom usr / local dans votre chemin de répertoire il causera l'erreur aussi comme même si ce n'est pas le bon usr/local. Un exemple de ce qui pourrait causer le problème. Je pense que le logiciel de construction regex cherche usr / local.
/var/tmp/usr/local/
je sais que c'est un vieux post, mais il est classé #1 sur google donc besoin d'une bonne réponse donc les gens à résoudre ce problème rapidement.