[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