Qual é a diferença entre / etc e / usr / local / etc

23

Estou desenvolvendo um daemon que precisa armazenar muitos dados de aplicativos, e notei que no meu sistema (Fedora 15) existe um diretório /usr/local/etc .

Eu decidi instalar meu daemon em /usr/local/bin e preciso de um lugar para meus arquivos de configuração.

Eu não vi isso em Wikipedia . Isso é fora do padrão ou é, na verdade, o local padrão para programas instalados em /usr/local/bin para armazenar arquivos de configuração?

Razão de ser, eu quero comercializar isso para administradores-de-sistema, e obter algo assim errado não é um ótimo ponto de venda ...

    
por beatgammit 23.06.2011 / 07:02

4 respostas

23

/usr/local é geralmente para aplicativos criados a partir da origem. Ou seja, eu instalo a maioria dos meus pacotes usando algo como apt , mas se eu baixar uma versão mais recente de algo ou um software que não faz parte da minha distribuição, eu construí-lo da fonte e colocar tudo no '/ usr / local 'hierarquia.

Isso permite a separação do restante da distribuição.

Se você está desenvolvendo um software para outros, você deve projetá-lo para que ele possa ser instalado em qualquer lugar que as pessoas queiram, mas deve ser o padrão para o padrão FHS especifica os diretórios do sistema quando eles especificam o prefixo como /usr ( /etc , /usr/bin , etc.)

i.e. /usr/local é para seu uso pessoal, não deve ser o único lugar para instalar seu software.

Tenha uma boa leitura do FHS e use as ferramentas padrão do Linux para permitir que seu fonte a ser construída e instalada em qualquer lugar para que os construtores de pacotes para as várias distribuições possam configurá-los conforme necessário para sua distribuição, e os usuários possam colocá-los em /usr/local se desejarem ou nos diretórios normais do sistema se desejo.

    
por 23.06.2011 / 07:10
6

Uma resposta muito curta

/ etc é usado pelo seu sistema operacional para seus arquivos de configuração

/ usr / local / etc pode ser usado para seus arquivos de configuração por você e seu software instalado adicionalmente

    
por 23.06.2011 / 15:26
4

/usr/local/etc é raramente usado no mundo do Linux. Mas a decisão de armazenar arquivos de configuração em /etc , /usr/local/etc ou algum outro local geralmente é feita em tempo de compilação (e muitas vezes pode ser substituída por meio de uma opção de linha de comando ou variável de ambiente). Na verdade, não importa qual é o padrão ao compilar, apenas certifique-se de que é fácil de configurar (normalmente uma opção para --sysconfdir , seguindo o autoconf). Se o seu daemon for empacotado para uma distribuição, o executável entrará em /usr/sbin (o padrão ao compilar a partir da origem deve ser /usr/local/sbin ) e a configuração em /etc .

Observe que /etc não é o lugar para "muitos dados de aplicativos". Isso vai para /var . O padrão ao criar a partir da origem pode ser /var/local/mydaemon ou /var/lib/mydaemon ; novamente, não existe uma convenção strong de qualquer forma para o padrão ao criar a partir da origem. Deve haver uma maneira de alterar o padrão de tempo de compilação (normalmente com configure --localstatedir ) e o padrão de tempo de execução (com uma configuração em um arquivo de configuração, possivelmente com uma opção de linha de comando ou variável de ambiente).

    
por 23.06.2011 / 12:07
1

Como um usuário do Arch, eu evitaria / usr / local no geral e usaria apenas / etc para configuração. Ao instalar a partir do código-fonte, eu prefiro escrever um pequeno arquivo PKGBUILD enquanto estou nele, e possivelmente carregá-lo para o Arch User Repository (AUR), tanto para os outros como para mim em outro computador no futuro. A julgar pelo número de pacotes no AUR, e a velocidade com que eles são criados, eu não estou sozinho em pensar dessa maneira. Isso aumenta as chances de que um pacote esteja disponível, em vez de precisar instalá-lo a partir do código-fonte, e de poder evitar locais obsoletos, como / usr / local.

O Debian também parece gostar da idéia de construir um pacote da fonte ao invés de instalar qualquer coisa em / usr / local, daí utilitários como checkinstall .

A criação de um pacote da fonte que você deseja instalar seria uma boa maneira de rastrear onde os arquivos estão e garantir que alguns deles não sejam sobrescritos de forma inconsistente por outro pacote ou por outro "make install". Desinstalar com "make uninstall" não é uma boa solução. Informações sobre qual versão está instalada é outra coisa que os gerenciadores de pacotes modernos são bons em acompanhar.

Eu apenas abdicaria / usr / local completamente. Não é um bom lugar para colocar nada, não para instalar pacotes (os diretórios do sistema são mais adequados) e não para os usuários.

    
por 23.06.2011 / 12:30