pt_BR.ISO8859-1/articles/freebsd-update-server: converted to .po

* content synchronized with en_US document (rev 51862)
* article.xml converted to .po
* .po file was translated to pt_BR
* pt_BR.po and article.xml file has been set to UTF-8 encoding
* information about volunteers who translated and/or revised the document was added to the header of the .po file

Approved by: gabor (mentor, implicit)
Obtained from: The FreeBSD Brazilian Portuguese Documentation Project
This commit is contained in:
Edson Brandi 2018-09-12 02:22:29 +00:00
parent 3302449014
commit 3f3c94845a
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=52249
2 changed files with 1750 additions and 330 deletions

View file

@ -1,142 +1,89 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd" [
<!ENTITY fbus.ap "<application xmlns='http://docbook.org/ns/docbook'>Servidor de Atualização do FreeBSD</application>">
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN" "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd" [
<!ENTITY fbus.ap "<application xmlns='http://docbook.org/ns/docbook'>FreeBSD
Update Server</application>">
]>
<!--
The FreeBSD Documentation Project
The FreeBSD Brazilian Portuguese Documentation Project
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:its="http://www.w3.org/2005/11/its" version="5.0" xml:lang="pt_BR">
<info>
<title>Construa seu próprio servidor de atualização do FreeBSD</title>
Original revision: r41162
-->
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="pt_br">
<info><title>Construa Seu Próprio Servidor de Atualização do &os;</title>
<author><personname> <firstname>Jason</firstname> <surname>Helfman</surname> </personname> <affiliation> <address>Jason Helfman <email>jgh@FreeBSD.org</email></address> </affiliation></author>
<author><personname><firstname>Jason</firstname><surname>Helfman</surname></personname><affiliation>
<address>&a.jgh;</address>
</affiliation></author>
<copyright>
<year>2009</year>
<year>2010</year>
<year>2011</year>
<year>2013</year>
<holder role="mailto:jgh@FreeBSD.org">Jason Helfman</holder>
</copyright>
<copyright><year>2009</year> <year>2010</year> <year>2011</year> <year>2013</year> <holder role="mailto:jgh@FreeBSD.org">Jason Helfman</holder></copyright>
<legalnotice xml:id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.general;
&tm-attrib.intel;
&tm-attrib.amd;
<para>FreeBSD is a registered trademark of the FreeBSD Foundation.</para>
<para>Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the <quote></quote> or the <quote>®</quote> symbol.</para>
<para>Intel, Celeron, Centrino, Core, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.</para>
<para>AMD, AMD Athlon, AMD Opteron, AMD Phenom, AMD Sempron, AMD Turion, Athlon, Élan, Opteron, and PCnet are trademarks of Advanced Micro Devices, Inc.</para>
</legalnotice>
<pubdate>$FreeBSD$</pubdate>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>Este artigo descreve como construir um &fbus.ap; para uso
interno na sua organização. O software <link xlink:href="http://svnweb.freebsd.org/base/user/cperciva/freebsd-update-build/">freebsd-update-server</link>
foi escrito pelo &a.cperciva;, Chefe de Segurança emérito do
&os;. Para usuários que acreditam que é conveniente atualizar
seus sistemas a partir de um servidor oficial de atualização,
construir o seu próprio &fbus.ap; pode ajudá-lo a estender suas
funcionalidades, seja por adicionar suporte a versões
customizadas do &os; ou por viabilizar a criação de um servidor
local o qual permitirá atualizações mais rápidas caso você
possua muitos servidores para atualizar.</para>
</abstract>
<abstract>
<para>Este artigo descreve a construção de um <application>servidor de atualizações do FreeBSD</application> interno. O <link xlink:href="https://svnweb.freebsd.org/base/user/cperciva/freebsd-update-build/">freebsd-update-server</link> foi escrito por Colin Percival <email>cperciva@FreeBSD.org</email>, Oficial de Segurança Emérito do FreeBSD. Para usuários que acham conveniente atualizar seus sistemas em um servidor de atualização oficial, construir seu próprio <application>FreeBSD Update Server</application> pode ajudar a estender sua funcionalidade suportando versões do FreeBSD ajustadas manualmente ou fornecendo um espelho local que permitirá atualizações mais rápidas para várias máquinas.</para>
</abstract>
</info>
<sect1 xml:id="acknowledgments">
<title>Agradecimentos</title>
<para>Este artigo posteriormente impresso na <link xlink:href="http://bsdmag.org/magazine/1021-bsd-as-a-desktop">BSD
Magazine</link>.</para>
<para>Este artigo foi publicado posteriormente no <link xlink:href="http://bsdmag.org/magazine/1021-bsd-as-a-desktop">BSD Magazine</link>.</para>
</sect1>
<sect1 xml:id="introduction">
<title>Introdução</title>
<title>Introdução</title>
<para>Usuários experientes ou administradores são frequentemente
responsáveis por diversas máquinas ou ambientes. Eles entendem
as dificuldades e os desafios de manter tal estrutura. A
utilização de um &fbus.ap; torna mais fácil a tarefa de
implantar patches de segurança e de softwares nas máquinas
selecionadas para testá-los antes proceder com o seu deploy no
ambiente de produção. Isto também significa que seus servidores
poderão ser atualizados a partir da rede local em vez de
utilizarem sua conexão de internet, o que torna o processo muito
mais rápido. Este artigo descreve as etapas envolvidas na
criação de um &fbus.ap; para uso interno.</para>
<para>Usuários experientes ou administradores são muitas vezes responsáveis por várias máquinas ou ambientes. Eles entendem as difíceis demandas e desafios da manutenção de tal infraestrutura. A execução de um <application>Servidor de Atualização do FreeBSD</application> facilita a implantação de patches de segurança e software em máquinas de teste selecionadas antes de implementá-las nas maquinas em produção. Isso também significa que vários sistemas podem ser atualizados a partir da rede local, em vez de uma conexão de Internet potencialmente mais lenta. Este artigo descreve os passos envolvidos na criação de um <application>Servidor de Atualização do FreeBSD </application> interno.</para>
</sect1>
<sect1 xml:id="prerequisites">
<title>Pré-Requisitos</title>
<title>Pré-requisitos</title>
<para>Para construir o seu &fbus.ap; alguns requisitos devem ser
cumpridos.</para>
<para>Para construir um <application>Servidor de Atualização do FreeBSD</application> interno, alguns requisitos devem ser atendidos.</para>
<itemizedlist>
<listitem>
<para>Estar executando o &os;.</para>
<para>Um sistema FreeBSD em execução.</para>
<note>
<para>No mínimo, as atualizações precisam ser compiladas em
uma versão do &os; maior ou igual a versão alvo a ser
distribuída.</para>
<para>No mínimo, as atualizações requerem a criação de uma versão do FreeBSD maior ou igual a versão do release alvo para a distribuição.</para>
</note>
</listitem>
<listitem>
<para>Ter acesso a uma conta de usuário com no mínimo
4&nbsp;GB de espaço livre. Isto permite a criação de
atualizações para as versões 7.1 e 7.2, mas o espaço exato
requerido pode mudar de versão para versão.</para>
<para>Uma conta de usuário com pelo menos 4 GB de espaço disponível. Isso permitirá a criação de atualizações para 7.1 e 7.2, mas os requisitos de espaço exatos podem mudar de versão para versão.</para>
</listitem>
<listitem>
<para>Ter acesso a uma conta &man.ssh.1; em uma máquina
remota para enviar as atualizações a serem
distribuídas.</para>
<para>Uma conta com acesso ao <citerefentry><refentrytitle>ssh</refentrytitle><manvolnum>1</manvolnum></citerefentry> em uma máquina remota para carregar atualizações distribuídas.</para>
</listitem>
<listitem>
<para>Possuir um servidor web, como <link xlink:href="&url.books.handbook;/network-apache.html">Apache</link>,
com mais da metade do espaço necessário para a compialação.
Por exemplo, compilações testes para 7.1 e 7.2 consomem um
espaço total de 4&nbsp;GB, e usam 2.6&nbsp;GB para
distribuir essas atualizações.</para>
<para>Um servidor web, como o <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/handbook/network-apache.html">Apache</link>, com mais da metade do espaço necessário para a construção. Por exemplo, as compilações de teste para 7.1 e 7.2 consomem uma quantidade total de 4 GB e o espaço do servidor da web necessário para distribuir essas atualizações é de 2.6 GB.</para>
</listitem>
<listitem>
<para>Ter conhecimento básico de shell script com o Bourne
shell, &man.sh.1;</para>
<para>Conhecimento básico de shell script com o Bourne shell, <citerefentry><refentrytitle>sh</refentrytitle><manvolnum>1</manvolnum></citerefentry>.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 xml:id="Configuration">
<title>Instalação &amp; Configuração</title>
<title>Configuração: Instalação &amp; Configuração</title>
<para>Para efetuar o download do software <link xlink:href="http://svnweb.freebsd.org/base/user/cperciva/freebsd-update-build/">freebsd-update-server</link>
instale o <package>devel/subversion</package> e
execute:</para>
<para>Faça o download do software <link xlink:href="https://svnweb.freebsd.org/base/user/cperciva/freebsd-update-build/">freebsd-update-server</link> instalando <package>devel/subversion</package> e <package>security/ca_root_nss</package>, e execute:</para>
<screen>&prompt.user; <userinput>svn co http://svn.freebsd.org/base/user/cperciva/freebsd-update-build freebsd-update-server</userinput></screen>
<para>Atualize o <filename>scripts/build.conf</filename> de forma
adequada. Ele é usado durante as operações de
compilação.</para>
<screen><prompt>%</prompt> <userinput>svn co https://svn.freebsd.org/base/user/cperciva/freebsd-update-build freebsd-update-server</userinput></screen>
<para>Aqui está o <filename>build.conf</filename> padrão, que
deverá ser modificado para se adequar ao seu ambiente.</para>
<para>Atualize o <filename>scripts/build.conf</filename> apropriadamente. Ele é criado durante todas as operações de construção.</para>
<para>Aqui está o <filename>build.conf</filename> padrão, que deve ser modificado para se adequar ao seu ambiente.</para>
<informalexample>
<programlisting>
# Main configuration file for FreeBSD Update builds. The
<programlisting># Main configuration file for FreeBSD Update builds. The
# release-specific configuration data is lower down in
# the scripts tree.
@ -159,83 +106,52 @@ MASTERACCT=builder@wadham.daemonology.net<co xml:id="mstacct-id"/>
MASTERDIR=update-master.freebsd.org<co xml:id="mstdir-id"/></programlisting>
</informalexample>
<para>Parâmentros que devem ser considerados:</para>
<para>Parâmetros para consideração seriam:</para>
<calloutlist>
<callout arearefs="ftp-id">
<para>Este é o local de onde serão feitos os downloads das
imagens ISO (pela sub-rotina <function>fetchiso()</function>
do <filename>scripts/build.subr</filename>). O local a ser
configurado não é limitado a URIs de FTP. Qualquer URI
suportada pela ferramenta &man.fetch.1; pode ser
usada.</para>
<para>Este é o local onde as imagens ISO são baixadas (pela sub-rotina <function>fetchiso()</function> do <filename>scripts/build.subr</filename>). A localização configurada não está limitada a URIs de FTP. Qualquer esquema de URI suportado pelo utilitário padrão <citerefentry><refentrytitle>fetch</refentrytitle><manvolnum/></citerefentry> deve funcionar bem.</para>
<para>Customizações do código da
<function>fetchiso()</function> podem ser feitas copiando
o script padrão <filename>build.subr</filename> para o
local da sua versão e arquitetura específica
<filename>scripts/RELEASE/ARCHITECTURE/build.subr</filename> e
alterando o arquivo.</para>
<para>Personalizações para o código de <function>fetchiso()</function> podem ser instaladas copiando o script padrão <filename>build.subr</filename> para a área específica do release e da arquitetura em <filename>scripts/RELEASE/ARCHITECTURE/build.subr</filename> e aplicando alterações locais.</para>
</callout>
<callout arearefs="buildhost-id">
<para>O nome do computador que fará a compilação. Esta
informação será exibida durante a atualização dos
sistemas:</para>
<para>O nome do host em construção. Esta informação será exibida em sistemas atualizados ao executar:</para>
<screen>&prompt.user; <userinput>uname -v</userinput></screen>
<screen><prompt>%</prompt> <userinput>uname -v</userinput></screen>
</callout>
<callout arearefs="sshkey-id">
<para>A chave <application>SSH</application> para enviar os
arquivos para o servidor de atualização. O par de chaves
pode ser criado digitando <command>ssh-keygen -t
dsa</command>. Este parâmetro é opcional; a autenticação
por senha será usada como método de autenticação quando a
variável <literal>SSHKEY</literal> não estiver
definida.</para>
<para>A chave <application>SSH</application> para fazer upload de arquivos para o servidor de atualizações. Um par de chaves pode ser criado digitando <command>ssh-keygen -t dsa</command>. Este parâmetro é opcional; a autenticação de senha padrão será usada como um método de autenticação secundário quando a <literal>SSHKEY</literal> não estiver definida.</para>
<para>A página do manual &man.ssh-keygen.1; tem informações
mais detalhadas sobre o <application>SSH</application> e os
passos apropriados para criar e usar chaves.</para>
<para>A página de manual do <citerefentry><refentrytitle>ssh-keygen</refentrytitle> <manvolnum>1</manvolnum></citerefentry> contém informações mais detalhadas sobre o <application>SSH</application> e as etapas apropriadas para criar e usar um.</para>
</callout>
<callout arearefs="mstacct-id">
<para>Conta para enviar os arquivos para o servidor de
atualização.</para>
<para>Conta para fazer upload de arquivos para o servidor de atualização.</para>
</callout>
<callout arearefs="mstdir-id">
<para>Diretório do servidor de atualização para o qual os
arquivos serão enviados.</para>
<para>Diretório no servidor de atualização para o qual os arquivos são enviados.</para>
</callout>
</calloutlist>
<para>O arquivo <filename>build.conf</filename> padrão, distribuído
com o fonte do <application>freebsd-update-server</application>,
está preparado para compilar a versão &arch.i386; do &os;.
A titulo de exemplo sobre como compilar um servidor de
atualização para outras arquiteturas, as seguintes modificações
são necessárias para a arquitetura &arch.amd64;:</para>
<para>O arquivo padrão <filename>build.conf</filename> fornecido com o código-fonte do <application>freebsd-update-server</application> é adequado para a criação de versões i386 do FreeBSD. Como um exemplo de criação de um servidor de atualização para outras arquiteturas, as etapas a seguir descrevem as alterações necessárias na configuração para o amd64:</para>
<procedure>
<step>
<para>Crie um ambiente de compilação para o
&arch.amd64;:</para>
<para>Crie um ambiente de compilação para o amd64:</para>
<informalexample>
<screen>&prompt.user; <userinput>mkdir -p /usr/local/freebsd-update-server/scripts/7.2-RELEASE/amd64</userinput></screen>
<screen><prompt>%</prompt> <userinput>mkdir -p /usr/local/freebsd-update-server/scripts/7.2-RELEASE/amd64</userinput></screen>
</informalexample>
</step>
<step>
<para>Copie o arquivo <filename>build.conf</filename> para o
diretório recém criado. As configurações de compilação para
o &os; 7.2-RELEASE na arquitetura &arch.amd64; devem ser
similares a:</para>
<para>Instale um <filename>build.conf</filename> no diretório de criação recém-criado. As opções de configuração de compilação para o FreeBSD 7.2-RELEASE com arquitetura amd64 devem ser semelhantes a:</para>
<informalexample>
<programlisting># SHA256 hash of RELEASE disc1.iso image.
<programlisting># SHA256 hash of RELEASE disc1.iso image.
export RELH=1ea1f6f652d7c5f5eab7ef9f8edbed50cb664b08ed761850f95f48e86cc71ef5<co xml:id="sha256-id"/>
# Components of the world, source, and kernels
@ -251,19 +167,13 @@ export EOL=1275289200<co xml:id="eol-id"/></programlisting>
<calloutlist>
<callout arearefs="sha256-id">
<para>A chave hash &man.sha256.1; da versão desejada,
ela é publicada no <link xlink:href="&url.base;/releases/">anúncio da versão</link>.</para>
<para>A chave <citerefentry><refentrytitle>sha256</refentrytitle><manvolnum>1</manvolnum></citerefentry> usada para fazer o hash para a release desejada é publicada no respectivo <link xlink:href="@@URL_RELPREFIX@@/releases/">anúncio de release</link>.</para>
</callout>
<callout arearefs="eol-id">
<para>Para gerar o número "End of Life" (Fim da Vida) para
o <filename>build.conf</filename>, consulte a informação
sobre o "Estimated EOL" publicada no <link xlink:href="&url.base;/security/security.html">Site de
Segurança do &os;</link>. O valor do
<literal>EOL</literal> pode ser derivado a partir da
data listada no site, usando a ferramenta &man.date.1;,
por exemplo:</para>
<screen>&prompt.user; <userinput>date -j -f '%Y%m%d-%H%M%S' '20090401-000000' '+%s'</userinput></screen>
<para>Para gerar o número "End of Life" para o <filename>build.conf</filename>, consulte o "EOL estimado" publicado no <link xlink:href="@@URL_RELPREFIX@@/security/security.html">Site de Segurança do FreeBSD</link>. O valor de <literal>EOL</literal> pode ser derivado da data listada no site, usando o utilitário <citerefentry><refentrytitle>date</refentrytitle><manvolnum>1</manvolnum></citerefentry>, por exemplo:</para>
<screen><prompt>%</prompt> <userinput>date -j -f '%Y%m%d-%H%M%S' '20090401-000000' '+%s'</userinput></screen>
</callout>
</calloutlist>
</step>
@ -271,16 +181,11 @@ export EOL=1275289200<co xml:id="eol-id"/></programlisting>
</sect1>
<sect1 xml:id="build">
<title>Preparando a atualização</title>
<title>Compilando o Código de Atualização</title>
<para>O primeiro passo é executar o
<filename>scripts/make.sh</filename>. Isto irá compilar alguns
binários, criar diretórios, e gerar uma chave de assinatura
RSA usada para aprovar as compilações. Neste passo, uma senha
deverá ser fornecida para terminar a criação da chave de
assinatura.</para>
<para>O primeiro passo é executar o <filename>scripts/make.sh</filename>. Isso criará alguns binários, criará diretórios e irá gerar uma chave de assinatura RSA usada para aprovar as compilações. Nesta etapa, uma senha terá que ser fornecida para a criação final da chave de assinatura.</para>
<screen>&prompt.root; <userinput>sh scripts/make.sh</userinput>
<screen><prompt>#</prompt> <userinput>sh scripts/make.sh</userinput>
cc -O2 -fno-strict-aliasing -pipe findstamps.c -o findstamps
findstamps.c: In function 'usage':
findstamps.c:45: warning: incompatible implicit declaration of built-in function 'exit'
@ -301,24 +206,19 @@ enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:</screen>
<note>
<para>Anote a impressão digital (fingerprint) da chave gerada.
Ela é necessária no
<filename>/etc/freebsd-update.conf</filename> para as
atualizações de binários.</para>
<para>Mantenha um backup do fingerprint gerado. Este valor é necessário para o arquivo <filename>/etc/freebsd-update.conf</filename> para as atualizações binárias.</para>
</note>
<para>Neste ponto, nós estamos prontos para a etapa de
compilação.</para>
<para>Neste ponto, estamos prontos para montar uma construção.</para>
<informalexample>
<screen>&prompt.root; <userinput>cd /usr/local/freebsd-update-server</userinput>
&prompt.root; <userinput>sh scripts/init.sh amd64 7.2-RELEASE</userinput></screen>
<screen><prompt>#</prompt> <userinput>cd /usr/local/freebsd-update-server</userinput>
<prompt>#</prompt> <userinput>sh scripts/init.sh <replaceable>amd64 7.2-RELEASE</replaceable></userinput></screen>
</informalexample>
<para>A seguir está um exemplo de uma execução
<emphasis>inicial</emphasis>.</para>
<para>O que se segue é uma amostra de uma execução da compilação<emphasis>inicial</emphasis>.</para>
<screen>&prompt.root; <userinput>sh scripts/init.sh amd64 7.2-RELEASE</userinput>
<screen><prompt>#</prompt> <userinput>sh scripts/init.sh amd64 7.2-RELEASE</userinput>
Mon Aug 24 16:04:36 PDT 2009 Starting fetch for FreeBSD/amd64 7.2-RELEASE
/usr/local/freebsd-update-server/work/7.2-RELE100% of 588 MB 359 kBps 00m00s
Mon Aug 24 16:32:38 PDT 2009 Verifying disc1 hash for FreeBSD/amd64 7.2-RELEASE
@ -357,22 +257,10 @@ world|base|/usr/lib/libalias_dummy.a
world|base|/usr/lib/libalias_ftp.a
...</screen>
<para>Em seguida, a compilação da base do sistema será feita
novamente, com os patches. Uma explicação mais detalhada pode
ser encontrada em <filename>scripts/build.subr</filename>.</para>
<para>Então a compilação do world é executada novamente, com patches para world. Uma explicação mais detalhada pode ser encontrada em <filename>scripts/build.subr</filename>.</para>
<warning>
<para>Durante a segunda compilação, o serviço de network time
protocol, &man.ntpd.8; será desligado. De acordo com
&a.cperciva;, Chefe de Segurança emérito do &os;, "o <link xlink:href="http://svnweb.freebsd.org/base/user/cperciva/freebsd-update-build/">freebsd-update-server</link>
compila códigos necessários para identificar os
<literal>timestamps</literal>, os quais são armazenadas em
arquivos, de modo que estes últimos podem ser ignorados quando
estivermos comparando compilações diferentes para determinar
quais arquivos precisam ser atualizados. Esta procura por
<literal>timestamp</literal> funciona realizando duas
compilações separadas por 400 dias e comparando os
resultados."</para>
<para>Durante este segundo ciclo de compilação, o daemon do protocolo de tempo de rede, <citerefentry><refentrytitle>ntpd</refentrytitle><manvolnum>8</manvolnum></citerefentry>, é desativado. Segundo o Colin Percival <email>cperciva@FreeBSD.org</email>, Oficial de segurança emérito do FreeBSD, "a compilação do código do <link xlink:href="https://svnweb.freebsd.org/base/user/cperciva/freebsd-update-build/">freebsd-update-server</link> precisa identificar os timestamps que são armazenados nos arquivos para que possam ser ignorados ao comparar builds para determinar quais arquivos precisam ser atualizados. Essa busca de timestamp trabalha com duas construções com 400 dias de diferença e compara os resultados."</para>
</warning>
<screen>Mon Aug 24 17:54:07 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE
@ -409,7 +297,7 @@ world|base|/usr/lib/libalias_dummy.a
world|base|/usr/lib/libalias_ftp.a
...</screen>
<para>Finalmente, a compilação termina.</para>
<para>Finalmente, a construção é concluída.</para>
<screen>Values of build stamps, excluding library archive headers:
v1.2 (Aug 25 2009 00:40:36)
@ -444,162 +332,127 @@ they look sensible, then run
# sh -e approve.sh amd64 7.2-RELEASE
to sign the release.</screen>
<para>Se tudo estiver correto, aprove a compilação. Maiores
informações sobre como determinar se o processo finalizou com
sucesso podem ser encontradas no arquivo chamado
<filename>USAGE</filename>, distribuído com o código fonte.
Execute o <filename>scripts/approve.sh</filename>. Isto irá
assinar a versão, e mover os seus componentes para uma área de
preparo adequada para a transferência para o servidor de
distribuição.</para>
<para>Aprove a compilação se tudo estiver correto. Mais informações sobre como determinar isso podem ser encontradas no arquivo fonte distribuído chamado <filename>USAGE</filename>. Execute <filename>scripts/approve.sh</filename>, conforme indicado. Isso assinará a release e moverá os componentes para uma área de preparação adequada para o upload.</para>
<informalexample>
<screen>&prompt.root; <userinput>cd /usr/local/freebsd-update-server</userinput>
&prompt.root; <userinput>sh scripts/mountkey.sh</userinput></screen>
<screen><prompt>#</prompt> <userinput>cd /usr/local/freebsd-update-server</userinput>
<prompt>#</prompt> <userinput>sh scripts/mountkey.sh</userinput></screen>
</informalexample>
<screen>&prompt.root; <userinput>sh -e scripts/approve.sh amd64 7.2-RELEASE</userinput>
<screen><prompt>#</prompt> <userinput>sh -e scripts/approve.sh amd64 7.2-RELEASE</userinput>
Wed Aug 26 12:50:06 PDT 2009 Signing build for FreeBSD/amd64 7.2-RELEASE
Wed Aug 26 12:50:06 PDT 2009 Copying files to patch source directories for FreeBSD/amd64 7.2-RELEASE
Wed Aug 26 12:50:06 PDT 2009 Copying files to upload staging area for FreeBSD/amd64 7.2-RELEASE
Wed Aug 26 12:50:07 PDT 2009 Updating databases for FreeBSD/amd64 7.2-RELEASE
Wed Aug 26 12:50:07 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.2-RELEASE</screen>
<para>Depois que o processo de aprovação tiver sido finalizado,
o processo de transferência pode ser iniciado.</para>
<para>Após o processo de aprovação ser concluído, o procedimento de upload pode ser iniciado.</para>
<informalexample>
<screen>&prompt.root; <userinput>cd /usr/local/freebsd-update-server</userinput>
&prompt.root; <userinput>sh scripts/upload.sh amd64 7.2-RELEASE</userinput></screen>
<screen><prompt>#</prompt> <userinput>cd /usr/local/freebsd-update-server</userinput>
<prompt>#</prompt> <userinput>sh scripts/upload.sh <replaceable>amd64 7.2-RELEASE</replaceable></userinput></screen>
</informalexample>
<note>
<para>No caso do código de atualização precisar ser transferido
novamente para o servidor de distribuição, isto poderá ser
feito entrando-se no diretório público de distribuição da
versão desejada e atualizando os atributos do arquivo
<emphasis>uploaded</emphasis>.</para>
<para>No caso de o código de atualização precisar ser reenviado, isso pode ser feito mudando para o diretório de distribuições públicas para o release alvo e atualizando os atributos do arquivo <emphasis>carregado</emphasis>.</para>
<informalexample>
<screen>&prompt.root; <userinput>cd /usr/local/freebsd-update-server/pub/7.2-RELEASE/amd64</userinput>
&prompt.root; <userinput>touch -t 200801010101.01 uploaded</userinput></screen>
<screen><prompt>#</prompt> <userinput>cd /usr/local/freebsd-update-server/pub/<replaceable>7.2-RELEASE/amd64</replaceable></userinput>
<prompt>#</prompt> <userinput>touch -t <replaceable>200801010101.01</replaceable> uploaded</userinput></screen>
</informalexample>
</note>
<para>Os arquivos transferidos precisam ficar na raiz do servidor
web para que as atualizações sejam distribuídas. A exata
configuração dependerá do servidor web utilizado. Para o
servidor web <application>Apache</application>, por favor,
consulte a seção <link xlink:href="&url.books.handbook;/network-apache.html">Configuração do
servidor Apache</link> do Handbook.</para>
<!-- If freebsd-update works with other http servers too, we should
avoid making the instructions Apache-specific here. -->
<para>Atualize o <literal>KeyPrint</literal> e o
<literal>ServerName</literal> no arquivo
<filename>/etc/freebsd-update.conf</filename>, e efetue as
atualizações de acordo com os procedimentos descritos na seção
<link xlink:href="&url.books.handbook;/updating-freebsdupdate.html">Atualização
do &os;</link> do Handbook.</para>
<!-- there are specific web instructions in the uploaded code that pertain to Apache. I believe it is worded fine here, now, and if others choose to use another web server, that is their choice to figure out -->
<para>Os arquivos enviados precisarão estar no diretório de documentos raiz do servidor web para que as atualizações sejam distribuídas. A configuração exata irá variar dependendo do servidor web usado. Para o servidor web <application>Apache</application>, consulte a sessão <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/handbook/network-apache.html">Configuração de servidores Apache</link> no Handbook.</para>
<!-- This note seems either out of place. I find it hard to read and it
is a bit difficult to understand why it is related to the rest of
this section. It looks like something that would fit nicely in an
introductory section about the way a freebsd-update server works. -->
<!-- Agreed, it does not suite very well here. But it is now included
above. I think it can be removed now. gabor -->
<!-- Taken out until we decide what to do with it -->
<!-- Agreed. However, I believe the placement of this works fine as it is.
<note>
<para>Updates for the current release of the &os; system you are
updating, and what you want to upgrade <emphasis>to</emphasis> need
to be built in order for &os; Update Server to work properly. This
is necessary for merging of files between releases. For example, if
you are updating a system from &os; 7.1 to &os; 7.2, you will need
to have update code built for &os; 7.1-RELEASE and
&os; 7.2-RELEASE.</para>
</note> -->
<!-- What is a 'KeyPrint'? -->
<para>Atualize o <literal>KeyPrint</literal> e <literal>ServerName</literal> do cliente no arquivo <filename>/etc/freebsd-update.conf</filename>, e execute as atualizações conforme instruído na <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/handbook/updating-upgrading-freebsdupdate.html">Seção de Atualização do FreeBSD</link> no Handbook.</para>
<!-- Sorry folks, but I disagree here. I believe it is worded fine. If anything, drop everything after "perform" and change "updates" to "FreeBSD Updates" and link that to the handbook -->
<important>
<para>Para o &fbus.ap; funcionar corretamente, é preciso que
estejam compiladas a versão <emphasis>atual</emphasis> e
a versão <emphasis>alvo</emphasis> para a qual você deseja
se atualizar. Isto é necessário para que o sistema determine
quais são os arquivos que diferem entre as versões. Por
exemplo, para atualizar o &os; da versão 7.1-RELEASE
para a versão 7.2-RELEASE, será necessário que você compile e
transfira os arquivos de ambas as versões para o seu servidor
de atualização.</para>
<para>Para que o <application>Servidor de Atualização do FreeBSD</application> funcione corretamente, atualizações para ambas releases <emphasis>atual</emphasis> e a release <emphasis>que se deseja atualizar</emphasis> precisam ser compilados. Isso é necessário para determinar as diferenças de arquivos entre as releases. Por exemplo, ao atualizar um sistema FreeBSD de 7.1-RELEASE para 7.2-RELEASE, as atualizações precisarão ser construídas e carregadas em seu servidor de distribuição para ambas as versões.</para>
</important>
<para>Para referência, segue um exemplo de log completo da
execução do
<link xlink:href="init.txt"><filename>init.sh</filename></link>
.</para>
<para>Para referência, toda a execução do <link xlink:href="init.txt"><filename>init.sh</filename></link> é anexada.</para>
</sect1>
<sect1 xml:id="patch">
<title>Compilando um patch</title>
<title>Compilando um Patch</title>
<para>Toda vez que um <link xlink:href="&url.base;/security/advisories.html">aviso de segurança</link>
ou uma <link xlink:href="&url.base;/security/notices.html">nota de
segurança</link> é anunciada, uma atualização pode ser
compilada.</para>
<para>Toda vez que é anunciado um <link xlink:href="@@URL_RELPREFIX@@/security/advisories.html">aviso de segurança</link> ou uma <link xlink:href="@@URL_RELPREFIX@@/security/notices.html">notificação de segurança</link>, um patch de atualização pode ser construído.</para>
<para>Para este exemplo, a versão 7.1-RELEASE será usada.</para>
<para>Para este exemplo, o 7.1-RELEASE será usado.</para>
<para>Algumas suposições são feitas para a compilação de uma
versão diferente:</para>
<para>Algumas suposições são feitas para uma versão diferente:</para>
<itemizedlist>
<listitem>
<para>Crie a estrutura correta de diretório para a compilação
inicial.</para>
<para>Configure a estrutura de diretórios correta para a compilação inicial.</para>
</listitem>
<listitem>
<para>Faça a compilação inicial da 7.1-RELEASE</para>
<para>Execute uma compilação inicial para o 7.1-RELEASE.</para>
</listitem>
</itemizedlist>
<para>Crie o diretório do patch para a respectiva versão em
<filename>/usr/local/freebsd-update-server/patches/</filename>.</para>
<para>Crie o diretório de correção do respectivo release no diretório <filename>/usr/local/freebsd-update-server/patches/</filename>.</para>
<informalexample>
<screen>&prompt.user; <userinput>mkdir -p /usr/local/freebsd-update-server/patches/7.1-RELEASE/</userinput>
&prompt.user; <userinput>cd /usr/local/freebsd-update-server/patches/7.1-RELEASE</userinput></screen>
<screen><prompt>%</prompt> <userinput>mkdir -p /usr/local/freebsd-update-server/patches/7.1-RELEASE/</userinput>
<prompt>%</prompt> <userinput>cd /usr/local/freebsd-update-server/patches/7.1-RELEASE</userinput></screen>
</informalexample>
<para>Como exemplo, pegue o patch para o &man.named.8;. Leia o
aviso, obtenha o arquivo necessário do <link xlink:href="&url.base;/security/advisories.html">Aviso de Segurança
do &os;</link>. Mais informações sobre como interpretar os
avisos, podem ser encontradas no <link xlink:href="&url.books.handbook;/security-advisories.html">Handbook do
&os;</link>.</para>
<para>Como exemplo, pegue o patch para <citerefentry><refentrytitle>named</refentrytitle><manvolnum>8</manvolnum></citerefentry>. Leia o comunicado, e pegue o arquivo necessário de <link xlink:href="@@URL_RELPREFIX@@/security/advisories.html"> Avisos de Segurança do FreeBSD </link>. Mais informações sobre a interpretação do comunicado podem ser encontradas no <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/handbook/security-advisories.html">Handbook do FreeBSD</link>.</para>
<para>Na <link xlink:href="http://security.freebsd.org/advisories/FreeBSD-SA-09:12.bind.asc">nota de segurança</link>,
este aviso é chamado de <literal>SA-09:12.bind</literal>.
Depois de fazer o download do arquivo, é necessário renomeá-lo
para o nível correto do patch. É recomendado manter
consistência com os níveis oficiais de patch do &os;, mas o nome
pode ser escolhido livremente. Para esta compilação, vamos
seguir a prática atual do &os; e chamá-lo de
<literal>p7</literal>. Renomeie o arquivo:</para>
<para>No <link xlink:href="https://security.freebsd.org/advisories/FreeBSD-SA-09:12.bind.asc">resumo de segurança</link>, este comunicado é chamado <literal>SA-09:12.bind</literal>. Depois de baixar o arquivo, é necessário renomear o arquivo para um nível de correção apropriado. Sugere-se manter isso consistente com os níveis oficiais de correção do FreeBSD, mas seu nome pode ser escolhido livremente. Para esta compilação, vamos seguir a prática atualmente estabelecida do FreeBSD e chamar isso de <literal>p7</literal>. Renomeie o arquivo:</para>
<informalexample>
<screen>&prompt.user; <userinput>cd /usr/local/freebsd-update-server/patches/7.1-RELEASE/; mv bind.patch 7-SA-09:12.bind </userinput></screen>
<screen><prompt>%</prompt> <userinput>cd /usr/local/freebsd-update-server/patches/7.1-RELEASE/; mv bind.patch 7-SA-09:12.bind </userinput></screen>
</informalexample>
<note>
<para>Ao executar uma compilação de nível de patch, é
assumido que os patches anteriores estarão no mesmo lugar.
Quando uma compilação de patch é executada, ela vai aplicar
todos os patches contidos no diretório do patch.</para>
<para>Ao executar uma compilação em nível de patch, supõe-se que os patches anteriores estejam no lugar. Quando uma compilação de patch é executada, ela executará todas os patches contidos no diretório de patch.</para>
<para>Podem ser adicionados patches personalizados na
Compilação. Use o número zero, ou qualquer outro
número.</para>
<para>Pode haver patches personalizados adicionados a qualquer compilação. Use o número zero ou qualquer outro número.</para>
</note>
<warning>
<para>É da responsabilidade do administrador do &fbus.ap;
tomar as devidas ações para verificar a autenticidade de cada
patch.</para>
<para>Cabe ao administrador do <application>Servidor de Atualização do FreeBSD</application> tomar as medidas apropriadas para verificar a autenticidade de cada patch.</para>
</warning>
<para>Neste ponto, um <emphasis>diff</emphasis> está pronto para
ser construído. O software primeiro irá verificar se o
<filename>scripts/init.sh</filename> foi executado na respectiva
versão antes de executar a construção do diff.</para>
<para>Neste ponto, um <emphasis>diff</emphasis> está pronto para ser construído. O software verifica primeiro para ver se um <filename>scripts/init.sh</filename> foi executado na respectiva versão antes de executar a construção do diff.</para>
<informalexample>
<screen>&prompt.root; <userinput>cd /usr/local/freebsd-update-server</userinput>
&prompt.root; <userinput>sh scripts/diff.sh amd64 7.1-RELEASE 7</userinput></screen>
<screen><prompt>#</prompt> <userinput>cd /usr/local/freebsd-update-server</userinput>
<prompt>#</prompt> <userinput>sh scripts/diff.sh <replaceable>amd64 7.1-RELEASE 7</replaceable></userinput></screen>
</informalexample>
<para>O que segue abaixo é um exemplo do log da execução de uma
compilação <emphasis>diferencial</emphasis>.</para>
<para>O que se segue é um exemplo de uma execução de uma compilação <emphasis>diferencial</emphasis>.</para>
<screen>&prompt.root; <userinput>sh -e scripts/diff.sh amd64 7.1-RELEASE 7</userinput>
<screen><prompt>#</prompt> <userinput>sh -e scripts/diff.sh amd64 7.1-RELEASE 7</userinput>
Wed Aug 26 10:09:59 PDT 2009 Extracting world+src for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 17:10:25 UTC 2009 Building world for FreeBSD/amd64 7.1-RELEASE-p7
Wed Aug 26 18:05:11 UTC 2009 Distributing world for FreeBSD/amd64 7.1-RELEASE-p7
@ -671,8 +524,7 @@ Wed Aug 26 17:55:02 UTC 2009
Wed Aug 26 17:20:39 UTC 2009
...</screen>
<para>As atualizações são exibidas, e uma aprovação é
requisitada.</para>
<para>As atualizações são impressas e a aprovação é solicitada.</para>
<screen>New updates:
kernel|generic|/GENERIC/kernel.symbols|f|0|0|0555|0|7c8dc176763f96ced0a57fc04e7c1b8d793f27e006dd13e0b499e1474ac47e10|
@ -691,10 +543,9 @@ files to confirm that they look sensible, then run
# sh -e approve.sh amd64 7.1-RELEASE
to sign the build.</screen>
<para>Siga o mesmo processo descrito anteriormente para aprovar a
compilação:</para>
<para>Siga o mesmo processo descrito anteriormente para aprovar uma compilação:</para>
<screen>&prompt.root; <userinput>sh -e scripts/approve.sh amd64 7.1-RELEASE</userinput>
<screen><prompt>#</prompt> <userinput>sh -e scripts/approve.sh amd64 7.1-RELEASE</userinput>
Wed Aug 26 12:50:06 PDT 2009 Signing build for FreeBSD/amd64 7.1-RELEASE
Wed Aug 26 12:50:06 PDT 2009 Copying files to patch source directories for FreeBSD/amd64 7.1-RELEASE
Wed Aug 26 12:50:06 PDT 2009 Copying files to upload staging area for FreeBSD/amd64 7.1-RELEASE
@ -707,85 +558,71 @@ ready to be uploaded. Remember to run
to unmount the decrypted key once you have finished signing all
the new builds.</screen>
<para>Depois de aprovar a compilação, faça a transferência do
software para o servidor de distribuição:</para>
<para>Depois de aprovar a compilação, faça o upload do software:</para>
<informalexample>
<screen>&prompt.root; <userinput>cd /usr/local/freebsd-update-server</userinput>
&prompt.root; <userinput>sh scripts/upload.sh amd64 7.1-RELEASE</userinput></screen>
<screen><prompt>#</prompt> <userinput>cd /usr/local/freebsd-update-server</userinput>
<prompt>#</prompt> <userinput>sh scripts/upload.sh <replaceable>amd64 7.1-RELEASE</replaceable></userinput></screen>
</informalexample>
<para>Para referência, segue o log de uma execução completa do
<link xlink:href="diff.txt"><filename>diff.sh</filename></link>.</para>
<para>Para referência, toda a execução do <link xlink:href="diff.txt"><filename>diff.sh</filename></link> é anexada.</para>
</sect1>
<sect1 xml:id="tips">
<title>Dicas</title>
<!-- These are nice tips, but there are only a few of them and they need a
bit of rewording to make sense. I'd like to see something that
explains at least the following for every tip:
* Why is this tip necessary? What is the original problem it tries
to solve?
* How to install the changes of the tip, preferably in a <procedure>
element, with clearly separated steps.
* How to check that the changes of the tip had a measurable and
noticeable effect.
We can do this in a followup commit. It doesn't have to be completed
*before* we commit this to CVS. -->
<!-- thank you, i just learned these in the process, and thought I would share. They are "tips" and not necessary, so I do see your point, and I would suggest maybe even renaming the section to something more appropriate. Nothing really comes to mind now, though. -->
<!-- this tip will allow you to maintain a custom release and custom kernel, and update it like any other binary update -->
<itemizedlist>
<listitem>
<para>Se uma versão personalizada tiver sido compilada usando
o <link xlink:href="&url.articles.releng;/release-build.html">procedimento</link>
nativo do <command>make release</command>, o código do
<application>freebsd-update-server</application> irá
funcionar a partir da sua versão. Por exemplo, uma versão
sem o ports ou sem a documentação pode ser compilada
limpando-se as funcionalidades pertencentes às sub-rotinas
de documentação <function>findextradocs()</function>,
<function>addextradocs()</function> e alterando o local de
download na <function>fetchiso()</function>,
respectivamente, no <filename>scripts/build.subr</filename>.
Em um último passo, mude o hash &man.sha256.1; em
<filename>build.conf</filename> na sua respectiva versão e
arquitetura e então você está pronto para compilar sua
versão personalizada.</para>
<para>Se uma versão personalizada for criada usando o procedimento <command>make release</command> <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/articles/releng/release-build.html">nativo</link>, o <application>freebsd-update-server</application> funcionará a partir do seu release. Como exemplo, uma versão sem ports ou documentação pode ser construída limpando funcionalidades de limpeza pertinentes às sub-rotinas de documentação <function>findextradocs()</function>, <function>addextradocs()</function> e alterando o local de download em <function>fetchiso()</function>, respectivamente, em <filename>scripts/build.subr</filename>. Como último passo, altere o hash <citerefentry><refentrytitle>sha256</refentrytitle><manvolnum>1</manvolnum></citerefentry> no arquivo <filename>build.conf</filename> sob sua respectiva versão e arquitetura e você estará pronto para criar sua versão personalizada.</para>
<screen># Compare ${WORKDIR}/release and ${WORKDIR}/$1, identify which parts
<programlisting># Compare ${WORKDIR}/release and ${WORKDIR}/$1, identify which parts
# of the world|doc subcomponent are missing from the latter, and
# build a tarball out of them.
findextradocs () {
}
# Add extra docs to ${WORKDIR}/$1
addextradocs () {
}
</screen>
addextradocs () {
}</programlisting>
</listitem>
<listitem>
<para>Adicionando a opção <option>-j
<replaceable>NÚMERO</replaceable></option> nas etapas
<buildtarget>buildworld</buildtarget> e
<buildtarget>obj</buildtarget> no script
<filename>scripts/build.subr</filename> pode acelerar o
processo dependendo do hardware usado, entretanto isto não é
necessário. Usar esta opção em outras etapas não é
recomendado, pois pode fazer a compilação ficar
instável.</para>
<para>Adicionando flags <option>-j <replaceable>NUMERO</replaceable> </option> para os alvos <buildtarget>buildworld</buildtarget> e <buildtarget>obj</buildtarget> no script <filename>scripts/build.subr</filename> pode acelerar o processamento, dependendo do hardware usado, no entanto, não é necessário. O uso dessas flags em outros alvos não é recomendado, pois pode tornar a construção não confiável.</para>
<screen>#Build the world
log "Building world"
cd /usr/src &amp;&amp;
make -j 2 ${COMPATFLAGS} buildworld 2&gt;&amp;1
<programlisting> # Build the world
log "Building world"
cd /usr/src &amp;&amp;
make -j 2 ${COMPATFLAGS} buildworld 2&gt;&amp;1
# Distribute the world
log "Distributing world"
cd /usr/src/release &amp;&amp;
make -j 2 obj &amp;&amp;
make ${COMPATFLAGS} release.1 release.2 2&gt;&amp;1</screen>
# Distribute the world
log "Distributing world"
cd /usr/src/release &amp;&amp;
make -j 2 obj &amp;&amp;
make ${COMPATFLAGS} release.1 release.2 2&gt;&amp;1</programlisting>
</listitem>
<listitem>
<para>Crie uma entrada SRV apropriada no <link xlink:href="&url.books.handbook;/network-dns.html">DNS</link>
para o servidor de atualização, e coloque outros servidores
com pesos variados. Usar este recurso irá permitir que você
distribua a carga do processo de atualização entre vários
servidores, entretanto esta dica não será necessária a menos
que você deseje prover um serviço redundante.</para>
<para>Crie um registro <link xlink:href="@@URL_RELPREFIX@@/doc/en_US.ISO8859-1/books/handbook/network-dns.html">DNS</link> apropriado para o servidor de atualizações e coloque outros por trás dele com variáveis de pesos diferentes. O uso desse recurso fornecerá espelhos de atualização, no entanto, essa dica não é necessária, a menos que você deseje fornecer um serviço redundante.</para>
<screen>
_http._tcp.update.myserver.com. IN SRV 0 2 80 host1.myserver.com.
SRV 0 1 80 host2.myserver.com.
SRV 0 0 80 host3.myserver.com.</screen>
<programlisting>_http._tcp.update.myserver.com. IN SRV 0 2 80 host1.myserver.com.
IN SRV 0 1 80 host2.myserver.com.
IN SRV 0 0 80 host3.myserver.com.</programlisting>
</listitem>
</itemizedlist>
</sect1>

File diff suppressed because it is too large Load diff