8
votes

Pourquoi MKDir -P ne fonctionne-t-il pas dans un script appelé par CheckInstall?

J'essaie de compiler Quarter et emballer en utilisant CheckInstall .

Si je fais la norme ./configure && make && sudo fait installer, les choses vont Bien. P>

mkdir -p /foo works correctly
mkdir -p /foo && mkdir -p /foo/bar works correctly
mkdir -p foo/bar works correctly
mkdir /foo/bar failed as expected (correct)
mkdir foo/bar failed as expected (correct)
mkdir -p /foo/bar fails


7 commentaires

Qu'entendez-vous par «Il travaille-t-il en fait dans / TMP / ... pas le réel / usr / local / ...»? Chroot?


FWIW, j'imagine que l'utilisation de $ * dans l'écho est de sorte que l'écho reçoit un paramètre contenant toute la ligne de commande, plutôt que les n paramètres, un pour chaque argument, il aurait été utilisé s'il était utilisé. C'est une chose très mineure de Neeténess et d'efficacité. Il a l'air étrange assis juste à côté d'une utilisation de $ @, cependant.


@Tom, ce serait ma supposition. J'ai besoin de Sudo pour que cela fonctionne du tout, mais cela ne fait pas une réelle installation (ce que je voulais depuis que je veux juste créer le paquet). Je ne sais pas pourquoi je dois du tout sudo, mais je peux vivre avec ça. Et merci pour l'explication de $ * vs. $ @!


@tom Il y a une différence entre "$ *" et "$ @"


@Tom, je lis à travers la source de CheckInstall, semble avoir l'air d'intercepter des appels comme MKDIR (), etc. et les remplacer par ses propres versions. Doit être un bug là quelque part. Donc, il n'utilise probablement pas Chroot.


C'est Un bug .


Vient de trébucher sur ce mkdir -p limitation de chemin absolue. Assez ennuyeux. Mais dans votre dernier commentaire, vous dites "Malgré l'échec, il est capable de créer le premier niveau de répertoire" mais cela ne se produit pas pour moi. Si tel était le cas, vous pourriez simplement exécuter la même commande à quelques reprises jusqu'à ce qu'il ait franchi chaque étape de répertoire, mais cela ne se produit pas.


3 Réponses :


2
votes

mkdir -p ne fonctionne pas comme si c'est une version checkInstall de MKDIR, pas le "vrai" mkdir. Doit être un bogue dans CheckInstall qui permet de fonctionner un peu différemment.

Ce correctif fonctionne autour du bogue: xxx


0 commentaires

21
votes

Utiliser

Set "TRANSLATE=0"


2 commentaires

Il a été réparé il y a longtemps, il y a longtemps, mais sa version n'est toujours pas en version de version. Quoi qu'il en soit, c'est un excellent conseil.


Évidemment, cela ne fonctionne pas si vous avez besoin de traduction du système de fichiers, c'est-à-dire si vous n'avez pas d'accès root. Pas tant de solution, mais une solution de contournement très limite.



0
votes
sed -i -e 's/TRANSLATE=1/TRANSLATE=0/g' /etc/checkinstallrc

0 commentaires