você está aqui: Home  → Arquivo de Mensagens

Criando Patches

Colaboração: Carlos E. Morimoto

Data de Publicação: 21 de Agosto de 2005

Os patches são largamente usados não apenas no desenvolvimento do Kernel, mas em praticamente todos os projetos open-source. Um patch nada mais é do que um arquivo de texto contendo as diferenças entre dois arquivos, uma forma forma prática de enviar correções e modificações para os mantenedores dos projetos.

Por serem pequenos, os patches podem ser facilmente enviados via e-mail e são fáceis de auditar, pois verificar as poucas linhas alteradas, ao invés de ter que checar o código fonte completo. Enviar um patch pode ser a única forma de ter sua correção ou melhoria aceita. Vamos a um exemplo rápido de como criar um patch para um shell script simples, que instala o Acrobat Reader no Debian:

  apt-get install acroread
  apt-get install mozilla-acroread
  ln -sf /usr/lib/Adobe/Acrobat7.0/browser/intellinux/nppdf.so \
  /usr/lib/firefox/plugins/nppdf.so

Imagine que o script faz parte de um programam maior, que está localizado na pasta programa/, dentro do seu diretório home, junto com outros arquivos. O arquivo do script por coincidência se chama "script".

O script original não funciona corretamente e você descobriu que o programa são dois erros simples nas localizações das pastas. Depois das modificações, o script ficou:

  apt-get install acroread
  apt-get install mozilla-acroread
  ln -sf /usr/lib/Adobe/Acrobat7.0/Browser/intellinux/nppdf.so \
  /usr/lib/mozilla-firefox/plugins/nppdf.so

Você precisa agora gerar um patch e enviá-lo para o mantenedor do programa, para que ele possa aplicar sua correção. Para isso, você vai precisar de duas pastas, uma contendo o código fonte do programa original e outra contendo o código fonte depois de suas alterações. Não importa se você alterou apenas um arquivo ou se fez alterações em vários. O patch conterá todas as diferenças entre as duas pastas. Imagine que a pasta original se chama "programa" e a pasta com as modificações se chama "programa-mod". O comando para gerar o patch seria:

  $ diff -uNr programa programa-mod/
  
  diff -uNr programa/script programa-mod/script
  --- programa/script     2005-08-09 11:38:55.000000000 -0300
  +++ programa-mod/script 2005-08-09 11:38:47.000000000 -0300
  
-1,4 +1,4
apt-get install acroread apt-get install mozilla-acroread -ln -sf /usr/lib/Adobe/Acrobat7.0/browser/intellinux/nppdf.so \ -/usr/lib/firefox/plugins/nppdf.so +ln -sf /usr/lib/Adobe/Acrobat7.0/Browser/intellinux/nppdf.so \ +/usr/lib/mozilla-firefox/plugins/nppdf.so

Veja que ele devolve as diferenças diretamente na tela. Para que ele gere o patch, direcione a saída do comando para um arquivo:

  $ diff -uNr programa programa-mod/ > patch

É isso aí :) Seu primeiro patch está pronto, espero que seja o primeiro de muitos outros. Basta envia-lo por e-mail para o mantenedor do programa, explicando o que foi feito.

Para aplicar seu patch, o mantenedor acessaria a pasta com o fonte do programa (a pasta programa/ no exemplo) e, dentro dela, usaria o comando:

  $ patch -p1 < /algum_lugar/patch

Neste caso usei como exemplo um shell script, mas os patches podem ser criados a partir de código fonte em qualquer linguagem, ou até mesmo a partir de arquivos binários.


Cursos intensivos do Guia do Hardware.NET em Porto Alegre

A escola Guia do Hardware.NET, em Porto Alegre-RS está realizando este mês, pela primeira vez, seus cursos intensivos em semanas consecutivas. É uma ótima oportunidade para quem quer fazer os cursos, mas mora em outra cidade, ou estado.

O curso "Linux Primeiros Passos", ministrado por Jonathan Meller cobre instalação, configuração e uso do sistema, servindo como um bom ponto de partida para quem tem apenas conhecimentos básicos e quer se aprofundar.

Em seguida vem o curso 'Redes e Servidores Linux', ministrado por Carlos E. Morimoto, é focado na instalação de redes entre máquinas Linux e Windows e configuração de servidores Linux, abordando a configuração de servidores LAMP, Squid, Samba, NFS, FTP e DNS, acesso remoto com o SSH, VNC, FreeNX e XDMCP, terminais leves com o LTSP, servidores de e-mail e firewall.

Os cursos começam dia 22 de agosto. Mais informações a respeito dos cursos e tópicos abordados no http://guiadohardware.net/cursos. Até lá.



Veja a relação completa dos artigos de Carlos E. Morimoto

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script