O que o sufixo .d significa no Linux?

31

Estou configurando o apache e, por padrão, tenho os diretórios /etc/httpd/conf e /etc/httpd/conf.d . Qual a diferença?

Você também pode ver o sufixo em muitos outros diretórios como /etc/init.d , /etc/cron.d , etc ...

    
por SCL 25.02.2011 / 09:50

2 respostas

41

"d" significa diretório e tal diretório é uma coleção de arquivos de configuração que geralmente são fragmentos incluídos no arquivo de configuração principal. O objetivo é compartimentar as preocupações de configuração para aumentar a manutenção.

Quando você tem uma distinção como /etc/httpd/conf vs /etc/httpd/conf.d , geralmente é o caso de /etc/httpd/conf conter vários tipos diferentes de arquivos de configuração, enquanto um diretório .d contém várias instâncias do mesmo tipo de arquivo de configuração (como "módulos para carregar", "sites para ativar", etc.) e o administrador pode adicionar e remover conforme necessário.

    
por 25.02.2011 / 09:55
13

A principal força motriz por trás da existência dessa convenção de nomenclatura de diretório é para facilitar o gerenciamento de pacotes de arquivos de configuração. Seja seu rpm, deb ou qualquer outro, é muito mais fácil (e provavelmente mais seguro) ser capaz de soltar um arquivo em um diretório para que ele seja automaticamente incluído na configuração de um programa ao invés de tentar editar um arquivo de configuração global.

Um bom exemplo disso é logrotate. No diretório /etc/logrotate.d estão os arquivos de configuração para praticamente todos os aplicativos que você instalou e que mantêm um log in / var / log . Alguns são agrupados na configuração do syslog porque quase todos os sistemas possuem um arquivo de mensagens, wtmp e lastlog. Mas se você instalar o Apache no seu sistema, você precisa de uma maneira fácil de adicionar automaticamente a configuração para girar os logs do Apache, então ele simplesmente libera um arquivo de configuração chamado httpd em /etc/logrotate.d e o logrotate é configurado para incluir os arquivos nesse diretório. Cada um é de propriedade do pacote para o daemon e, se você remover o pacote, ele removerá o arquivo. É basicamente uma maneira de modularizar arquivos de configuração. Note que isso precisa ser suportado pelo programa, não é algo automático que o sistema faça por você ou algo assim. Geralmente os programas que fazem isso têm uma diretiva de configuração chamada include que especifica onde esse diretório está localizado no sistema de arquivos.

logrotate.d pode até ser o primeiro local em que essa convenção foi usada fora dos diretórios init.d e rc.d para o init scripts.

    
por 25.02.2011 / 21:12