Como Criar, Aplicar e Usar o comando patch

Uma maneira fácil de adicionar recursos adicionais.


Como Criar, Aplicar e Usar o comando patch

Conceito

Segundo a wikipedia: Um patch (termo da língua inglesa que significa, literalmente, “remendo”) é um programa de computador criado para atualizar ou corrigir um software de forma a melhorar sua usabilidade ou performance. Quando patches corrigem bugs ou vulnerabilidades de segurança, se dá o nome de bugfix.

Esta técnica pode ser utilizada como uma das formas de distribuir uma liberação de software. É muito utilizada em jogos para computadores de forma a atualizar o conteúdo disponível.

O comando patch UNIX: Uma patch (Unix) é um programa de computador do sistema operacional UNIX que aplica as diferenças textuais entre dois programas e, mais freqüentemente, a arquivos de computador contendo essas diferenças, ou arquivos diff.

De acordo com o manual: patch pega um arquivo de “patch”: patchfile contendo uma diferença lista produzida pelo programa diff e aplica aqueles diferenças em um ou mais arquivos originais, produzindo versões.

Normalmente, as versões corrigidas são colocadas no lugar do original.


Sintaxe

patch [arquivo que você deseja aplicar o patch] [o patch]

Exemplo prático

Suponhamos que você tenha o seguinte arquivo em C++:

vim hello.cpp

#include <iostream>

int main( int argc , char **argv ){
  std::cout << "Olá, Mundo!" << '\n';
  return 0;
}

E então, você cria um novo baseado nele e altera algumas coisas:

cp hello.cpp new_hello.cpp

vim new_hello.cpp

#include <iostream>

int main( int argc , char **argv ){
  std::cout << "Olá, Mundo!" << '\n';
  std::cout << "Êta mundo bom de acabar ..." << '\n';
  return 0;
}

Quando você rodar o comando diff com a parâmetro -u você e gera o um arquivo de patch: file.patch:

diff -u hello.cpp new_hello.cpp > file.patch

E então o conteúdo de file.patch terá o seguinte código:

--- hello.cpp	2021-06-29 00:01:27.329937847 -0300
+++ new_hello.cpp	2021-06-29 00:02:08.281947880 -0300
@@ -2,6 +2,7 @@
 
 int main( int argc , char **argv ){
   std::cout << "Olá, Mundo!" << '\n';
+  std::cout << "Êta mundo bom de acabar ..." << '\n';
   return 0;
 }

Apesar desse exemplo ser básico e poder alterar a linha manulamente, na maioria dos casos em projetos maiores, seria muito trabalho.

Logo, para aplicar o patch, como vimos na Sintaxe dele acima, basta rodar o comando patch:

patch hello.cpp file.patch

E se você for ver o conteúdo de hello.cpp agora perceberá que está idêntico ao do new_hello.cpp.

Fácil, né? Lógico que ainda há muitaaaas opções e vale à pela dar uma olhada no manual e no help:

patch --help
man patch

Veja também

Comando cp com Barra de Progresso

Só aplicando um patch.


comandos


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!