Como você testaria os diretórios disponíveis que um gerenciador de pacotes instalaria?

Como você testaria os diretórios disponíveis que um gerenciador de pacotes instalaria?

Estou tentando fazer alguns scripts de instalação para um sistema que possui múltiplas dependências e descobri como fazer --dry-runcom o gerenciador de pacotes (Ubuntu, aptneste caso) antes de fazer qualquer instalação real.

No entanto, após a instalação dos pacotes, é necessário copiar determinados arquivos de configuração. Como eu verificaria isso para ter certeza de que os destinos estão disponíveis antes de confirmar a instalação?

Não quero executar o script para ter as coisas parcialmente instaladas e colocar o sistema em um estado imprevisível, mas se o pacote envolvido não existir, os diretórios de configuração também não existiriam para eu verificar.

Digamos que eu queira copiar para base.confto /etc/package/system/, mas /etc/package/nem existe. Se o destino estiver configurado incorretamente (por exemplo, escrito incorretamente como sytem), ocorrerá um erro após a instalação do pacote durante a cópia, que pode ser um dos vários arquivos de configuração que já foram copiados, então não tenho como "revertê-lo" por assim dizer. Meu objetivo final é ter um processo de instalação que não deixe para trás arquivos parcialmente copiados.

O cenário de falha ocorre quando vários arquivos precisam ser copiados. Se houver 3 arquivos para copiar e o destino do terceiro arquivo estiver configurado incorretamente, ele ainda copiará os 2 primeiros arquivos e gerará erro no terceiro. Os arquivos residuais causarão mais erros na próxima execução.

PS: Suspeito que talvez precise criar um pacote real para lidar com as dependências, mas a complexidade e o tempo necessários são substancialmente maiores e não quero investir nisso agora.

Responder1

Você pode examinar o conteúdo dos pacotes com antecedência, mesmo sem baixá-los; veja apt-filee seu listcomando.

No entanto, isso nunca lhe dará uma imagem completa, e você não pode construir uma imagem completa das alterações feitas por um pacote arbitrário sem instalá-lo: os pacotes podem enviar scripts de mantenedor que realizam alterações adicionais. Isso significa que um pacote pode criar um diretório sem que isso seja evidente nos metadados do pacote, e você só pode descobrir isso analisando os scripts do mantenedor, levando em consideração todos os seus efeitos colaterais e os das dependências do pacote.

No seu cenário, suspeito que você precisará de uma abordagem em duas fases:

  • instale todos os pacotes necessários, usando o sistema de gerenciamento de pacotes;
  • verifique todas as expectativas que você tem em relação ao layout do diretório resultante e aos arquivos instalados, e
    • se suas expectativas forem atendidas, copie todos os seus arquivos adicionais no lugar;
    • se não estiverem, limpe todos os pacotes que você instalou (para --autoremoveque quaisquer dependências instaladas automaticamente também sejam removidas).

informação relacionada