URL: https://linuxfr.org/users/3tus/journaux/bootsplash-et-alternative-binsh-dans-debian Title: Bootsplash et alternative /bin/sh dans Debian Authors: Lionel Draghi Date: 2005年03月06日T18:18:55+01:00 Tags: debian Score: 0 Je suis tombé par hasard sur l'excellent tutoriel [http://www.swisslinux.org/forums/sutra2275.php,(...)](http://www.swisslinux.org/forums/sutra2275.php,) qui explique comment installer BootSplash sur une Debian, avec un kernel non Debian (un CK en l'occurence). Le choix des fonds d'écrans disponibles empaquettés en deb, que l'on peut voir sur [http://www.bootsplash.de,(...)](http://www.bootsplash.de,) m'a donner envie de m'y remettre ce week-end. J'avais déja obtenu un beau résultat avec BootSplash dans le passé, mais je ne l'avais pas réinstallé après mon dernier crash disque. Et puis il y avait ce bug incompréhensible sur le postinst de sysv-rc-bootsplash : ` Paramétrage de sysv-rc-bootsplash (1.0.0-5) ... /var/lib/dpkg/info/sysv-rc-bootsplash.postinst: 42: function: not found ` Depuis le temps, je me suis dit que ça devait être réglé! Et bien non, le problème existe toujours. Mais cette fois ci, je me suis donné la peine de creuser. Je passe sur un problème de partage de fichiers de sysv-rc_2.86 appartenant aussi au paquet sysvinit, réglé à coup de `dpkg --force-overwrit` Le problème du postinst, c'est que le script /var/lib/dpkg/info/sysv-rc-bootsplash.postinst utilise une fonction, ce qui n'est pas du sh, mais que le fichier commence par le classique #! /bin/sh En temps normal, pas de problème, /bin/sh est divertit sur bash par défaut. Mais en toute logique, sh peut être fournit par tout shell compatible sh, même sans les extensions bash. C'était le cas pour moi, mon sh pointant sur dash. (Je ne sais plus comment dash a été installé chez moi, mais il me semble bien que c'était une suggestion de l'installateur Debian). Il existe plusieurs solutions simples pour régler le problème, comme par exemple retirer son statut de sh par défaut à dash par un dpkg-reconfigure dash, et vérifier ensuite que /bin/sh pointe bien sur bash, ou bien réécrire le postinst en question pour supprimer l'usage de function. J'ai choisit une autre voie : puisque postinst dépend de bash, autant officialiser la chose, et remplacer #! /bin/sh par #! /bin/bash dans /var/lib/dpkg/info/sysv-rc-bootsplash.postinst Evidemment c'est un bricolage, le packageur ne peut pas se contenter de faire ça. Moi, oui :-)