Empacotamento Debian, atualizações em um banco de dados

1

Tenho planejado atualizações consecutivas em um pacote Debian que tenho para uso interno em vários servidores.

Agora, as atualizações têm que acontecer uma após a outra em momentos diferentes e algumas das servidores podem pular várias versões, portanto, não é possível presumir que as atualizações aconteceram em um determinado servidor.

Então, eu sei o básico sobre o empacotamento debian, mas posso estar ignorando alguns recursos avançados que podem me ajudar aqui. Minha única ideia, por enquanto, é ter um script preinst e postinst bastante complexo que manipule inteiramente todo o intervalo de oldversion-newversion.

Alguma ideia melhor?

    
por Arkaitz Jimenez 27.11.2010 / 23:53

1 resposta

2

Falando como um desenvolvedor Debian, geralmente você teria apenas uma versão de um pacote em um arquivo, então ter várias versões que teriam que ser instaladas em sequência não seria ideal ou algo próximo a uma solução elegante. Os scripts de pré e pós-instalação podem ser usados para automatizar algumas funcionalidades de atualização, mas você precisaria manter esses scripts intimamente entre as versões para que isso funcionasse corretamente e poderia causar problemas se você tentasse remover ou fazer downgrade, a menos que você fizesse a validação adequada. os scripts.

Se você tiver alterações que precisam ser mantidas separadamente para garantir que sejam feitas em ordem, você pode usar um pacote principal 'meta' que pode ser instalado e depende do pacote atual mais recente. Você precisaria gerar pacotes separados para cada alteração e definir os controles apropriados para garantir a ordem correta. Isso exigiria um bom conhecimento da Política Debian a ser realizada, prestando atenção especial à seção 5.6.10 nas relações de pacote, como você precisaria para Pre-Depend na atualização anterior pacotes.

Pacotes separados podem ser mais trabalhosos, mas permitiriam que você fizesse coisas incrementalmente, mas a maneira mais ideal seria ter o pacote capaz de identificar e fazer as mudanças necessárias automaticamente. Se os arquivos de configuração já não estiverem usando ucf , isso seria aconselhável, pois facilitaria o gerenciamento deles no pacote se as modificações / atualizações manuais fossem executadas posteriormente.

Editar atualização:

Quando voltei para reler isso depois de dormir, notei que você estava falando sobre um banco de dados sendo atualizado. Nesse caso, acho que a embalagem poderia ser muito mais simples, desde que o próprio banco de dados tenha alguma forma de esquema de versão e as atualizações sequenciais estejam em arquivos separados que precisam ser executados apenas nos bancos de dados. Então, seria apenas uma questão de adicionar um novo arquivo de comandos para executar de forma ordenada, com base em qualquer versão que estivesse armazenada na tabela do banco de dados. Não é mais necessariamente um problema de embalagem como um problema de administração de banco de dados. Tudo o que o pacote precisa fazer é ter scripts pré e pós apropriados para verificar a versão do banco de dados existente e executar os scripts de comando SQL necessários no pacote para atualizá-lo.

    
por 28.11.2010 / 05:36