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

9

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

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

o diretório de dados onde 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 porque o postgresql.conf e outros arquivos de configuração estão armazenados em /etc/postgresql/9.3/main. Afinal, o / 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, uma vez que esse é o lugar para dados não estáticos e 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 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 assim, como o postgresql é destinado ao uso em todo o sistema, ele deve estar disponível em / usr / local / bin. No entanto, eles colocam em / usr / lib, o que eu não tenho idéia do porquê.

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

    
por Donato 03.05.2015 / 18:20

1 resposta

7

No Padrão de Hierarquia do Sistema de Arquivos, '/ var / lib / é declarado como (em itálico a parte mais importante):

  

5.8.1 Propósito

     

Esta hierarquia contém informações de estado relativas a um aplicativo ou   o sistema. Informações de estado são dados que os programas modificam enquanto   executar, e que pertence a um host específico. Usuários nunca devem precisar   modificar arquivos em / var / lib para configurar a operação de um pacote.

     

A informação do estado é geralmente usada para preservar a condição de   aplicação (ou um grupo de aplicações inter-relacionadas) entre   invocações e entre diferentes instâncias do mesmo aplicativo.   As informações de estado geralmente devem permanecer válidas após uma reinicialização,   não ser registro de saída, e não deve ser dados em spool.

     

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

     

/ var / lib / é o local que deve ser usado para toda a distribuição   suporte de embalagem. Distribuições diferentes podem usar nomes diferentes,   Claro.

Resumindo: / var / lib / é para dados que são usados localmente.

Portanto, faz todo o 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 ser usado por distribuições . Como usuário, você é livre para colocar seus dados onde quiser e é principalmente uma questão de opinião.

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

/ usr / local /

  

4.9.1 Propósito

     

A hierarquia / usr / local é para ser usada pelo administrador do sistema quando   instalar software localmente. Precisa estar a salvo de ser   sobrescritos quando o software do sistema é atualizado. Pode ser usado para   programas e dados que são compartilháveis entre um grupo de hosts, mas não   encontrado em / usr. O software instalado localmente deve ser colocado dentro   / 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 qualquer local.

Agora, para / usr / lib / .

  

4.7.1 Propósito

     

/ usr / lib inclui arquivos de objetos, bibliotecas e binários internos que   não se destina a ser executado diretamente pelos usuários ou shell   scripts. Os aplicativos podem usar um único subdiretório   / usr / lib. Se um aplicativo usar um subdiretório, todos   dados dependentes de arquitetura usados exclusivamente pelo aplicativo   ser colocado dentro desse subdiretório.

postgressql é provavelmente um daemon iniciado na inicialização? Se assim for, 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; isto será o mesmo para postgressql)

    
por Rinzwind 03.05.2015 / 19:04