O primeiro passo é executar o
scripts/make.sh
. 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.
#
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:Anote a impressão digital (fingerprint) da chave gerada.
Ela é necessária no
/etc/freebsd-update.conf
para as
atualizações de binários.
Neste ponto, nós estamos prontos para a etapa de compilação.
#
cd /usr/local/freebsd-update-server
#
sh scripts/init.sh amd64 7.2-RELEASE
A seguir está um exemplo de uma execução 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 compilação da base do sistema será feita
novamente, com os patches. Uma explicação mais detalhada pode
ser encontrada em scripts/build.subr
.
Durante a segunda compilação, o serviço de network time
protocol, ntpd(8) será desligado. De acordo com
Colin Percival, Chefe de Segurança emérito do FreeBSD, "o freebsd-update-server
compila códigos necessários para identificar os
timestamps
, 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
timestamp
funciona realizando duas
compilações separadas por 400 dias e comparando os
resultados."
Finalmente, a compilação termina.
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
USAGE
, distribuído com o código fonte.
Execute o scripts/approve.sh
. 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.
#
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-RELEASEDepois que o processo de aprovação tiver sido finalizado, o processo de transferência pode ser iniciado.
#
cd /usr/local/freebsd-update-server
#
sh scripts/upload.sh amd64 7.2-RELEASE
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 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 atualizações sejam distribuídas. A exata configuração dependerá do servidor web utilizado. Para o servidor web Apache, por favor, consulte a seção Configuração do servidor Apache do Handbook.
Atualize o KeyPrint
e o
ServerName
no arquivo
/etc/freebsd-update.conf
, e efetue as
atualizações de acordo com os procedimentos descritos na seção
Atualização
do FreeBSD do Handbook.
Para o Servidor de Atualização do FreeBSD funcionar corretamente, é preciso que estejam compiladas a versão atual e a versão alvo 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 FreeBSD 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 referência, segue um exemplo de log completo da
execução do
init.sh
.
Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Para perguntas sobre FreeBSD, leia a
documentação antes de contatar
<questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para
<doc@FreeBSD.org>.