Documentação
Desenvolvimento de patch
Se ainda não leu o documentação geralPor favor, faça-o agora.
Olá, exemplo de patch.
tklpatch-example helloworld
Isto executa o tklpatch- exemplo para criar um patch de exemplo no diretório helloworld/. Se for necessário um controlo mais fino no seu patch, então pode ser criado um exemplo avançado usando o --advanced Troca.
Quando este patch é aplicado a um ISO, ele irá criar um novo ISO em que o Olá. o pacote está instalado e a mensagem do dia foi alterada. Vamos tentar no turnkey-core.iso (que nós baixamos anteriormente) e ver tklpatch em ação:
tklpatch turnkey-core.iso helloworld
Nos bastidores, quando tklpatch aplicou o nosso patch helloworld, seguiu as instruções no arquivo 'conf' do patch:
$ cat helloworld/conf
#!/bin/bash -ex
install()
{
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y \
-o DPkg::Options::=--force-confdef \
-o DPkg::Options::=--force-confold \
install $@
}
# installs hello - a highly useful package
install hello
# tell the world what we've done!
echo 'Hello world - I just patched TurnKey!' >> /etc/issue
Exemplo de patch Drupal5
Para fins educacionais, tklpatch inclui um patch de exemplo mais complexo que irá transformar TurnKey LAMP em um Drupal5 appliance. /usr/share/tklpatch/examples quando tklpatch é instalado via apt-get, ou /usr/local/share/tklpatch/examples quando instalado a partir da origem. O patch de exemplo também está disponível em github para referência.
Criar o esqueleto de um novo patch do zero
mkdir mypatch mkdir mypatch/debs mkdir mypatch/overlay touch mypatch/conf; chmod +x mypatch/conf
Agora você precisa descobrir como seu patch deve mudar o appliance remetido para obter o resultado que deseja. É muitas vezes mais fácil descobrir isso interativamente em um sistema "vivo" por tentativa e erro. Você pode configurar um ambiente de teste instalando o appliance que deseja patch em uma VM e, em seguida, experimentando para encontrar as mudanças que você precisa fazer. Você também pode experimentar em um ambiente chroot.
Dicas e truques de desenvolvimento
TKLPatch tem um design modular que permite desenvolver o seu patch incrementalmente dentro de uma instância appliance virtual instalada ou no sistema de arquivos raiz extraído de um ISO um ciclo de desenvolvimento no qual você ajustar e testar em rápida sucessão é muitas vezes mais produtivo do que um que tem um longo ciclo de feedback.
Como configurar e experimentar em um ambiente chroot:
tklpatch-extract-iso path/to/image.iso
Isto irá extrair o sistema de ficheiros do appliance e o cdroot do ISO. Poderá então chroot para o sistema de ficheiros do appliance. Dentro do chroot é fácil experimentar para descobrir o que seu patch deve fazer. Por exemplo, você pode instalar manualmente pacotes, fazer ajustes na configuração, etc. Quando você sabe o que precisa ser feito, atualize o mypatch para refleti-lo (por exemplo, adicionando instruções para conf, arquivos para a sobreposição, etc.)
tklpatch-chroot path/to/image.rootfs
Uma vez concluído, você pode remover os diretórios temporários rootfs e cdroot que você experimentou, e testar seu patch (de preferência em uma máquina virtual) aplicando-o ao seu ISO de escolha:
tklpatch path/to/image.iso path/to/mypatch
Próximo. publicá-lo.