diff options
Diffstat (limited to 'documentation/content/pt-br/books/porters-handbook/upgrading/chapter.adoc')
-rw-r--r-- | documentation/content/pt-br/books/porters-handbook/upgrading/chapter.adoc | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/documentation/content/pt-br/books/porters-handbook/upgrading/chapter.adoc b/documentation/content/pt-br/books/porters-handbook/upgrading/chapter.adoc new file mode 100644 index 0000000000..eed6848802 --- /dev/null +++ b/documentation/content/pt-br/books/porters-handbook/upgrading/chapter.adoc @@ -0,0 +1,217 @@ +--- +title: Capítulo 11. Atualizando um Port +prev: books/porters-handbook/testing +next: books/porters-handbook/security +--- + +[[port-upgrading]] += Atualizando um Port +:doctype: book +:toc: macro +:toclevels: 1 +:icons: font +:sectnums: +:source-highlighter: rouge +:experimental: +:skip-front-matter: +:xrefstyle: basic +:relfileprefix: ../ +:outfilesuffix: +:sectnumoffset: 11 +:toc-title: Índice +:table-caption: Tabela +:figure-caption: Figura +:example-caption: Exemplo + +include::shared/mirrors.adoc[] +include::shared/authors.adoc[] +include::shared/releases.adoc[] +include::shared/pt-br/mailing-lists.adoc[] +include::shared/pt-br/teams.adoc[] +include::shared/pt-br/urls.adoc[] + +toc::[] + +Quando um port não estiver na versão mais recente disponibilizada pelos autores, atualize a sua cópia de trabalho local do [.filename]#/usr/ports#. O port pode já ter sido atualizado para a nova versão. + +Ao trabalhar com diversos ports, provavelmente será mais fácil usar o Subversion para manter toda a coleção de ports atualizada, conforme descrito no link:{handbook}#ports-using[Handbook]. Isso trará o benefício adicional de rastrear todas as dependências de ports. + +O próximo passo é ver se há uma atualização já pendente. Para fazer isso, existem duas opções. Há uma interface de pesquisa no https://bugs.freebsd.org/search/[Relatório de Problemas do FreeBSD (PR) ou banco de dados de bugs]. Selecione `Ports & Packages` no menu de seleção múltipla `Product` e digite o nome do port no campo `Summary`. + +No entanto, às vezes as pessoas esquecem de colocar o nome do port no campo Resumo de maneira não ambígua. Nesse caso, tente pesquisar o campo `Comment` na seção `Detailled Bug Information`, ou tente o <<portsmon,Sistema de Monitoramento de Ports do FreeBSD>> (também conhecido como `portsmon`). Este sistema tenta classificar os PRs do port por portname. Para procurar por PRs sobre um port específico, use a http://portsmon.FreeBSD.org/portoverview.py[Visão geral de um port]. + +Se não houver nenhum PR pendente, o próximo passo é enviar um email para o mantenedor do port, como apresentado em `make maintainer`. Essa pessoa pode já estar trabalhando em uma atualização ou ter algum motivo para não atualizar o port neste momento (devido a, por exemplo, problemas de estabilidade da nova versão), e não há necessidade de duplicar seu trabalho. Note que os ports não mantidos são listadas com um mantenedor `ports@FreeBSD.org`, que é apenas a lista de discussão geral de ports, então enviar emails provavelmente não ajudará nesse caso. + +Se o mantenedor lhe pedir para fazer a atualização ou não houver mantenedor, então ajude o FreeBSD preparando a atualização! Por favor, faça isso usando o comando man:diff[1] do sistema base. + +Para criar um `diff` adequado para um único patch, copie o arquivo que precisa de patching para [.filename]#something.orig#, salve as alterações em [.filename]#something# e depois crie o patch: + +[source,bash] +.... +% diff -u something.orig something > something.diff +.... + +Caso contrário, use o método `svn diff` (<<svn-diff>>) ou copie o conteúdo do port para um diretório completamente diferente e use o resultado do man:diff[1] recursivo para os diretórios novos e antigos do port (por exemplo, se o diretório de ports modificado for chamado [.filename]#superedit# e o original está na nossa árvore como [.filename]#superedit.bak# então salve o resultado do comando `diff -ruN superedit.bak superedit`). Tanto o diff unificado ou como o de contexto é aceito, mas os committers do port geralmente preferem diffs unificados. Observe o uso da opção `-N` -- essa é a maneira correta de forçar o diff a lidar adequadamente com o caso de novos arquivos sendo adicionados ou de arquivos antigos sendo excluídos. Antes de nos enviar o diff, por favor, examine a saída para se certificar de que todas as alterações fazem sentido. (Em particular, primeiro limpe os diretórios de trabalho com `make clean`). + +[NOTE] +==== +Se alguns arquivos foram adicionados, copiados, movidos ou removidos, adicione essas informações ao relatório de problemas, para que o committer que pegar o patch saiba quais comandos man:svn[1] executar. +==== + +Para simplificar operações comuns com arquivos de patch, use `make makepatch` como descrito em <<slow-patch>>. Existem outras ferramentas, como [.filename]#/usr/ports/Tools/scripts/patchtool.py#. Antes de usá-lo, por favor leia [.filename]#/usr/ports/Tools/scripts/README.patchtool#. + +Se o port não é mantido e você o utiliza ativamente, por favor, considere se voluntariar como o seu mantenedor. O FreeBSD tem mais de 4000 ports sem mantenedores, e esta é uma área onde mais voluntários são sempre necessários. (Para uma descrição detalhada das responsabilidades dos mantenedores, consulte a seção no link:{developers-handbook}#POLICIES-MAINTAINER[Developer's Handbook].) + +Para enviar o diff, use o https://bugs.freebsd.org/submit/[formulário de envio de bugs] (no produto `Ports & Packages`, e no componente `Individual Port(s)`). Sempre inclua a categoria com o nome do port, seguido por dois pontos e uma breve descrição do problema. Exemplos: `_category/portname_: _add FOO option_`; `_category/portname_: _Update to XY_`. Por favor mencione quaisquer arquivos adicionados ou deletados na mensagem, pois eles devem ser explicitamente especificados no man:svn[1] ao fazer o commit. Não comprima ou codifique o diff. + +Antes de enviar o bug, revise a seção link:{problem-reports}#pr-writing[Escrevendo um relatório de problema] no artigo Relatórios de Problemas. Ele contém muito mais informações sobre como escrever relatórios úteis de problemas. + +[IMPORTANT] +==== +Se a atualização for motivada por preocupações de segurança ou por uma falha grave em um port que já está disponível na arvore, notifique a Equipe de Gerenciamento de Ports mailto:portmgr@FreeBSD.org[portmgr@FreeBSD.org] para solicitar imediata recompilação e redistribuição do pacote do port. Caso contrário, usuários desavisados do `pkg` continuarão a instalar a versão antiga via `pkg install` por várias semanas. +==== + +[NOTE] +==== +Por favor, use o man:diff[1] ou `svn diff` para criar atualizações para ports existentes. Outros formatos incluem o arquivo inteiro e impossibilitam ver o que mudou. Quando os diffs não são incluídos, toda a atualização pode ser ignorada. +==== + +Agora que tudo isso foi feito, leia sobre como manter-se atualizado <<keeping-up>>. + +[[svn-diff]] +== Usando o Subversion para Criar Patches + +Quando possível, envie por favor um man:svn[1]diff. Eles são mais fáceis de manusear do que os diffs entre diretórios "novos e antigos". Nele é mais fácil de ver o que mudou e também é mais fácil de atualizar o diff no caso de algo ter sido modificado na Coleção de Ports desde que o diff foi gerado, ou no caso do committer pedir que algo seja corrigido. Além disso, um patch gerado com `svn diff` pode ser facilmente aplicado com `svn patch` e irá economizar algum tempo para o committer. + +[source,bash] +.... +% cd ~/my_wrkdir <.> +% svn co https://svn.FreeBSD.org/ports/head/dns/pdnsd <.> +% cd ~/my_wrkdir/pdnsd +.... + +<.> Isso pode ser em qualquer lugar, é claro. Compilações de ports não se limitam ao [.filename]#/usr/ports/#. +<.> O https://svn.FreeBSD.org/[svn.FreeBSD.org] é o servidor Subversion público do FreeBSD. Veja link:{handbook}#svn-mirrors[Mirrors do Subversion] para mais informações. + +Enquanto estiver no diretório de ports, faça as alterações necessárias. Se você adicionar, copiar, mover ou remover um arquivo, use o `svn` para registrar essas alterações: + +[source,bash] +.... +% svn add new_file +% svn copy some_file file_copy +% svn move old_name new_name +% svn remove deleted_file +.... + +Certifique-se de verificar o port usando a lista de verificação <<porting-testing>> e <<porting-portlint>>. + +[source,bash] +.... +% svn status +% svn update <.> +.... + +<.> Isso tentará mesclar as diferenças entre o patch e a versão do repositório atual. Veja a saída cuidadosamente. A letra na frente de cada nome de arquivo indica o que foi feito com ele. Consulte <<table-svn-up>> para uma lista completa. + +[[table-svn-up]] +.Prefixos de Atualização de Arquivos do Subversion +[cols="1,1", frame="none"] +|=== +|U +|O arquivo foi atualizado sem problemas. + +|G +|O arquivo foi atualizado sem problemas (somente quando está trabalhando com um repositório remoto). + +|M +|O arquivo foi modificado e foi mesclado sem conflitos. + +|C +|O arquivo foi modificado e foi mesclado com conflitos. +|=== + +E se o status `C` for exibido como resultado de um `svn update`, isso significa que algo mudou no repositório Subversion e o man:svn[1] não foi capaz de mesclar as alterações locais com as do repositório. É sempre uma boa ideia inspecionar as alterações de qualquer maneira, o man:svn[1] não sabe nada sobre a estrutura de um port, então pode (e provavelmente irá) mesclar coisas que não fazem sentido. + +O último passo é fazer um man:diff[1] unificado das mudanças: + +[source,bash] +.... +% svn diff > ../`make -VPKGNAME`.diff +.... + +[NOTE] +==== +Se os arquivos foram adicionados, copiados, movidos ou removidos, inclua os comandos man:svn[1]`add`, `copy`, `move` e `remove` que foram usados. O `svn move` ou o `svn copy` deve ser executado antes de aplicar o patch. O `svn add` ou `svn remove` deve ser executado após o patch ser aplicado. +==== + +Envie o patch seguindo as link:{problem-reports}#pr-writing[diretrizes de envios de relatórios de problemas]. + +[[moved-and-updating-files]] +== [.filename]#UPDATE# e [.filename]#MOVED# + +[[moved-and-updating-updating]] +=== [.filename]#/usr/ports/UPDATING# + +Se a atualização do port exigir etapas especiais, como alteração de arquivos de configuração ou execução de um programa específico, ela deverá ser documentada neste arquivo. O formato de uma entrada neste arquivo é: + +[.programlisting] +.... +YYYYMMDD: + AFFECTS: users of portcategory/portname + AUTHOR: Your name <Your email address> + + Special instructions +.... + +[TIP] +==== + +Quando incluir instruções exatas para o portmaster, portupgrade e/ou instruções ao pkg, por favor, certifique-se de escapar o shell escaping corretamente. Por exemplo, _não_ use: + +[source,bash] +.... +# pkg delete -g -f docbook-xml* docbook-sk* docbook[2345]??-* docbook-4* +.... + +Como mostrado, o comando só irá funcionar com bourne shells. Em vez disso, use o formato abaixo, que funcionará com ambos bourne shell e c-shell: + +[source,bash] +.... +# pkg delete -g -f docbook-xml\* docbook-sk\* docbook\[2345\]\?\?-\* docbook-4\* +.... + +==== + +[NOTE] +==== +Recomenda-se que a linha AFFECTS contenha uma glob que corresponda a todos os ports afetados pela entrada, para que as ferramentas automatizadas possam analisá-la com a maior facilidade possível. Se uma atualização diz respeito a todas as versõs do BIND 9 o conteúdo de `AFFECTS` deve ser `usuários do dns/bind9*`, _não deve_ ser `usuários do BIND 9` +==== + +[[moved-and-updating-moved]] +=== [.filename]#/usr/ports/MOVED# + +Este arquivo é usado para listar os ports movidos ou removidos. Cada linha no arquivo é composta por nome do port, para onde o port foi movido, quando e por quê. Se o port foi removido, a seção detalhando onde ele estava pode ser deixado em branco. Cada seção deve ser separada pelo caractere `|` (pipe), assim: + +[.programlisting] +.... +old name|new name (blank for deleted)|date of move|reason +.... + +A data deve ser inserida no formato `YYYY-MM-DD`. Novas entradas são adicionadas ao final da lista para mantê-las em ordem cronológica, com a entrada mais antiga no topo da lista. + +Se um port foi removido, e depois restaurado, exclua a linha neste arquivo que informa que ele foi removido. + +Se um port foi renomeado e depois renomeado de volta para seu nome original, adicione uma nova entrada com o nome intermediário para o nome antigo e remova a entrada antiga para não criar um loop. + +[NOTE] +==== +Quaisquer alterações devem ser validadas com `Tools/scripts/MOVEDlint.awk`. + +Se estiver usando um diretório de ports diferente de [.filename]#/usr/ports#, use: + +[source,bash] +.... +% cd /home/user/ports +% env PORTSDIR=$PWD Tools/scripts/MOVEDlint.awk +.... +==== |