local padrão do postgresql ao instalar através do apt-get

15

Quando você instala o postgresql no 14.04, ele coloca o principal programa do servidor postgres em:

/usr/lib/postgresql/9.3/bin/postgres

o diretório de dados em que todos os clusters de banco de dados serão armazenados em:

/var/lib/postgresql/9.3/main

e o arquivo de configuração em:

/etc/postgresql/9.3/main/postgresql.conf

Agora eu posso entender por que o postgresql.conf e outros arquivos de configuração estão armazenados em /etc/postgresql/9.3/main. Afinal, / etc é onde os arquivos de configuração são armazenados em um sistema Linux.

No entanto, por que colocar a área de armazenamento do banco de dados em / var / lib? Eu posso entender / var, já que esse é o local para dados não estáticos e os bancos de dados são não estáticos. Mas por que / var / lib em particular?

Além disso, acredito que / bin é para programas necessários para a inicialização. / usr / bin é para programas incluídos na distribuição. e / usr / local / bin deve ser para programas não incluídos na distribuição, mas disponíveis para uso em todo o sistema. E, como o postgresql se destina ao uso em todo o sistema, ele deve estar disponível em / usr / local / bin. No entanto, eles colocam em / usr / lib, o que não faço ideia do porquê.

Por que faço essa pergunta? Porque sem ordem e estrutura, é difícil lembrar a localização dos programas que você usa todos os dias.

Donato
fonte

Respostas:

11

No padrão de hierarquia do sistema de arquivos, `/ var / lib / é declarado como (em itálico a parte mais importante):

5.8.1 Finalidade

Essa hierarquia contém informações de estado pertencentes a um aplicativo ou sistema. Informações de estado são dados que os programas modificam enquanto são executados e pertencem a um host específico. Os usuários nunca precisam modificar arquivos em / var / lib para configurar a operação de um pacote.

As informações de estado geralmente são usadas para preservar a condição de um aplicativo (ou um grupo de aplicativos inter-relacionados) entre chamadas e entre instâncias diferentes do mesmo aplicativo. As informações de estado geralmente devem permanecer válidas após uma reinicialização, não devem estar registrando saída e não devem ser dados em spool.

Um aplicativo (ou um grupo de aplicativos inter-relacionados) deve usar um subdiretório de / var / lib para seus dados. Existe um subdiretório necessário, / var / lib / misc, destinado a arquivos de estado que não precisam de um subdiretório; os outros subdiretórios devem estar presentes apenas se o aplicativo em questão estiver incluído na distribuição.

/ var / lib / é o local que deve ser usado para todo o suporte ao pacote de distribuição. Distribuições diferentes podem usar nomes diferentes, é claro.

Em resumo: / var / lib / é para dados usados ​​localmente.

Portanto, faz todo sentido colocar os dados de um banco de dados no diretório / var / lib / {mysql | postgress} /, mas ... o FHS é um padrão criado principalmente para uso por distribuições . Como usuário, você é livre para colocar seus dados onde quiser e isso é principalmente uma questão de opinião.


Você está entendendo mal a palavra "local". / usr / local / bin / não é para o software do sistema, mas para o seu próprio software (basicamente qualquer coisa com "local" nunca deve ser tocada pelo sistema. Como explicado pelo FHS:

/ usr / local /

4.9.1 Finalidade

A hierarquia / usr / local é para ser usada pelo administrador do sistema ao instalar o software localmente. Ele deve ser protegido contra substituição quando o software do sistema for atualizado. Pode ser usado para programas e dados compartilháveis ​​entre um grupo de hosts, mas não encontrados em / usr. O software instalado localmente deve ser colocado em / usr / local em vez de / usr, a menos que esteja sendo instalado para substituir ou atualizar o software em / usr.

Um executável instalado a partir do software do sistema nunca deve ir para nada local.


Agora para / usr / lib / .

4.7.1 Finalidade

/ usr / lib inclui arquivos de objetos, bibliotecas e binários internos que não devem ser executados diretamente por usuários ou scripts de shell. Os aplicativos podem usar um único subdiretório em / usr / lib. Se um aplicativo usar um subdiretório, todos os dados dependentes da arquitetura usados ​​exclusivamente pelo aplicativo deverão ser colocados dentro desse subdiretório.

postgressql provavelmente é um daemon iniciado na inicialização? Nesse caso, faz sentido colocá-lo aqui. Você não deve usar o comando sozinho, mas iniciar um serviço. Os arquivos em / usr / lib / tendem a ter seu próprio usuário e grupo e / ou um daemon que restringe o acesso a / var / lib (somente o mysqld pode acessar / var / lib / mysql / por exemplo; será o mesmo para postgressql)

Rinzwind
fonte