Skip to content

Como aplicar um patch a um arquivo usando Linux

17 de maio de 2021

Um patch é um segmento de código de computador que insere ou modifica um conjunto de códigos existente. Patches são comumente usados ​​durante o processo de programação para substituir alterações no código-fonte. Linux inclui um patch utilitário para agilizar este processo. O processo de patch é normalmente usado em sistemas formais de controle de mudanças, onde as melhores práticas profissionais para qualidade e teste de código estão em vigor. A correção é menos comumente usada em projetos de hobby, onde o código-fonte muda a critério do programador.

O Processo de Patching

Em um caso de uso típico, você tem uma versão original de seu código-fonte e uma versão modificada dele. O original foi aprovado formalmente e qualquer alteração deve seguir um processo bem definido. Essas alterações ocorrem em um arquivo de patch. Usando uma ferramenta chamada diferença, reduza as diferenças entre as duas versões de arquivo a um único arquivo que lista as alterações específicas que a segunda faz à primeira. Então, o arquivo de diferença resultante modifica o código original por meio do uso do correção ferramenta.

Aplicando Patches: Um Exemplo

Considere um programa típico “Hello World”. O código-fonte em C se parece com isto: #include
int main ()
{
printf (“Olá, mundo!”);
}

Para alterar a mensagem impressa para Olá universo!, desenvolva uma versão alternativa do código, da seguinte maneira: #include
int main ()
{
printf (“Olá, universo!”);
}

Gere um arquivo de patch usando o diferença utilitário: diff -u helloworld.c helloworld2.c> file.patch

Você verá então que o arquivo de patch se parece com isto:

O arquivo de patch lista cada arquivo comparado. Oferece símbolos, e +++, identificando cada nome de arquivo com a data da última revisão. Em seguida, ele resume a localização das mudanças entre um par de @@ símbolos. Finalmente, ele lista o código-fonte, marcando as diferentes linhas usando os símbolos de mais e menos. Geralmente, o sinal de menos indica que a linha foi removida no arquivo corrigido e o sinal de mais representa uma substituição, se a linha for substituída. Para aplicar o arquivo de patch ao arquivo original, execute: patch

Nesse ponto, o primeiro arquivo muda para corresponder ao segundo. Para desfazer o patch, use o -R opção: patch -R

Considerações

Essa abordagem para corrigir o código-fonte é menos comum do que costumava ser. Sistemas de controle de origem modernos como Git e Subversion gerenciam automaticamente as versões ao longo do tempo, incluindo vários ramos de desenvolvimento e teste, de forma que a verificação manual de diferenças e patching de arquivo agora seja gerenciado pela ferramenta de controle de versão. Se você deve seguir uma estrutura de codificação formal ou estar em conformidade com os padrões de codificação de equipe, use uma ferramenta como o Git. No entanto, um caso de uso eficaz para o diferença e correção sistema em uma máquina local está relacionado a mudanças em um diretório inteiro de arquivos. Por exemplo, se você desenvolveu um site, mas precisa fazer uma alteração apenas em uma única linha – como uma linha de copyright – então este sistema atualiza todas essas páginas simultaneamente. Consulte as páginas do manual para correção para contexto adicional.