        Construa Seu Proprio Servidor de Atualizac,ao do FreeBSD

  Jason Helfman

   Jason Helfman <jgh@FreeBSD.org>

   $FreeBSD:
   release/8.4.0/pt_BR.ISO8859-1/articles/freebsd-update-server/article.xml
   41326 2013-03-30 21:29:50Z ebrandi $

   Copyright (c) 2009, 2010, 2011, 2013 Jason Helfman

   $FreeBSD:
   release/8.4.0/pt_BR.ISO8859-1/articles/freebsd-update-server/article.xml
   41326 2013-03-30 21:29:50Z ebrandi $

   FreeBSD is a registered trademark of the FreeBSD Foundation.

   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 "(TM)" or the "(R)" symbol.

   Intel, Celeron, 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.

   AMD, Am486, Am5X86, AMD Athlon, AMD Duron, AMD Opteron, AMD-K6,
   Athlon, Elan, Opteron, and PCnet are trademarks of Advanced Micro
   Devices, Inc.

     --------------------------------------------------------------

     Este artigo descreve como construir um Servidor de Atualizac,ao
     do FreeBSD para uso interno na sua organizac,ao. O software
     freebsd-update-server foi escrito pelo Colin Percival
     <cperciva@FreeBSD.org>, Chefe de Seguranc,a emerito do FreeBSD.
     Para usuarios que acreditam que e conveniente atualizar seus
     sistemas a partir de um servidor oficial de atualizac,ao,
     construir o seu proprio Servidor de Atualizac,ao do FreeBSD pode
     ajuda-lo a estender suas funcionalidades, seja por adicionar
     suporte a versoes customizadas do FreeBSD ou por viabilizar a
     criac,ao de um servidor local o qual permitira atualizac,oes
     mais rapidas caso voce possua muitos servidores para atualizar.

     --------------------------------------------------------------

1 Agradecimentos

   Este artigo posteriormente impresso na BSD Magazine.

     --------------------------------------------------------------

2 Introduc,ao

   Usuarios experientes ou administradores sao frequentemente
   responsaveis por diversas maquinas ou ambientes. Eles entendem as
   dificuldades e os desafios de manter tal estrutura. A utilizac,ao
   de um Servidor de Atualizac,ao do FreeBSD torna mais facil a
   tarefa de implantar patches de seguranc,a e de softwares nas
   maquinas selecionadas para testa-los antes proceder com o seu
   deploy no ambiente de produc,ao. Isto tambem significa que seus
   servidores poderao ser atualizados a partir da rede local em vez
   de utilizarem sua conexao de internet, o que torna o processo
   muito mais rapido. Este artigo descreve as etapas envolvidas na
   criac,ao de um Servidor de Atualizac,ao do FreeBSD para uso
   interno.

     --------------------------------------------------------------

3 Pre-Requisitos

   Para construir o seu Servidor de Atualizac,ao do FreeBSD alguns
   requisitos devem ser cumpridos.

     * Estar executando o FreeBSD.

         Nota: No minimo, as atualizac,oes precisam ser compiladas em
         uma versao do FreeBSD maior ou igual a versao alvo a ser
         distribuida.

     * Ter acesso a uma conta de usuario com no minimo 4 GB de
       espac,o livre. Isto permite a criac,ao de atualizac,oes para
       as versoes 7.1 e 7.2, mas o espac,o exato requerido pode mudar
       de versao para versao.

     * Ter acesso a uma conta ssh(1) em uma maquina remota para
       enviar as atualizac,oes a serem distribuidas.

     * Possuir um servidor web, como Apache, com mais da metade do
       espac,o necessario para a compialac,ao. Por exemplo,
       compilac,oes testes para 7.1 e 7.2 consomem um espac,o total
       de 4 GB, e usam 2.6 GB para distribuir essas atualizac,oes.

     * Ter conhecimento basico de shell script com o Bourne shell,
       sh(1)

     --------------------------------------------------------------

4 Instalac,ao & Configurac,ao

   Para efetuar o download do software freebsd-update-server instale
   o devel/subversion e execute:

 % svn co http://svn.freebsd.org/base/user/cperciva/freebsd-update-build freebsd-update-server

   Atualize o scripts/build.conf de forma adequada. Ele e usado
   durante as operac,oes de compilac,ao.

   Aqui esta o build.conf padrao, que devera ser modificado para se
   adequar ao seu ambiente.

 # Main configuration file for FreeBSD Update builds.  The
 # release-specific configuration data is lower down in
 # the scripts tree.

 # Location from which to fetch releases
 export FTP=ftp://ftp2.freebsd.org/pub/FreeBSD/releases(1)

 # Host platform
 export HOSTPLATFORM=`uname -m`

 # Host name to use inside jails
 export BUILDHOSTNAME=${HOSTPLATFORM}-builder.daemonology.net(2)

 # Location of SSH key
 export SSHKEY=/root/.ssh/id_dsa(3)

 # SSH account into which files are uploaded
 MASTERACCT=builder@wadham.daemonology.net(4)

 # Directory into which files are uploaded
 MASTERDIR=update-master.freebsd.org(5)

   Paramentros que devem ser considerados:

   (1)
           Este e o local de onde serao feitos os downloads das
           imagens ISO (pela sub-rotina fetchiso() do
           scripts/build.subr). O local a ser configurado nao e
           limitado a URIs de FTP. Qualquer URI suportada pela
           ferramenta fetch(1) pode ser usada.

           Customizac,oes do codigo da fetchiso() podem ser feitas
           copiando o script padrao build.subr para o local da sua
           versao e arquitetura especifica
           scripts/RELEASE/ARCHITECTURE/build.subr e alterando o
           arquivo.

   (2)
           O nome do computador que fara a compilac,ao. Esta
           informac,ao sera exibida durante a atualizac,ao dos
           sistemas:

 % uname -v

   (3)
           A chave SSH para enviar os arquivos para o servidor de
           atualizac,ao. O par de chaves pode ser criado digitando
           ssh-keygen -t dsa. Este parametro e opcional; a
           autenticac,ao por senha sera usada como metodo de
           autenticac,ao quando a variavel SSHKEY nao estiver
           definida.

           A pagina do manual ssh-keygen(1) tem informac,oes mais
           detalhadas sobre o SSH e os passos apropriados para criar
           e usar chaves.

   (4)
           Conta para enviar os arquivos para o servidor de
           atualizac,ao.
   (5)
           Diretorio do servidor de atualizac,ao para o qual os
           arquivos serao enviados.

   O arquivo build.conf padrao, distribuido com o fonte do
   freebsd-update-server, esta preparado para compilar a versao i386
   do FreeBSD. A titulo de exemplo sobre como compilar um servidor de
   atualizac,ao para outras arquiteturas, as seguintes modificac,oes
   sao necessarias para a arquitetura amd64:

    1. Crie um ambiente de compilac,ao para o amd64:

 % mkdir -p /usr/local/freebsd-update-server/scripts/7.2-RELEASE/amd64

    2. Copie o arquivo build.conf para o diretorio recem criado. As
       configurac,oes de compilac,ao para o FreeBSD 7.2-RELEASE na
       arquitetura amd64 devem ser similares a:

 # SHA256 hash of RELEASE disc1.iso image.
 export RELH=1ea1f6f652d7c5f5eab7ef9f8edbed50cb664b08ed761850f95f48e86cc71ef5(1)

 # Components of the world, source, and kernels
 export WORLDPARTS="base catpages dict doc games info manpages proflibs lib32"
 export SOURCEPARTS="base bin contrib crypto etc games gnu include krb5  \
                 lib libexec release rescue sbin secure share sys tools  \
                 ubin usbin cddl"
 export KERNELPARTS="generic"

 # EOL date
 export EOL=1275289200(2)

            (1)
                    A chave hash sha256(1) da versao desejada, ela e
                    publicada no anuncio da versao.
            (2)
                    Para gerar o numero "End of Life" (Fim da Vida)
                    para o build.conf, consulte a informac,ao sobre o
                    "Estimated EOL" publicada no Site de Seguranc,a
                    do FreeBSD. O valor do EOL pode ser derivado a
                    partir da data listada no site, usando a
                    ferramenta date(1), por exemplo:

 % date -j -f '%Y%m%d-%H%M%S' '20090401-000000' '+%s'

     --------------------------------------------------------------

5 Preparando a atualizac,ao

   O primeiro passo e executar o scripts/make.sh. Isto ira compilar
   alguns binarios, criar diretorios, e gerar uma chave de assinatura
   RSA usada para aprovar as compilac,oes. Neste passo, uma senha
   devera ser fornecida para terminar a criac,ao da chave de
   assinatura.

 # sh scripts/make.sh
 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'
 cc -O2 -fno-strict-aliasing -pipe   unstamp.c  -o unstamp
 install findstamps ../bin
 install unstamp ../bin
 rm -f findstamps unstamp
 Generating RSA private key, 4096 bit long modulus
 ................................................................................++
 ...................++
 e is 65537 (0x10001)

 Public key fingerprint:
 27ef53e48dc869eea6c3136091cc6ab8589f967559824779e855d58a2294de9e

 Encrypting signing key for root
 enter aes-256-cbc encryption password:
 Verifying - enter aes-256-cbc encryption password:

     Nota: Anote a impressao digital (fingerprint) da chave gerada.
     Ela e necessaria no /etc/freebsd-update.conf para as
     atualizac,oes de binarios.

   Neste ponto, nos estamos prontos para a etapa de compilac,ao.

 # cd /usr/local/freebsd-update-server
 # sh scripts/init.sh amd64 7.2-RELEASE

   A seguir esta um exemplo de uma execuc,ao inicial.

 # sh scripts/init.sh amd64 7.2-RELEASE
 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
 Mon Aug 24 16:32:44 PDT 2009 Extracting components for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 16:34:05 PDT 2009 Constructing world+src image for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 16:35:57 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 23:36:24 UTC 2009 Building world for FreeBSD/amd64 7.2-RELEASE
 Tue Aug 25 00:31:29 UTC 2009 Distributing world for FreeBSD/amd64 7.2-RELEASE
 Tue Aug 25 00:32:36 UTC 2009 Building and distributing kernels for FreeBSD/amd64 7.2-RELEASE
 Tue Aug 25 00:44:44 UTC 2009 Constructing world components for FreeBSD/amd64 7.2-RELEASE
 Tue Aug 25 00:44:56 UTC 2009 Distributing source for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 17:46:18 PDT 2009 Moving components into staging area for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 17:46:33 PDT 2009 Identifying extra documentation for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 17:47:13 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 17:47:18 PDT 2009 Indexing release for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 17:50:44 PDT 2009 Indexing world0 for FreeBSD/amd64 7.2-RELEASE

 Files built but not released:
 Files released but not built:
 Files which differ by more than contents:
 Files which differ between release and build:
 kernel|generic|/GENERIC/hptrr.ko
 kernel|generic|/GENERIC/kernel
 src|sys|/sys/conf/newvers.sh
 world|base|/boot/loader
 world|base|/boot/pxeboot
 world|base|/etc/mail/freebsd.cf
 world|base|/etc/mail/freebsd.submit.cf
 world|base|/etc/mail/sendmail.cf
 world|base|/etc/mail/submit.cf
 world|base|/lib/libcrypto.so.5
 world|base|/usr/bin/ntpq
 world|base|/usr/lib/libalias.a
 world|base|/usr/lib/libalias_cuseeme.a
 world|base|/usr/lib/libalias_dummy.a
 world|base|/usr/lib/libalias_ftp.a
 ...

   Em seguida, a compilac,ao da base do sistema sera feita novamente,
   com os patches. Uma explicac,ao mais detalhada pode ser encontrada
   em scripts/build.subr.

     Atenc,ao: Durante a segunda compilac,ao, o servic,o de network
     time protocol, ntpd(8) sera desligado. De acordo com Colin
     Percival <cperciva@FreeBSD.org>, Chefe de Seguranc,a emerito do
     FreeBSD, "o freebsd-update-server compila codigos necessarios
     para identificar os timestamps, os quais sao armazenadas em
     arquivos, de modo que estes ultimos podem ser ignorados quando
     estivermos comparando compilac,oes diferentes para determinar
     quais arquivos precisam ser atualizados. Esta procura por
     timestamp funciona realizando duas compilac,oes separadas por
     400 dias e comparando os resultados."

 Mon Aug 24 17:54:07 PDT 2009 Extracting world+src for FreeBSD/amd64 7.2-RELEASE
 Wed Sep 29 00:54:34 UTC 2010 Building world for FreeBSD/amd64 7.2-RELEASE
 Wed Sep 29 01:49:42 UTC 2010 Distributing world for FreeBSD/amd64 7.2-RELEASE
 Wed Sep 29 01:50:50 UTC 2010 Building and distributing kernels for FreeBSD/amd64 7.2-RELEASE
 Wed Sep 29 02:02:56 UTC 2010 Constructing world components for FreeBSD/amd64 7.2-RELEASE
 Wed Sep 29 02:03:08 UTC 2010 Distributing source for FreeBSD/amd64 7.2-RELEASE
 Tue Sep 28 19:04:31 PDT 2010 Moving components into staging area for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 19:04:46 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 19:04:51 PDT 2009 Indexing world1 for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 19:08:04 PDT 2009 Locating build stamps for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 19:10:19 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 19:10:19 PDT 2009 Preparing to copy files into staging area for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 19:10:20 PDT 2009 Copying data files into staging area for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 12:16:57 PDT 2009 Copying metadata files into staging area for FreeBSD/amd64 7.2-RELEASE
 Mon Aug 24 12:16:59 PDT 2009 Constructing metadata index and tag for FreeBSD/amd64 7.2-RELEASE

 Files found which include build stamps:
 kernel|generic|/GENERIC/hptrr.ko
 kernel|generic|/GENERIC/kernel
 world|base|/boot/loader
 world|base|/boot/pxeboot
 world|base|/etc/mail/freebsd.cf
 world|base|/etc/mail/freebsd.submit.cf
 world|base|/etc/mail/sendmail.cf
 world|base|/etc/mail/submit.cf
 world|base|/lib/libcrypto.so.5
 world|base|/usr/bin/ntpq
 world|base|/usr/include/osreldate.h
 world|base|/usr/lib/libalias.a
 world|base|/usr/lib/libalias_cuseeme.a
 world|base|/usr/lib/libalias_dummy.a
 world|base|/usr/lib/libalias_ftp.a
 ...

   Finalmente, a compilac,ao termina.

 Values of build stamps, excluding library archive headers:
 v1.2 (Aug 25 2009 00:40:36)
 v1.2 (Aug 25 2009 00:38:22)
 @(#)FreeBSD 7.2-RELEASE #0: Tue Aug 25 00:38:29 UTC 2009
 FreeBSD 7.2-RELEASE #0: Tue Aug 25 00:38:29 UTC 2009
     root@server.myhost.com:/usr/obj/usr/src/sys/GENERIC
 7.2-RELEASE
 Mon Aug 24 23:55:25 UTC 2009
 Mon Aug 24 23:55:25 UTC 2009
 ##### built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009
 ##### built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009
 ##### built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009
 ##### built by root@server.myhost.com on Tue Aug 25 00:16:15 UTC 2009
 Mon Aug 24 23:46:47 UTC 2009
 ntpq 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)
  * Copyright (c) 1992-2009 The FreeBSD Project.
 Mon Aug 24 23:46:47 UTC 2009
 Mon Aug 24 23:55:40 UTC 2009
 Aug 25 2009
 ntpd 4.2.4p5-a Mon Aug 24 23:55:52 UTC 2009 (1)
 ntpdate 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)
 ntpdc 4.2.4p5-a Mon Aug 24 23:55:53 UTC 2009 (1)
 Tue Aug 25 00:21:21 UTC 2009
 Tue Aug 25 00:21:21 UTC 2009
 Tue Aug 25 00:21:21 UTC 2009
 Mon Aug 24 23:46:47 UTC 2009

 FreeBSD/amd64 7.2-RELEASE initialization build complete.  Please
 review the list of build stamps printed above to confirm that
 they look sensible, then run
 # sh -e approve.sh amd64 7.2-RELEASE
 to sign the release.

   Se tudo estiver correto, aprove a compilac,ao. Maiores
   informac,oes sobre como determinar se o processo finalizou com
   sucesso podem ser encontradas no arquivo chamado USAGE,
   distribuido com o codigo fonte. Execute o scripts/approve.sh. Isto
   ira assinar a versao, e mover os seus componentes para uma area de
   preparo adequada para a transferencia para o servidor de
   distribuic,ao.

 # cd /usr/local/freebsd-update-server
 # sh scripts/mountkey.sh

 # sh -e scripts/approve.sh amd64 7.2-RELEASE
 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

   Depois que o processo de aprovac,ao tiver sido finalizado, o
   processo de transferencia pode ser iniciado.

 # cd /usr/local/freebsd-update-server
 # sh scripts/upload.sh amd64 7.2-RELEASE

     Nota: No caso do codigo de atualizac,ao precisar ser transferido
     novamente para o servidor de distribuic,ao, isto podera ser
     feito entrando-se no diretorio publico de distribuic,ao da
     versao desejada e atualizando os atributos do arquivo uploaded.

 # cd /usr/local/freebsd-update-server/pub/7.2-RELEASE/amd64
 # touch -t 200801010101.01 uploaded

   Os arquivos transferidos precisam ficar na raiz do servidor web
   para que as atualizac,oes sejam distribuidas. A exata
   configurac,ao dependera do servidor web utilizado. Para o servidor
   web Apache, por favor, consulte a sec,ao Configurac,ao do servidor
   Apache do Handbook.

   Atualize o KeyPrint e o ServerName no arquivo
   /etc/freebsd-update.conf, e efetue as atualizac,oes de acordo com
   os procedimentos descritos na sec,ao Atualizac,ao do FreeBSD do
   Handbook.

     Importante: Para o Servidor de Atualizac,ao do FreeBSD funcionar
     corretamente, e preciso que estejam compiladas a versao atual e
     a versao alvo para a qual voce deseja se atualizar. Isto e
     necessario para que o sistema determine quais sao os arquivos
     que diferem entre as versoes. Por exemplo, para atualizar o
     FreeBSD da versao 7.1-RELEASE para a versao 7.2-RELEASE, sera
     necessario que voce compile e transfira os arquivos de ambas as
     versoes para o seu servidor de atualizac,ao.

   Para referencia, segue um exemplo de log completo da execuc,ao do
   init.sh .

     --------------------------------------------------------------

6 Compilando um patch

   Toda vez que um aviso de seguranc,a ou uma nota de seguranc,a e
   anunciada, uma atualizac,ao pode ser compilada.

   Para este exemplo, a versao 7.1-RELEASE sera usada.

   Algumas suposic,oes sao feitas para a compilac,ao de uma versao
   diferente:

     * Crie a estrutura correta de diretorio para a compilac,ao
       inicial.

     * Fac,a a compilac,ao inicial da 7.1-RELEASE

   Crie o diretorio do patch para a respectiva versao em
   /usr/local/freebsd-update-server/patches/.

 % mkdir -p /usr/local/freebsd-update-server/patches/7.1-RELEASE/
 % cd /usr/local/freebsd-update-server/patches/7.1-RELEASE

   Como exemplo, pegue o patch para o named(8). Leia o aviso, obtenha
   o arquivo necessario do Aviso de Seguranc,a do FreeBSD. Mais
   informac,oes sobre como interpretar os avisos, podem ser
   encontradas no Handbook do FreeBSD.

   Na nota de seguranc,a, este aviso e chamado de SA-09:12.bind.
   Depois de fazer o download do arquivo, e necessario renomea-lo
   para o nivel correto do patch. E recomendado manter consistencia
   com os niveis oficiais de patch do FreeBSD, mas o nome pode ser
   escolhido livremente. Para esta compilac,ao, vamos seguir a
   pratica atual do FreeBSD e chama-lo de p7. Renomeie o arquivo:

 % cd /usr/local/freebsd-update-server/patches/7.1-RELEASE/; mv bind.patch 7-SA-09:12.bind

     Nota: Ao executar uma compilac,ao de nivel de patch, e assumido
     que os patches anteriores estarao no mesmo lugar. Quando uma
     compilac,ao de patch e executada, ela vai aplicar todos os
     patches contidos no diretorio do patch.

     Podem ser adicionados patches personalizados na Compilac,ao. Use
     o numero zero, ou qualquer outro numero.

     Atenc,ao: E da responsabilidade do administrador do Servidor de
     Atualizac,ao do FreeBSD tomar as devidas ac,oes para verificar a
     autenticidade de cada patch.

   Neste ponto, um diff esta pronto para ser construido. O software
   primeiro ira verificar se o scripts/init.sh foi executado na
   respectiva versao antes de executar a construc,ao do diff.

 # cd /usr/local/freebsd-update-server
 # sh scripts/diff.sh amd64 7.1-RELEASE 7

   O que segue abaixo e um exemplo do log da execuc,ao de uma
   compilac,ao diferencial.

 # sh -e scripts/diff.sh amd64 7.1-RELEASE 7
 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
 Wed Aug 26 18:06:16 UTC 2009 Building and distributing kernels for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 18:17:50 UTC 2009 Constructing world components for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 18:18:02 UTC 2009 Distributing source for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 11:19:23 PDT 2009 Moving components into staging area for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 11:19:37 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 11:19:42 PDT 2009 Indexing world0 for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 11:23:02 PDT 2009 Extracting world+src for FreeBSD/amd64 7.1-RELEASE-p7
 Thu Sep 30 18:23:29 UTC 2010 Building world for FreeBSD/amd64 7.1-RELEASE-p7
 Thu Sep 30 19:18:15 UTC 2010 Distributing world for FreeBSD/amd64 7.1-RELEASE-p7
 Thu Sep 30 19:19:18 UTC 2010 Building and distributing kernels for FreeBSD/amd64 7.1-RELEASE-p7
 Thu Sep 30 19:30:52 UTC 2010 Constructing world components for FreeBSD/amd64 7.1-RELEASE-p7
 Thu Sep 30 19:31:03 UTC 2010 Distributing source for FreeBSD/amd64 7.1-RELEASE-p7
 Thu Sep 30 12:32:25 PDT 2010 Moving components into staging area for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 12:32:39 PDT 2009 Extracting extra docs for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 12:32:43 PDT 2009 Indexing world1 for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 12:35:54 PDT 2009 Locating build stamps for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 12:36:58 PDT 2009 Reverting changes due to build stamps for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 12:37:14 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 12:37:14 PDT 2009 Preparing to copy files into staging area for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 12:37:15 PDT 2009 Copying data files into staging area for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 12:43:23 PDT 2009 Copying metadata files into staging area for FreeBSD/amd64 7.1-RELEASE-p7
 Wed Aug 26 12:43:25 PDT 2009 Constructing metadata index and tag for FreeBSD/amd64 7.1-RELEASE-p7
 ...
 Files found which include build stamps:
 kernel|generic|/GENERIC/hptrr.ko
 kernel|generic|/GENERIC/kernel
 world|base|/boot/loader
 world|base|/boot/pxeboot
 world|base|/etc/mail/freebsd.cf
 world|base|/etc/mail/freebsd.submit.cf
 world|base|/etc/mail/sendmail.cf
 world|base|/etc/mail/submit.cf
 world|base|/lib/libcrypto.so.5
 world|base|/usr/bin/ntpq
 world|base|/usr/include/osreldate.h
 world|base|/usr/lib/libalias.a
 world|base|/usr/lib/libalias_cuseeme.a
 world|base|/usr/lib/libalias_dummy.a
 world|base|/usr/lib/libalias_ftp.a
 ...
 Values of build stamps, excluding library archive headers:
 v1.2 (Aug 26 2009 18:13:46)
 v1.2 (Aug 26 2009 18:11:44)
 @(#)FreeBSD 7.1-RELEASE-p7 #0: Wed Aug 26 18:11:50 UTC 2009
 FreeBSD 7.1-RELEASE-p7 #0: Wed Aug 26 18:11:50 UTC 2009
     root@server.myhost.com:/usr/obj/usr/src/sys/GENERIC
 7.1-RELEASE-p7
 Wed Aug 26 17:29:15 UTC 2009
 Wed Aug 26 17:29:15 UTC 2009
 ##### built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009
 ##### built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009
 ##### built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009
 ##### built by root@server.myhost.com on Wed Aug 26 17:49:58 UTC 2009
 Wed Aug 26 17:20:39 UTC 2009
 ntpq 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)
  * Copyright (c) 1992-2009 The FreeBSD Project.
 Wed Aug 26 17:20:39 UTC 2009
 Wed Aug 26 17:29:30 UTC 2009
 Aug 26 2009
 ntpd 4.2.4p5-a Wed Aug 26 17:29:41 UTC 2009 (1)
 ntpdate 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)
 ntpdc 4.2.4p5-a Wed Aug 26 17:29:42 UTC 2009 (1)
 Wed Aug 26 17:55:02 UTC 2009
 Wed Aug 26 17:55:02 UTC 2009
 Wed Aug 26 17:55:02 UTC 2009
 Wed Aug 26 17:20:39 UTC 2009
 ...

   As atualizac,oes sao exibidas, e uma aprovac,ao e requisitada.

 New updates:
 kernel|generic|/GENERIC/kernel.symbols|f|0|0|0555|0|7c8dc176763f96ced0a57fc04e7c1b8d793f27e006dd13e0b499e1474ac47e10|
 kernel|generic|/GENERIC/kernel|f|0|0|0555|0|33197e8cf15bbbac263d17f39c153c9d489348c2c534f7ca1120a1183dec67b1|
 kernel|generic|/|d|0|0|0755|0||
 src|base|/|d|0|0|0755|0||
 src|bin|/|d|0|0|0755|0||
 src|cddl|/|d|0|0|0755|0||
 src|contrib|/contrib/bind9/bin/named/update.c|f|0|10000|0644|0|4d434abf0983df9bc47435670d307fa882ef4b348ed8ca90928d250f42ea0757|
 src|contrib|/contrib/bind9/lib/dns/openssldsa_link.c|f|0|10000|0644|0|c6805c39f3da2a06dd3f163f26c314a4692d4cd9a2d929c0acc88d736324f550|
 src|contrib|/contrib/bind9/lib/dns/opensslrsa_link.c|f|0|10000|0644|0|fa0f7417ee9da42cc8d0fd96ad24e7a34125e05b5ae075bd6e3238f1c022a712|
 ...
 FreeBSD/amd64 7.1-RELEASE update build complete.  Please review
 the list of build stamps printed above and the list of updated
 files to confirm that they look sensible, then run
 # sh -e approve.sh amd64 7.1-RELEASE
 to sign the build.

   Siga o mesmo processo descrito anteriormente para aprovar a
   compilac,ao:

 # sh -e scripts/approve.sh amd64 7.1-RELEASE
 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
 Wed Aug 26 12:50:07 PDT 2009 Updating databases for FreeBSD/amd64 7.1-RELEASE
 Wed Aug 26 12:50:07 PDT 2009 Cleaning staging area for FreeBSD/amd64 7.1-RELEASE

 The FreeBSD/amd64 7.1-RELEASE update build has been signed and is
 ready to be uploaded.  Remember to run
 # sh -e umountkey.sh
 to unmount the decrypted key once you have finished signing all
 the new builds.

   Depois de aprovar a compilac,ao, fac,a a transferencia do software
   para o servidor de distribuic,ao:

 # cd /usr/local/freebsd-update-server
 # sh scripts/upload.sh amd64 7.1-RELEASE

   Para referencia, segue o log de uma execuc,ao completa do diff.sh.

     --------------------------------------------------------------

7 Dicas

     * Se uma versao personalizada tiver sido compilada usando o
       procedimento nativo do make release, o codigo do
       freebsd-update-server ira funcionar a partir da sua versao.
       Por exemplo, uma versao sem o ports ou sem a documentac,ao
       pode ser compilada limpando-se as funcionalidades pertencentes
       `as sub-rotinas de documentac,ao findextradocs(),
       addextradocs() e alterando o local de download na fetchiso(),
       respectivamente, no scripts/build.subr. Em um ultimo passo,
       mude o hash sha256(1) em build.conf na sua respectiva versao e
       arquitetura e entao voce esta pronto para compilar sua versao
       personalizada.

 # 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 () {
 }

     * Adicionando a opc,ao -j NUMERO nas etapas buildworld e obj no
       script scripts/build.subr pode acelerar o processo dependendo
       do hardware usado, entretanto isto nao e necessario. Usar esta
       opc,ao em outras etapas nao e recomendado, pois pode fazer a
       compilac,ao ficar instavel.

 #Build the world
 log "Building world"
 cd /usr/src &&
 make -j 2 ${COMPATFLAGS} buildworld 2>&1

 # Distribute the world
 log "Distributing world"
 cd /usr/src/release &&
 make -j 2 obj &&
   make ${COMPATFLAGS} release.1 release.2 2>&1

     * Crie uma entrada SRV apropriada no DNS para o servidor de
       atualizac,ao, e coloque outros servidores com pesos variados.
       Usar este recurso ira permitir que voce distribua a carga do
       processo de atualizac,ao entre varios servidores, entretanto
       esta dica nao sera necessaria a menos que voce deseje prover
       um servic,o redundante.

 
         _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.

     --------------------------------------------------------------

            Este, e outros documentos, podem ser obtidos em
                ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

  Para perguntas sobre FreeBSD, leia a documentac,ao antes de contatar
                        <questions@FreeBSD.org>.
       Para perguntas sobre esta documentac,ao, envie e-mail para
                           <doc@FreeBSD.org>.
