Que signifie le suffixe .d dans Linux?

33

Je configure Apache et par défaut, j'ai les répertoires /etc/httpd/confet /etc/httpd/conf.d. Quelle est la différence?

Vous pouvez également voir le suffixe dans de nombreux autres répertoires comme /etc/init.d, /etc/cron.d, etc ...

SCL
la source
1
cela signifie qu'il fait référence à un démon
dynamique
8
@ yes123: Cette théorie ne cadre pas bien avec /etc/apt/sources.list.d/, /etc/profile.detc.
Martin
D'après les réponses données par Haakon et Deltaray, je me demande si cela .dsignifie default. Ce n'est pas, selon les informations ici, mais cela semble logique. Peut-être que je peux aller de l'avant et penser de cette façon?
Smandoli

Réponses:

44

"d" signifie répertoire et un tel répertoire est un ensemble de fichiers de configuration qui sont souvent des fragments inclus dans le fichier de configuration principal. Le but est de compartimenter les problèmes de configuration pour augmenter la maintenabilité.

Lorsque vous avez une distinction telle que /etc/httpd/confvs /etc/httpd/conf.d, c'est généralement le cas qui /etc/httpd/confcontient différents types de fichiers de configuration, alors qu'un .drépertoire contient plusieurs instances du même type de fichier de configuration (telles que "modules à charger", "sites à activer", etc. ), et l'administrateur peut ajouter et supprimer si nécessaire.

Haakon
la source
4
mais conf est aussi un répertoire, donc si les deux sont des répertoires, quelle est la différence? Vous avez raison à propos de ServerFault, est-il possible de le déplacer?
SCL
Ajout d'un peu sur la distinction, espérons que ce n'est pas complètement déroutant :-)
Haakon
7
Les répertoires .d sont également chargés automatiquement. Par exemple, cron vérifiera cron.d et analysera tous les fichiers qu'il contient. La configuration principale d'Apache aura quelque chose comme "include conf.d / *" qui inclura tous les fichiers de conf.d lors du rechargement. C'est aussi très pratique pour la gestion de paquets de modules. Le gestionnaire de packages n'a pas à tenter de modifier les fichiers, il a simplement déposé la configuration du module dans le répertoire .d approprié, puis a rechargé le service.
Niall Donegan
13

L’existence de cette convention de dénomination de répertoire est principalement motivée par la gestion plus facile des paquets de fichiers de configuration. Qu'il s'agisse de rpm, deb ou autre, il est beaucoup plus facile (et probablement plus sûr) de pouvoir déposer un fichier dans un répertoire afin de l'inclure automatiquement dans la configuration d'un programme au lieu d'essayer de modifier un fichier de configuration global.

Logrotate en est un bon exemple. Dans le répertoire /etc/logrotate.d se trouvent des fichiers de configuration pour pratiquement toutes les applications que vous avez installées et qui tiennent un journal dans / var / log . Certains sont regroupés dans la configuration de syslog car presque tous les systèmes ont un fichier de messages, wtmp et lastlog. Mais si vous installez Apache sur votre système, vous avez besoin d’un moyen simple d’ajouter automatiquement la configuration pour la rotation des journaux d’Apache. Il suffit donc d’un fichier de configuration appelé httpd dans /etc/logrotate.d.et logrotate est configuré pour inclure les fichiers dans ce répertoire. Chaque paquet appartient au paquet du démon et si vous supprimez le paquet, le fichier sera supprimé. C'est fondamentalement un moyen de modulariser les fichiers de configuration. Notez que cela doit être pris en charge par le programme, ce n'est pas quelque chose d'automatique que le système fait pour vous ou quelque chose. Les programmes qui le font ont généralement une directive de configuration appelée include qui spécifie l'emplacement de ce répertoire dans le système de fichiers.

logrotate.d pourrait même être le premier endroit où cette convention a été utilisée en dehors des répertoires init.d et rc.d pour les scripts init.

Deltaray
la source