Je veux configurer un script qui modifie automatiquement le fuseau horaire sur une machine (exécutant ubuntu 11.10) et définit également les bonnes valeurs dans la debconf
base de données. J'ai essayé ce qui suit, mais cela ne fonctionne pas (à la fin, le fuseau horaire actuel reste inchangé, et si j'exécute manuellement la dpkg-reconfigure tzdata
commande, les valeurs sélectionnées sont en effet les anciennes):
#!/bin/sh -e
echo "tzdata tzdata/Areas select Europe" | debconf-set-selections
echo "tzdata tzdata/Zones/Europe select Madrid" | debconf-set-selections
echo "tzdata tzdata/Zones/America select " | debconf-set-selections
dpkg-reconfigure -f noninteractive tzdata
Donc, maintenant, je le fais en jouant avec les fichiers /etc/localtime
et /etc/timezone
directement, mais je préfère la méthode dpkg-reconfigure
et la debconf
manière.
Je viens de découvrir qu'avec Debian Stretch (9), vous devez également changer / etc / localtime, donc quelque chose comme:
est nécessaire. Pour modifier la réponse d'Andrekeller, vous devez:
la source
ln -fs ....
ligne disgracieuse par simplerm -f /etc/localtime
, et cela fonctionnera toujours (et debconf recréerait/etc/localtime
avec des valeurs correctes); voir ma réponse pour plus de détails.Pour utiliser debconf, avant d'appeler dpkg-reconfigure, vous devez également supprimer
/etc/localtime
et/etc/timezone
. Attention également aux éventuels espaces supplémentaires (comme dans votre question!) Qui ne sont pas bénins.Donc, "façon debconf" qui fonctionne (dans Debian Stretch) serait:
La raison en est que le script de configuration tzdata essaie d'être intelligent, et s'il a déjà été configuré auparavant ou si l'utilisateur a manipulé manuellement les fuseaux horaires, il se comportera différemment.
SUPPLÉMENTAIRE
Pour déboguer un problème similaire vous-même, vous devez d'abord:
qui fournirait les informations suivantes:
ce qui vous montrerait qu'il définit avec force les valeurs avant de les demander à l'utilisateur (écrasant ainsi les valeurs que vous définissez avec
debconf-set-selections
).Ensuite, vous changeriez le shebang
/var/lib/dpkg/info/tzdata.config
de#!/bin/sh
en#!/bin/sh -x
, et suivriez le déroulement du programme, où vous verriez qu'il le fait:en regardant,
/var/lib/dpkg/info/tzdata.config
vous trouverez ceci:ce qui explique pourquoi la réponse @fiction fonctionne. En regardant plus dans le script, vous constaterez que la réponse @andrekeller fonctionne également dans les versions Debian plus récentes si vous supprimez '/ etc / localtime'.
Espérons que cette aide au débogage vous aidera lorsque la prochaine version de Debian rendra le script encore plus intelligent et que les réponses existantes deviendront invalides également. Plus d'informations sur le débogage de debconf peuvent être trouvées dans debconf-devel (7)
la source