[FUG-BR] Relato de experiência atualizando FreeBSD 8.x para 9.x

Marcelo Gondim gondim em bsdinfo.com.br
Sábado Dezembro 3 10:08:13 BRST 2011


Olá Pessoal,

Como sou relativamente novo no mundo do FreeBSD comparado à muitos aqui, 
resolvi fazer a atualização de um servidor meu (particular) que rodava 
FreeBSD 8.2 Stable para a versão 9.0-PREREALEASE e relatar como foi um 
sucesso. Creio que será interessante para aqueles que são novos assim 
como eu, pois estou nessa jornada um pouco mais de 1 ano apenas.

Ambiente convertido:

- FreeBSD 8.2 Stable.
- Servidor Web Apache 2.2.21
- PHP5 versão 5.3.8
- MySQL Server 5.0.92
- Servidor de Correio configurado pelo projeto IredMail com outras 
melhorias.
     - Postfix 2.7.7
     - Clamav 0.97.3
     - Amavisd-new 2.7.0
     - Dovecot 1.2.17
     - Dovecot-managesieve 0.11.13
     - Dovecot-sieve 1.2+0.1.18
     - Roundcube 0.6_1
- FTP com pure-ftpd 1.0.34 com suporte à mysql.
- Ambiente de virtualização usando Virtualbox-ose 4.0.14
- Sistema usando ZFS RAIDZ com 4 discos de 500Gb SATA II.
- Partições do Sistema usando LABELs feito com o glabel para evitar 
mudanças de nomes dos dispositivos que poderia acontecer na migração da 
versão 8 para a 9.

Um ambiente bem legal, meio heterogêneo propício à dar algum problema no 
processo e realmente deu mas foi bem simples de resolver.

- Primeiramente fiz aquele cara que sempre nos salva dos problemas no 
dia-a-dia o chamado Backup. Fiz um backup geral do sistema usando TAR 
para o caso de eu precisar voltar tudo como estava. Na pior das 
hipóteses instalaria a versão 8 do zero e jogaria o TAR por cima e 
pronto. Resolvido.

- Fui para o /usr/src e fiz o csup -g -L2 no meu arquivo sup já alterado 
a tag para o RELENG_9. Nessa hora um lanche caiu muito bem. :)
- Dei uma olhada no arquivo /usr/src/UPDATING para ver as mudanças recentes.
- Próximo passo foi fazer o: make buildworld  demorado mas foi 
tranquilo, não deu nenhum erro na compilação, foi perfeito!
- Quando acabou fui compilar meu kernel: make buildkernel KERNCONF=GONDIM
- Até aqui imaginei que não fosse dar algum problema, porque nunca tive 
problemas nesses processos, então fiquei tranquilo.
- Fiz o make installkernel KERNCONF=GONDIM e o make installworld.

- Nesse momento veio a parte que me exigiu mais atenção e de forma 
trabalhosa. Muitos aqui devem ter técnicas para se fazer isso mais 
facilmente mas eu realmente quis ver tudo que estava sendo alterado nas 
confs e scripts e por isso mandei o: mergemaster -i   alguns apelidam 
ele também de merdamaster mas ele não é o vilão fazedor de caca, quem 
faz é quem escolhe o D ou o I HAhAHahA

- Olhei todas as confs que foi mostrado, algumas não atualizei porque 
não havia necessidade, outras eu aceitei as alterações e incluí as 
minhas modificações. Enfim, foi um processo demorado, bem demorado mas 
que valeu apena.

- Terminei fazendo o make delete-old e o make delete-old-libs esses 
caras removeram um monte de coisas "obsoletas". Obsoletas para o sistema 
base mas para os pacotes instalados nem tanto. Mas isso era o que eu já 
esperava mesmo. Estamos atualizando para um sistema novo e isso requer 
mudanças em bibliotecas, compiladores, uma série de outros programas.

- Após o reboot o sistema entrou normalmente e logicamente todos os 
programas e serviços que eu tinha no servidor não funcionavam mais pois 
haviam sido compilados com libs que não faziam mais parte do sistema. 
Nesse ponto sou muito grato ao Douglas Barton por ter criado o 
portmaster. :D

- Eu precisava recompilar todos os pacotes do sistema. Num passado não 
tão distante tive problemas com o portupgrade e quando conheci e comecei 
à usar o portmaster meus problemas acabaram. Na cara e na coragem mandei 
o comando:

# portmaster -a -f

- Com o comando acima o portmaster identificou todos os pacotes 
instalados no sistema, me mostrou as opções de compilação de cada pacote 
para eu confirmar se queria mudar algo, no final me perguntou se poderia 
atualizar todos os pacotes que me mostrou na relação.

- No meio da atualização tive 1 problema que resultou numa mensagem que 
envolvia o mysql e que precisava de uma lib que não existia mais, que 
poderia resolver o problema e voltar de onde parei. Tudo que fiz para 
resolver o problema foi: portmaster mysql  nesse ponto ele recompilou o 
mysql-client e o mysql-server com as libs novas. Voltei e fiz o comando:

# portmaster -a -f -R   com o -R ele não refez o que já havia feito e 
continuou de onde paramos.

Fiz um ajuste no apache habilitando o mod_auth_mysql e no roundcube 
mudei o dono de 2 confs para www mas isso é normal na atualização do 
roundcube.  :)

Após tudo isso re-iniciei o servidor novamente e todos os serviços 
voltaram à funcionar normalmente. Fiquei impressionado com a qualidade 
de como tudo foi feito e porque normalmente em outros ambientes os 
problemas poderiam ser catastróficos.

O resultado foi esse:

FreeBSD zeus.xxx.com.br 9.0-PRERELEASE FreeBSD 9.0-PRERELEASE #10: Fri 
Dec  2 20:20:23 BRST 2011     
root em zeus.xxx.com.br:/usr/obj/usr/src/sys/GONDIM  amd64

Parabéns à todos da Comunidade FreeBSD pelo excelente trabalho feito!


Mais detalhes sobre a lista de discussão freebsd