Eu queria fazer a mesma coisa, mas escolhi usar um repositório privado usando reprepro
sobre PPAs. Todos os meus clientes estão na mesma LAN, então é mais simples para mim.
Eu acho que isso é bastante viável, independentemente de você usar PPAs ou um repositório privado.
- A modificação dos arquivos de configuração existentes é melhor tratada usando
dpkg
diversions, IMO.config-package-dev
é uma bênção para isso. O Debian Wiki é um bom ponto de partida para informações sobre isso. - Adicionar arquivos de script ou seu próprio software não é tão difícil empacotando-os. Existem muitos guias de embalagem. Novamente, o wiki do Debian é um excelente ponto de partida. É mais simples criar pacotes binários do que a introdução, que será o caso dos scripts e arquivos de configuração.
- Adicionar novos softwares de outros repositórios pode ser feito tornando-os dependências de seus pacotes. Especifique uma versão exata ou use
apt
pinning . - Upgrades autônomos para repositórios personalizados já são tratados: Como ativar atualizações automáticas silenciosas para qualquer repositório? Não sei de nenhuma maneira que um servidor possa enviar atualizações para um cliente. Você pode querer considerar
puppet
(viakick
ing) ou sua laia. Ou você pode escrever um script no servidor que usa o SSH para executar atualizações no cliente. Ou ter um script que verifique atualizações quando a rede aparecer. - Acima de tudo, certifique-se de que seus scripts de manutenção de pacote (
preinst, postinst, prerm, postrm
) sejam idempotentes e que a remoção do pacote desfaça todas as alterações. Esses scripts podem fazer muitas coisas, mas nada afetaapt
oudkpg
. Minimize o trabalho realizado nesses scripts.
No meu caso, eu uso um pacote para configurar o LDAP e NTP, adicionar um% globalvimrc
habilitando opções comuns, fazer várias alterações de configuração (como habilitar sudo
para um grupo, banindo o desligamento), adicionando um local não privilegiado user / group, etc. Outro pacote adiciona nosso certificado de CA e chave de assinatura de repositório auto-gerados e os marca como confiáveis no script postinst
e adiciona uma entrada em sources.list.d
para o nosso repositório.
Ainda não converti todos os sistemas para esse processo, então ainda não posso comentar sobre sua eficácia.