FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD
 
11.09  
Inicio arrow Resumo do Site arrow Atualizando seu FreeBSD (sistema e Ports) por cdigo fonte.
Principal
Inicio
Noticias
Artigos
Regras da Lista
Assinar a Lista
Histrico da Lista
Forum
Keyserver
PC-BSD: Artigos
PC-BSD: Notcias
Galeria de Imagens
Contador Usurios FUG
FUGs Estaduais
Downloads
Enquetes
FAQ
Resumo do Site
Links
Pesquisar
Contato
Sobre a FUG-BR
RSS / Twitter
-
DOC-BR (FUG BR)
Introduo
Projeto DOC-BR
Handbook
FAQ Oficial
-
+ Noticias
Alertas de Seguranca
Alertas em Ports
BSD em Geral
DaemonNews (Ingles)
MyFreeBSD
Todas Categorias
-
Login
Nome de Usurio

Senha

Lembrar login
Esqueceu sua senha?
Sem conta? Crie uma


Atualizando seu FreeBSD (sistema e Ports) por cdigo fonte. PDF Imprimir E-mail
Por Christopher Giese   
15/06/2006
ndice de Artigos
Atualizando seu FreeBSD (sistema e Ports) por cdigo fonte.
Parte 2

ImageNesse artigo Christopher Giese e Reginaldo Russinholi, com complementos de Renato Botelho, instruem o leitor durante o processo de atualização do FreeBSD por código fonte, abordando atualização do sistema operacional, das definições da Coleção de Ports local e das próprias aplicações (ports) instaladas localmente, neste caso por código fonte ou através de pacotes pré-compilados.

O artigo aborda o uso do csup ao invés do tradicional cvsup, e do portupgrade, ferramentas mais modernas e rápidas, disponíveis nas últimas versões do FreeBSD e que começam se tornar padrão desde os últimos dois releases do FreeBSD. Leitura recomendada.

FreeBSD

ATUALIZANDO O CÓDIGO DE SEU FREEBSD 6.x VIA CSUP

Inicialmente iremos baixar os source do FreeBSD, neste howto faremos isto utilizando o csup.

Dependendo da sua versão atual do FreeBSD, o csup já pode fazer parte da base do sistema,
não necessitando instalação, para checar isso basta verificar se o arquivo /usr/bin/csup

Para instalar o binario do csup caso ele não esteja ainda no sistema, temos aqui 2 opcoes....
escolha a sua preferida:

Por pacote pré-compilado:

pkg_add -r csup
rehash

Pela Coleção de Ports:

cd /usr/ports/net/csup
make install clean
rehash 

Agora iremos criar um arquivo supfile que servira para o nosso csup como um "arquivo de configuracao". Como o nosso objetivo inicial e' atualizar o nosso FreeBSD para a ultima versao STABLE do FreeBSD 6.X
(Quando escrevi este howto era 6.1 STABLE), voce usaria este supfile:

#--------- INICIO DO ARQUIVO ----------#
*default host=cvsup12.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_6
*default delete use-rel-suffix

*default compress

src-all
#---------- FIM DO ARQUIVO ------------#


OBS: salve com o nome/local "/usr/local/etc/src-supfile" .
Vale lembrar que podemos escolher o servidor que desejamos "baixar" os sources, neste exemplo foi utilizado o
cvsup12.FreeBSD.org que e' um Top Level Domain, ou seja, os primeiros servidores que são atualizados do cvs
oficial. Para obter informacoes sobre outros mirrors consulte a pagina oficial do FreeBSD http://www.freebsd.org
ou instale o fastest_cvsup ( cd /usr/ports/sysutils/fastest_cvsup && make install clean ), com ele voce
conseguira ver qual o servidor mais rapido no momento.

Depois de tudo configurado basta digitar:

csup -g -L 2 /usr/local/etc/src-supfile

Com este comando sera iniciado o "download" do novo codigo do FreeBSD.

Depois que tudo acabar, voce tera que reecompilar o seu FreeBSD, para fazer isso faca:

cd /usr/src
make -j4 buildworld (* antes de dar o enter.... leia o * ali para baixo)
make buildkernel KERNCONF=GENERIC
make installkernel KERNCONF=GENERIC
mergemaster -p
make TMPDIR=/var/tmp installworld
mergemaster -Pi
reboot


NOTA: sobre o mergemaster
O `mergemaster -p` irá comparar os usuários/grupos atuais da máquina com os necessários pelo sistema. Muitas
vezes usuários novos são incorporados ao sistema, e são necessários até mesmo para que o installworld seja
executado corretamente. Por isso a necessidade de executá-lo antes do mesmo. Tome muito cuidado pois se for
feita a escolha errada você poderá perder todos os usuários/grupos que foram cadastrados após a instalação.

Na maioria dos casos, a opção ideal para ser usada no `mergemaster -p` é a opção "merge". Essa opção permite
que você junte as novas alterações necessárias pelo sistema, mais as suas alterações, ou seja, os usuários/
grupos que você adicionou. Antes de selecionar a opção "i" para que o seu merge seja instalado, utilize a
opção "v" e dê uma conferida no novo arquivo gerado.


O `mergemaster -Pi` irá comparar o seu /etc com o /usr/src/etc, essa comparação não é feita por conteúdo, e
sim pela versão do arquivo no CVS. Essa versão pode ser vista em cada arquivo em uma linha, no comço do mesmo,
que possui a string "$FreeBSD:", portanto, se tem um arquivo que você não quer atualizar e não quer que apareça
na hora da comparação, como por exemplo, o /etc/pf.conf, basta copiar essa linha do arquivo mais novo
(/usr/src/etc/pf.conf) substituindo a do atual (/etc/pf.conf), estando os dois com a mesma versão, serão
considerados iguais.

O parâmetro -i faz com que arquivos novos que foram incorporados ao sistema sejam adicionados automaticamente,
e o -P faz uma cópia de cada arquivo que você selecionar a opção "i" para instalar o mais novo e guarda isso em
"/var/tmp/mergemaster", essa opção é extremamente importante, pois caso você substitua um arquivo que não
deveria, você tem um backup.

Execute *SEMPRE* o mergemaster, e com muito cuidado, essa é uma parte fundamental da atualização, e, se não for
feita corretamente, seu servidor pode não inicializar mais os aplicativos corretamente no próximo boot.

* Aqui a mais importantes de todas as observacoes:
Obs.: O "make -j4 buildworld" demora muito pode ir tomar uma cervejinha
- Se sua maquina for rapida = umas 4 cervejinhas
- Se sua maquina for nao tao rapida = 10 cervejas + bisteca na chapa
- ... agora se sua maquina for lerda.... logo apos o enter..... coloque a COSTELA no celofane ;)

Depois de tudo atualizado, é hora de fazer uma limpeza no sistema, pra remover programas, mans e libs
que foram removidas do sistema, mas permanecem na sua máquina.

ATENÇÃO: Se você atualizou da série 5.x pra 6.x por exemplo, as libs do sistema tiveram sua versão alterada,
então, antes de executar os procedimentos abaixo, atualiza *TODOS* os seus ports (portupgrade -fa)
e recompile programas que foram instalado por fora do ports, para garantir que nada irá parar de
funcionar.

# cd /usr/src
# make check-old

Faça um backup de todos os arquivo que o make check-old retornar

# make delete-old
# make delete-old-libs

Esses dois comandos irão perguntar pra você antes de apagar cada arquivo e/ou cada lib. Caso você tenha
conferido bem a saída do make check-old e tenha certeza de que vai apagar tudo, utilize-os da seguinte
maneira:

# make -DBATCH_DELETE_OLD_FILES delete-old
# make -DBATCH_DELETE_OLD_FILES delete-old-libs


PARTE 2 - ATUALIZANDO PORTS

Depois de atualizar seu FreeBSD para o último 6-STABLE, aí vão dicas para manutenção dos ports.

Para atualizar a árvore do ports:

Foi adicionada ao FreeBSD uma ferramenta chamada portsnap, ela serve para atualizar a arvore do
ports, veja bem, isso nao atualiza os ports, apenas a arvore de diretorios.

Na primeira vez eh meio demorado, mas depois se torna mais rapido e consome menos recursos que
o metodo mais conhecido, via cvsup, ou agora, csup.

Execute isso na primeira vez

# portsnap fetch extract

Nas proximas vezes isso basta

# portsnap fetch update

E se voce for colocar no crontab

# portsnap cron update

Isso atualiza de deixa a sua arvore do ports com tudo zerado, agora, antes de atualizar qualquer port
e' necessario ler o arquivo /usr/ports/UPDATING. Quando um port necessita de algo diferente na sua
atualizacao, isso fica anotado nesse arquivo, e deve ser lido com atencao, principalmente para
servidores em producao, nao queremos parar nenhum servico desnecessariamente.

Antes de instalar qualquer pacote via ports, existe uma ferramente que deve ser instalada para
garantir a segurança dos produtos que vão ser instalados nesse server, é o portaudit. Ele faz
consulta a base de Vulnerabilidades (VuXML) e vai te alertar quando você tentar instalar um port
que tem uma falha, e, também, se você tem um port instalado e uma vulnerabilidade é encontrada nele,
o portaudit também avisa você no email que é enviado diariamente para o root.

Para instalar o portaudit:

# cd /usr/ports/security/portaudit
# make install clean
# rehash

Para baixar a base de dados e checar:

# portaudit -Fa

O portaudit será incorporado ao /etc/periodic, e baixará diariamente a base atualizada e fará uma
checagem.


Uma ferramenta extremamente util para atualizacao de ports e' o portupgrade, para instala-lo

# cd /usr/ports/sysutils/portupgrade && make install clean

Depois de instalado, se voce quiser saber quais ports necessitam de atualizacao:

# portversion -vL=

Se voce quiser atualizar um pacote

# portupgrade pacote1 pacote2 pacote3

Se voce quiser atualizar tudo

# portupgrade -a

Atualizar tudo usando pacotes pre-compilados, se for possivel

# portupgrade -Pa

Usar apenas pacotes pre-compilados

# portupgrade -PPa

Infinitas opcoes existem no portupgrade, lendo o man voce tera uma nocao mais ampla de tudo o que
ele pode fazer, mas o mais interessante e' que quando voce roda um portupgrade pacote e ele vai
atualizar o pacote de 1.2 pra 1.3, antes dele instalar a nova versao 1.3, ele faz um pacote de
backup do 1.2, se no momento da instalacao der problema, ele restaura o pacote da 1.2 e tudo fica
como antes.

Uma outra dica interessante e' a respeito de atualizacao do perl, quando a mudanca for algo como
perl-5.8.7 para perl-5.8.7_1, essa dica nao serve de nada, pois a versao do perl e' a mesma, o que
mudou foi a versao do port, agora quando for 5.8.7 -> 5.8.8, ai sim anote essa, para nao precisar
recompilar todos os ports que salvam libs dentro de /usr/local/lib/perl/5.8.7, para que elas movam
tudo para o novo diretorio 5.8.8, foi escrito um script que faz as mudancas sozinho sem precisar
recompilar nada, e' o perl-after-upgrade. Entao basta executar:

# portupgrade perl
# perl-after-upgrade -f


Bom pessoal e' isso, nao tem segredo.

Espero ter ajudado :-)

# Sample By
# Christopher Giese <skywarrior at bsdux.com.br>
# Renato Botelho <garga at FreeBSD.org>
# Thanks to: Reginaldo Russinholi
# www.bsdux.com.br


Este artigo foi submetido à lista FUG-BR por Christopher Giese, e publicado originalmente aqui .

 

Comentrios
Faltou falar do portaudit...
Por Joao Paulo - 0v3rm1nd em 15/06/2006 20:41:49
Como 'portversion -vL=' foi mencionado, senti que faltou falar do portuadit, essa ferramenta que faz a diferenca entre sysadmins FreeBSD e outros...
Muito bom
Por Este endereo de e-mail est sendo protegido de spam, voc precisa de Javascript habilitado para v-lo em 16/06/2006 17:01:18
Muito bom o Artigo. 
Vai direto ao assunto. 
 
Parabns Giese :-)
Legal, mas ...
Por Este endereo de e-mail est sendo protegido de spam, voc precisa de Javascript habilitado para v-lo em 16/06/2006 23:37:45
Realmente, o que nosso amigo Ov3rm1nd falou fundamental, mas no deixa de ser mais um artigo de qualidade, parabns amigo Christopher Giese! :)
Legal
Por Joao Paulo - 0v3rm1nd em 09/07/2006 23:58:57
A ultima revisao fala do portaudit, fico feliz com a dedicacao dos autores.
portsnap
Por Este endereo de e-mail est sendo protegido de spam, voc precisa de Javascript habilitado para v-lo em 25/07/2006 21:13:04
Gostaria de saber como indico o repositrio de onde o portsnap deve baixar os ports ?
Server para baixar atualizaes
Por garga em 26/07/2006 07:50:39
Oi Flvio, isso pode ser feito pelo parmetro -s no portsnap ou ento editando o /etc/portsnap.conf. Lembrando que o portsnap no tem nada a ver com csup ou cvsup, ento voc no poder usar os repositrios. 
 
Acredito que manter portsnap.FreeBSD.org seja a melhor opo, ele desvia voc pro portsnap1 ou pro portsnap2, que acho que so os nicos servers disponveis no momento. 
 
[]s
Thin Update
Por Leonardo em 01/12/2006 08:24:37
Senhores, 
 
Gostaria de saber como indentificar quais os repositrios so necessrios para que o meu sistema funcione. 
 
Se eu utilizar o tag "src-all" ele vai baixar e compilar um monte de recursos (softwares) que atualmente eu no tenho instalado no sistema. 
 
Abs
Por Zemair em 08/12/2006 03:29:57
Muito bom! Excelente documentao, porm o tempo passou, FreeBSD 6.2 Beta j est no "forno" e esse tutorial transforma em 6.2-PRERELEASE. Para termos STABLE necessrio "isolar" a verso, usando RELENG_6_1 ao invs de somente RELENG_6. Mais uma vez, parabns. (Corrijam-me se eu estiver errado).
PRERELEASE ao invs de STABLE
Por Zemair em 08/12/2006 03:32:04
Muito bom! Excelente documentao, porm o tempo passou, FreeBSD 6.2 Beta j est no "forno" e esse tutorial transforma em 6.2-PRERELEASE. Para termos STABLE necessrio "isolar" a verso, usando RELENG_6_1 ao invs de somente RELENG_6. Mais uma vez, parabns. (Corrijam-me se eu estiver errado).
Atualizao e Ports
Por Ali Faiez Taha em 16/01/2007 13:08:56
Muito bom seu artigo. 
Creio que posso contribuir mais com o seguinte 
texto sobre o assunto: 
http://143.107.200.101/Ports.e.Packages.html 
 
 
abraos.
teste
Por teste em 06/08/2009 11:29:58
teste \afddasfasdf a asdf asdf



ltima Atualizao ( 29/06/2006 )
 
< Anterior   Prximo >
FUG-BR - Espalhando BSD
Dicas Rpidas:

Após sincronizar o Ports, para atualizar seu INDEX de aplicações se você tiver portupgrade instalado, digite:

portsdb -Uu 

Se não tiver portupgrade:

cd /usr/ports/
make fetchindex

 






Wallpapers
Online:
Ns temos 19 visitantes online


Devil Store - Sua loja BSD
FreeBSD Brasil LTDA

FUG-BR: Desde 1999, espalhando BSD pelo Brasil.