2 votes

Quelle est la méthode officielle de Debian/Ubuntu pour installer de nouveaux fichiers de configuration dans les répertoires des utilisateurs ?

Je suis en train de créer un paquet qui inclut des paramètres par défaut pour les utilisateurs. Des choses qui apparaissent généralement sous ~/.<some-name> o ~/.config/<app>/<some>.conf et autres fichiers similaires.

Dans la plupart des cas, ces fichiers sont installés dans le répertoire squelette ( /etc/skel ), mais ceux-ci ne seront installés que dans les répertoires personnels des nouveaux utilisateurs. J'aimerais que les utilisateurs existants reçoivent également les fichiers au moment de l'installation du paquet.

Que dit le standard Debian à ce sujet ?


Pour un exemple concret, j'ai un .lessfilter script que j'aimerais ajouter à mon paquet personnel de manière à ce qu'il soit installé sur toutes mes machines.

Ainsi, dans mon alex-tools.install que j'ai :

scripts/.lessfilter   /etc/skel

Je sais que je peux créer un alex-tools.postinst script comme suit (pas encore testé, à utiliser avec précaution) :

#!/bin/sh -e
#
# Finish up the installation

#DEBHELPER#

# Source debconf library.
. /usr/share/debconf/confmodule

if [ "$1" = "configure" ]
then
    # Install files in user folders
    #
    for u in /root /home/*
    do
        if ! test -f "${u}/.lessfilter"
        then
            cp /etc/skel/.lessfilter "${u}/.lessfilter"
            chmod 700 "${u}/.lessfilter"
            chown "${u}" "${u}/.lessfilter"
        fi
    done
fi

Mais je pense que cela n'est peut-être pas considéré comme "légal" dans Debian et qu'il y a peut-être une façon plus propre de l'implémenter ?

Y a-t-il quelque chose à ce sujet dans les références de Debian ?

1voto

Andrew Lowther Points 3661

Je ne suis pas sûr qu'il y ait des recommandations officielles concernant la création d'une configuration par utilisateur pendant l'installation du paquet, mais les liens que j'ai trouvés le découragent certainement. Cependant, si j'installais votre paquet, voici ce que je ferais. avis sur la façon dont j'aimerais qu'il soit conçu.

Installation des fichiers de configuration

De nombreux programmes vérifient d'abord l'emplacement d'une configuration globale (par ex. /etc/my_program ) avant de vérifier une configuration par utilisateur (par ex. ~/.my_program ). Dans la mesure du possible, la configuration doit être placée à l'emplacement global.

Votre exemple concret d'installation d'un fichier de configuration par utilisateur pour ~/.lessfilter est intéressante parce que cette n'a pas de fichier de configuration globale option. Dans ce cas, si vous fournissez le paquet my_package alors il pourrait

  • créer une configuration globale à /usr/share/my_package/lessfilter
  • ajouter un script. /etc/profile.d/my_package avec un contenu tel que

    [ -f "${HOME}/.lessfilter" ] || cp /usr/share/my_package/lessfilter "${HOME}/.lessfilter"

Cela permettrait une grande flexibilité. L'inconvénient évident est que /etc/profile pourrait n'affecter que les sessions interactives Bash, et vous pourriez avoir besoin de prendre en charge d'autres scénarios.

Liens

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X