aboutsummaryrefslogtreecommitdiff
path: root/documentation/content/pt-br/books/porters-handbook/upgrading/chapter.adoc
diff options
context:
space:
mode:
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.adoc217
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
+....
+====