Articles

:Como aplicar um patch

Posted on

Introdução

Esta página explica como se pode aplicar um ficheiro de patch. O patch é um formato padrão, e há muitas opções de como aplicar um. Escolha o que for mais fácil para si.

Talvez o mais crítico seja a utilização da bandeira -p, que informa sobre a relação entre o directório onde o ficheiro de correcção está localizado e os ficheiros que serão corrigidos. Veja as referências abaixo para detalhes e NÃO assuma nada.

Aplique um patch no Windows usando gnuwin32

  • Descarregar e extrair o patch para windows a partir do sourceforge Coloquei o binário patch.exe em C:\bin (NOTA: As coisas são muito mais fáceis se o colocar num directório que não tenha espaços brancos.)
  • Descarregar e extrair o Moodle algures: C:\moodle
  • Descarregue o ficheiro de correcção e coloque-o no mesmo directório que colocou o Moodle (C:\moodle\password-policy-17.diff)
  • Abra o ficheiro de correcção com o Wordpad, e clique em ‘File’ >> ‘Save as…’, escolha um nome diferente para o ficheiro, por exemplo (‘mynewpatch.diff’) e “Guardar como tipo” >> ‘Documento de texto – formato MS-DOS’
  • Abrir uma janela de texto de comando, e digitar:
 cd \moodle c:\bin\patch.exe --dry-run -p1 < mynewpatch.diff

O número após a opção ‘-p’ pode variar dependendo do ficheiro de correcção, pois depende da forma como o ficheiro de correcção foi gerado. Consulte a página do manual do utilitário ‘patch’ para ver como funciona a opção ‘-p’. Pode também dar uma vista de olhos a este tutorial de difusão e patch.

    Deverá obter uma saída semelhante a esta (os nomes e quantidade de ficheiros corrigidos variam de patch para patch):
 patching file admin/settings/security.php patching file lang/en_utf8/admin.php patching file lib/moodlelib.php patching file login/change_password.php patching file login/signup.php patching file user/edit.php Hunk #1 succeeded at 430 (offset 2 lines).

Nesta fase, o patch não foi aplicado. Apenas simulámos a aplicação (com a opção ‘–dry-run’), para ver se vamos encontrar algum problema com ela. Antes de explicarmos como aplicar realmente o adesivo, vamos falar sobre o que pode estar errado, e como lidar com ele.

Problemas potenciais e como lidar com eles

Problemas potenciais

Se tudo correr bem, o remendo será aplicado de forma limpa e a vida deverá ser boa! Mas por vezes o patch não se aplicará 100% limpo devido a um desajuste de versão entre os ficheiros originais utilizados para produzir o ficheiro de patch e os seus ficheiros locais. Neste caso, o comando ‘patch’ tentará aplicar o máximo de alterações possível, e emitirá alguns diagnósticos descrevendo os problemas que encontra.

  • Se receber qualquer mensagem ‘Hunk #n bem sucedida…’, o patch teria sido aplicado correctamente, embora com números de linha diferentes do ficheiro original. Se tivéssemos realmente aplicado o patch, o comando ‘patch’ teria criado um ficheiro adicional para cada um dos ficheiros onde o hunk foi aplicado com um offset diferente, que seria nomeado como o ficheiro original com a extensão adicional .orig.
  • Se receber qualquer mensagem ‘Hunk #n falhado…’, o patch não teria sido aplicado correctamente. Neste caso, o comando ‘patch’ teria criado dois ficheiros adicionais para cada um dos ficheiros onde o hunk não foi aplicado correctamente, chamados:
    • original-file-name.orig Este seria o ficheiro original antes da aplicação do patch, tal como acima.
    • original-file-name.rej Este ficheiro conteria os atributos que não podiam ser aplicados correctamente, para que os pudesse inspeccionar.
  • /li>

Lidar com potenciais problemas

Lidar com o primeiro problema (os palpites compensados) é trivial: só precisamos de apagar os ficheiros .orig uma vez que realmente aplicamos o patch.

No segundo caso (palpites falhados), a menos que saiba como corrigir os palpites falhados à mão, não deve aplicar o patch, pois isso corromperia a sua instalação Moodle. Se quiser aplicar o patch e tentar reparar as falhas à mão, deve usar a opção ‘-b’. Essa opção faz automaticamente uma cópia de segurança de cada ficheiro ao qual o patch se aplica, com a extensão .orig. Isso permitir-lhe-ia voltar ao estado dos ficheiros originais, simplesmente substituindo os ficheiros modificados com as suas cópias de segurança .orig.

Por vezes, haverá uma grande diferença no número de linhas, uma vez que foi gerado um patch e o patch não se aplicará. Pode dizer-se que o patch permite maiores diferenças no número de linhas usando a opção fuzz ‘-F’ para aumentar o número de linhas que podem existir. Por exemplo, o patch -F 100 permitiria 100 linhas de diferença.

Actualmente aplicando o patch

Agora que sabemos o que pode correr mal e como lidar com isso, vamos ver como aplicar o patch. Só precisamos de remover o ‘–dry-run’:

 cd \moodle c:\bin\patch.exe -p1 < mynewpatch.diff

e, opcionalmente, usar a opção ‘-b’ se formos tentar corrigir os erros à mão:

 cd \moodle c:\bin\patch.exe -b -p1 < mynewpatch.diff

Aplique um Patch no Windows usando NetBeans

NetBeans vem com ferramentas integradas para controlo de versões e colaboração de desenvolvedores que incluem poderosas ferramentas gráficas Diff e facilmente aplicar (e criar) patches. Pode aplicar qualquer correcção ao ficheiro a partir do menu de contexto do ficheiro.

Aplicar uma correcção no Linux utilizando “patch”

utilizar algo como:patch -p1 < patchfile.diffsee here for more details on using Patch in Linux

See Also

  • Patch
  • Desenvolvimento:How_to_create_a_patch
  • Drupal – usando Cygwin no Windows para aplicar um patch
  • Drupal – como aplicar um patch no Mac OS X
  • moodle post – usando gnuwin32 para aplicar um patch

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *