Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Cursos in Company

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

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

Stumble Upon Digg This Del.icio.us Twitter Recomendar este artigo a um amigo Entre em contato Formato PDF
Newsfeed RSS
Formato para impressão
StumbleUpon Digg Del.icio.us Twitter Recomendar Contato PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (601 votos)

Opinião dos Leitores

Lecy Gomes
08 Out 2006, 11:23
Gostaria de saber como criar um patch para o programa photo2dvd versão 4.8.8.0
rogerio machado
06 Set 2006, 21:40
e quanto ao patcho do plugin realplayer para firefox, como devo proceder?


.....
3 - Make sure a symbolic link to the realplay script is in your PATH
*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

English for Reading and Listening
Enriqueça o seu vocabulário recebendo diariamente mensagens divertidas em inglês, com áudio em MP3.
Saiba mais

Biblioteca

Desenvolvendo Websites com PHP
Por Juliano Niederauer

O Monge e o Executivo: uma História sobre a Essência da Liderança
Por James C. Hunter

Extreme Programming
Por Vinicius Manhaes Teles

UML: Guia do Usuário
Por Grady Booch, James Rumbaugh e Ivar Jacobson

O Vendedor de Sonhos
Por Augusto Cury

Segurança de Redes em Ambientes Cooperativos
Por Emilio Tissato Nakamura e Paulo Licio de Geus

O Conhecimento em Rede
Por Carlos Nepomuceno e Marcos Cavalcanti

Utilizando UML e Padrões
Por CRAIG LARMAN

Sistema de Banco de Dados
Por Abraham Silberschatz

Hardware PC: Guia de Aprendizagem Rápida
Por Carlos E. Morimoto

Manual Completo do Linux: Guia do Administrador
Por Evi Nemeth, Trent R. Hein, Garth Snyder

Redes de Computadores e a Internet
Por James F. Kurose e Keith W. Ross

O Segredo
Por Rhonda Byrne

Os Segredos da Mente Milionária
Por T. Harv Eker

Construindo Sites com CSS e (X)HTML
Por Mauricio Samy Silva

Use a Cabeça!: JSP & Servlets
Por Brian Bashan, Kathy Sierra, Bert Bates

Expressões Regulares: Uma Abordagem Divertida
Por Aurélio Marinho Jargas

Qualidade de Software
Por Andre Koscianski Michel dos Santos Soares

Descobrindo o Linux: Entenda o Sistema Operacional GNU/Linux
Por Joao Eriberto Mota Filho

Enterprise Javabeans 3.0
Por Bill Burke, Richard Monson