Estou desenvolvendo um daemon que precisa armazenar muitos dados de aplicativos e notei que no meu sistema (Fedora 15), há um /usr/local/etc
diretório.
Decidi instalar o meu daemon /usr/local/bin
e preciso de um local para meus arquivos de configuração.
Eu não vi isso na Wikipedia . Isso não é padrão ou é de fato o local padrão dos programas instalados /usr/local/bin
para armazenar arquivos de configuração?
Por uma razão, eu quero comercializar isso para sys-admins, e obter algo assim errado não é um ótimo ponto de venda ...
directory-structure
fhs
beatgammit
fonte
fonte
/etc/myapp
? Se eu estivesse procurando alterar uma configuração, seria o primeiro lugar em que eu procuraria./usr/local/bin
->/usr/local/etc
), mas as convenções vencem nesse caso.Respostas:
/usr/local
geralmente é para aplicativos criados a partir da fonte. ou seja, eu instalo a maioria dos meus pacotes usando algo parecidoapt
, mas se eu fizer o download de uma versão mais recente de algo ou de um software que não faça parte da minha distribuição, eu o compilaria da fonte e colocaria tudo na hierarquia `/ usr / local '.Isso permite a separação do restante da distribuição.
Se você está desenvolvendo um software para os outros, você deve projetá-lo para que ele possa ser instalado em qualquer lugar as pessoas querem, mas deve padrão para os regulares FHS especificadas diretórios do sistema quando especificar o prefixo para ser
/usr
(/etc
,/usr/bin
, etc.)ou seja,
/usr/local
é para seu uso pessoal, não deve ser o único local para instalar o seu software.Leia bem o FHS e use as ferramentas padrão do Linux para permitir que sua fonte seja criada 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 inseri-los
/usr/local
se desejarem. ou os diretórios regulares do sistema, se assim o desejarem.fonte
/usr/local/etc
é padrão para arquivos de configuração para esses tipos de programas.Uma resposta muito curta
/ etc é usado pelo seu sistema operacional para seus arquivos de configuração
/ usr / local / etc pode ser usado por seus arquivos de configuração por você e seu software instalado adicionalmente
fonte
/usr/local/etc
raramente é usado no mundo Linux. Mas a decisão de arquivos de configuração do armazenamento em/etc
,/usr/local/etc
ou algum outro local é geralmente feito em tempo de compilação (e muitas vezes pode ser substituído através de uma opção de linha de comando ou variável de ambiente). Realmente não importa qual é o padrão ao compilar, apenas certifique-se de que seja fácil de configurar (normalmente uma opção para--sysconfdir
, após o autoconf). Se o seu daemon estiver empacotado para uma distribuição, o executável entrará/usr/sbin
(o padrão ao criar a partir da fonte/usr/local/sbin
) e a configuração em/etc
.Observe que
/etc
este não é o lugar para "muitos dados de aplicativos". Isso entra/var
. O padrão ao construir a partir da origem pode ser/var/local/mydaemon
ou/var/lib/mydaemon
; Novamente, não existe uma convenção forte para o padrão ao criar a partir do código-fonte. Deve haver uma maneira de alterar o padrão em tempo de compilação (normalmente comconfigure --localstatedir
) e o padrão em 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).fonte
/usr/local/etc
não é usado com muita frequência? Eu gosto da idéia de manter os arquivos de configuração no mesmo nível do sistema de arquivos que o binário.bin
elib
e assim por diante, que pode ser reinstalado) ao vivo no mesmo lugar.Como usuário do Arch, eu evitaria / usr / local em conjunto e usaria apenas / etc para configuração. Ao instalar a partir do código-fonte, prefiro escrever um pequeno arquivo PKGBUILD enquanto estou nele e possivelmente enviá-lo para o Arch User Repository (AUR), para outros e para mim em outro computador no futuro. A julgar pelo número de pacotes no AUR e pela velocidade com que eles são criados, não estou sozinho pensando dessa maneira. Isso aumenta as chances de que um pacote esteja disponível para todos, em vez de precisar instalá-lo a partir da fonte, além de poder evitar locais obsoletos como / usr / local.
O Debian também parece gostar da idéia de construir um pacote da fonte em vez de instalar qualquer coisa no / usr / local, portanto utilitários como o checkinstall .
Criar um pacote da fonte que você deseja instalar seria uma boa maneira de acompanhar onde estão os arquivos e garantir que alguns deles não sejam substituídos inconsistentemente 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 abandonaria completamente / 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.
fonte