Dicas de atualização do FreeBSD 9.2 para a versão 10.0 compilando tudo.
Postado por gondim | Categoria Dicas, FreeBSD, Software Livre, Tecnologia | Dia 16-01-2014
Tags:FreeBSD
7
Bem, já venho à um bom tempo atualizando e testando a versão 10.0 do FreeBSD, cujo anúncio oficial deve sair dia 20/01. Resolvi então fazer um relato de algumas coisas que passei e que acredito que ajudará um bocado. 🙂
Outra coisa importante: a ideia aqui é ajudar mas não posso me responsabilizar por qualquer dano causado em seu sistema.
1ª dica: sempre existe aquele medo das coisas não saírem como desejado e perder todos os dados importantes. Para isso é sempre bom começarmos com um bom backup… façam backup de tudo que puderem.
2ª dica: migrem para o pkgng antes de atualizarem o sistema, isso vai facilitar e evitar problemas mais na frente. Isso é muito fácil basta ver abaixo:
# cd /usr/ports/ports-mgmt/pkg
# make install clean
# pkg2ng
# echo ‘WITH_PKGNG=yes’ >> /etc/make.conf
Os comandos acima irão instalar o pacote pkg e converter a base de dados antiga para a nova. Atenção: esse procedimento é irreversível!
3ª dica importante!: se tiver usando algum shell como bash, que não faz parte do sistema, mude para sh ou csh tanto o seu user quanto o do root. Porque se ficar quebrado o shell, você não vai se logar mais remotamente. Só em single user.
4ª dica: após compilar e instalar o seu novo sistema existe uma coisa que dá muita dor de cabeça quando for recompilar os pacotes que foram instalados pelo ports. Essa coisa se chama: libiconv O FreeBSD 10.0 já vem com essa lib em sua base e não é mais usada a libiconv do ports mas se não for devidamente removida vai dar muito problema nas recompilações. Para fazer a remoção basta fazer:
# pkg query %ro libiconv > /root/ports_to_update
# pkg delete -f libiconv
A primeira linha apenas salva todos os pacotes que usam a libiconv em /root/ports_to_update meramente informativo. A segunda remove o pacote libiconv do sistema.
Os arquivos que não devem mais existir no seu sistema depois disso são esses aqui:
/usr/local/lib/libiconv.a
/usr/local/lib/libiconv.la
/usr/local/lib/libiconv.so.3
5ª dica: é muito recomendado que se recompile todos os seus pacotes instalados através do ports. Muita coisa mudou entre a versão 9.x e a 10.x e as vezes algo não funciona pelo simples motivo de não ter recompilado as aplicações. Eu costumo usar e indico que se use o portmaster para isso. Antes de começar à recompilar tudo vamos recompilar alguns caras primeiro:
- Recompilar o pacote dialog4ports porque senão nenhum dialog de ports vai funcionar. Pode fazer make config que não vai funcionar nada. Para resolver:
# portmaster -d dialog4ports
- Se você usa suporte à mysql e por isso tem instalado algum pacote como esse: mysqlXX-client onde XX pode ser 51, 55 ou 56 você deve compilar ele novamente assim como no exemplo abaixo:
# portmaster -d mysql55-client
Desse jeito vai evitar um monte de problemas com pacotes que dependem dele. 🙂
- cmake é outro que é bom recompilar para não dar problemas lá na frente.
# portmaster -d cmake
- gmake, se tiver é bom recompilar logo também:
# portmaster -d gmake
- Se tiver usando db4 vai precisar trocar para db5:
# portmaster -o databases/db5 db42-4.2.52_5
- Remover o portaudit já que esse não será mais usado. A nova forma é: pkg audit -F
# pkg delete portaudit
# rm -Rf /var/db/portaudit
6ª dica: alguns pacotes ainda podem dar problemas com o libiconv como é o caso do pacote php5-iconv. Nesse caso experimente excluir o pacote com o pkg e depois instalar ele novamente. Abaixo o exemplo:
# pkg delete -f php5-iconv
# portmaster -d converters/php5-iconv
7ª dica: recompilar tudo já que é o aconselhado. Para fazer isso com o portmaster basta fazer:
# portmaster -d -a -f
Bem pessoal, isso foi o que lembrei aqui mas caso lembre de mais alguma coisa eu atualizo essa página. Como o universo de testes de cada um pode ser diferente do meu, problemas novos podem ocorrer mas acredito que assim como eu… tenho certeza que você vai tirar de letra. 🙂
Boa atualização pra todos.
otimas dicas! mas gostaria de saber o seguinte:
tenho jails rodando no meu freebsd 9.2… e comprei um server novo (com hardware identico ao “velho”) pra colocar o freebsd 10… entao pergunto:
o que é melhor?
a) Instalar o FreeBSD 10 do zero no novo hardware e copiar as jails do 9.2 para la…
b) Clonar o HD do server velho e colocar no novo… entao fazer o freebsd-update pro 10…
ja migrei umas jails do 9.2 pro 10 instalado do zero e aparentemente deu tudo certo… isso em ambiente de teste claro.
outra pergunta: as dicas aqui de remover o portaudit e migrar pro pkgng sao validas tb para minhas jails? ou deixo la como esta?
Bem, eu não tenho aqui um ambiente de jails para lhe dizer mas não precisa ser do zero. 🙂 Você pode fazer assim:
– Já que você um servidor novo para usar, faz um tar -czpf do seu sistema inteiro atual, que está no 9.2. Ex: tar -czpf backup.tar.gz –exclude=backup.tar.gz /
– Instala no seu servidor novo o FreeBSD 9.2R, copia o backup pra ele e extrai assim: tar -xvzpf backup.tar.gz -C /
Cuidado só com diferenças do fstab entre os servidores. Depois disso você vai ter o sistema atual clonado e aí você pode fazer as atualizações para o 10.0 sem medo, já que vai estar fazer no servidor novo.
Quanto ao PKGNG, eu aconselharia migrar para esse novo sistema porque além de melhor que o anterior, daqui pra frente o padrão será usar ele.
Bom dia…
então…
utilizo o 9.1-RELEASE, e estão rodando as duas versões do pkg…
tem 3 pacotes que preciso atualizar, mas pelo portupgrade já não consigo mais, ele me pede para utilizar o pkg, consigo executar o pkg_version onde me mostra uma lista de pacotes e o pkg version onde me mostra outra lista de pacotes…
como tornar a versão mais nova padrão e mesclar os pacotes instalados para que seja gerenciado somente pela nova versão?
Bom dia,
Você não deve mais usar o sistema de gerenciamento de pacotes antigo. Foi desativado. Obrigatoriamente precisa usar o pkg em todos os sistemas.
Para isso você vai em /usr/ports/ports-mgmt/pkg e faz o make install.
Depois vai ter que converter toda a base antiga dos pacotes para a nova e isso é feito rodando:
# pkg2ng
Adicione também no /etc/make.conf:
WITH_PKGNG= yes
Após isso não use mais os comandos antigos como pkg_version, pkg_info, pkg_… estude e utilize apenas o pkg.
[]´s
Ok, obrigado pela dica… deu certo aqui… ;o)
Outra coisa…
Tenho dois servidores críticos rodando o 9.1 e um menos critico rodando o 9.2, preciso atualiza-los para a versão 10, seguindo esses passos qual a chance de paralização de algum serviço? a melhor opção seria a instalação de um novo sistema v 10 e migração, mas o período será curto para a tarefa… a atualização é segura?
Evandro, problemas sempre podem acontecer porque as vezes o que você tem rodando difere do que tenho. Até hoje os problemas que tive sempre foram pequenos e contornáveis mas antes de fazer uma atualização como essa eu procuro sempre ter um backup atualizado do sistema inteiro. Faço isso com o tar.
Uma outra coisa que será necessária é a recompilação de todos os pacotes do seu sistema, se eles foram instalados pelo ports. Se seu sistema é RELEASE, usa kernel GENERIC e pacotes binários instalados pelo pkg, então você pode tentar usar o freebsd-update e o próprio pkg para atualizar seu sistema. Mas o backup é muito importante para o caso de dar algum problema.
Outra sugestão se você tiver disponibilidade $$ seria montar um outro sistema, jogar o backup do servidor de produção para ele, fazer os ajustes e atualizações para o 10.x nele e checar se ficou tudo OK. Ficando OK só substituir e guardar o atual por um tempo para ter certeza que tudo está 100%.