Atualização de FreeBSD a traves de Internet
Indice
1. Introdução
2. Preparando o sistema
3. Começando a atualização
4. Atualizando o diretório /etc
5. Atualização dos ports
6. Que fazer ante qualquer problema?
7. Despedida
Apêndice
A . Liberando espaço e acelerando a atualização em outras
ocasiões
B. Refuse files
1. Introduccioón
Oi a todos :-) para o que mesmo não saiba muito bem de que vai ir este documento, lhe contarei que basicamente vai tratar de explicar como se pode atualizar um FreeBSD a uma versão superior através de internet. Já que o procedimento é quase o mesmo, aproveitar este articulo para explicar como atualizar teu FreeBSD a FreeBSD-stable, FreeBSD-current e como atualizar os ports de FreeBSD.
|
NOTA: * Para o que seja novo neste mundillo de FreeBSD comentarei que FreeBSD tem vários ramos que estão destinadas a diferentes coisas. O ramo FreeBSD-stable pretende prover um sistema o mas estável possível, e com o menor de bugs possíveis. Este ramo esta em contínua atualização à medida que se vão descobrindo bugs, portanto não é nada raro o ter que atualizar a -stable numa mesma versão variadas vezes O ramo FreeBSD-current pretende prover um sistema
em desenvolvimento com os últimos suportes e novas características para o
sistema. Resumindo.. que se o que procuramos é estabilidade não é o mas
recomendável o usar este ramo. FreeBSD-release é a versão que vem nos CD's ou que podemos baixar como imagem ISO. Podriamos dizer que é uma 'foto' de FreeBSD-stable, que despues de ter-se provado e 'testeado' se converte em release. Por outro lado os ports, são um conjunto de diretórios organizados por seções (mail, ftp, www, etc) nas quais residem um conjunto de arquivos (Makefiles, parches, etc) que nos proporcionassem a descarga,configuração, compilação e instalação do programa mediante comandos tão singelos como 'make install'. Cada dia saem tanto correções como novos ports, asi que também nos pode interessar atualizar nosso diretório /usr/ports que é o diretório onde estão os ports que temos atualmente disponíveis para instalar. * |
Os procedimentos a seguir para atualizar teu FreeBSD podem variar dependendo da versão que estes usando antes da atualização, é por isso que se tentará contemplar as mudanças (sempre que os tenha) que se têm de realizar para levar a cabo a atualização corretamente desde qualquer versão
Bom não me enrolo mas e passemos à ação :-)
2. Preparando o sistema
Antes de começar a atualizar nosso sistema,
é importante comprovar se temos instaladas algumas coisas que precisaremos
posteriormente. Também comentar-vos o que sempre se costuma dizer.. backup backup
backup :-) Não tem porque passar nada.. mas é recomendável ter um backup
do que consideremos importante.
Dito isto.. primeiro comprovar se temos um par de programas que precisaremos.
Um deles é o cvsup e outro o mergemaster. Se não me equivoco,
este ultimo (mergemaster) nas versões de FreeBSD 4.X e superiores
já vem incorporado, assim que vos assegurar que o tendes. Com um simples man
mergemaster ou ls /usr/sbin/mergemaster deveria valer. Caso contrário,
se estais usando uma versão inferior a 4.X podeis instalar o port tecleando
cd /usr/ports/sysutils/mergemaster && make install (assegurai-vos
que estais conectados a internet ao fazer isto. Assegurai-vos que tendes também
o pacote ports instalado. Se não o tivésseis podeis instalá-lo executando
/stand/sysinstall . Posteriormente ides aos Menus Configure
-> Distributions onde poderás marcar o pacote "ports" para
instalá-lo. Depois de fazer isto e ao eleger o meio de instalação já teremos
o 'esqueleto' de ports em nosso sistema.
O programa mergemaster o usaremos para atualizar ao final o diretório /etc
O outro programa, cvsup, é o programa que nos permitirá pegar as fontes da versão de FreeBSD que queiramos atualizar. Podeis olhar se o teneis tecleando:
daemon# pkg_info|grep cvsup
cvsup-16.1e A general network file distribution system optimized for CVS
Deveria sair algo assim se o temos, ainda que o
mas normal é não o ter se é a primeira vez que actualizais vosso FreeBSD
por internet.
Para instalá-lo podeis empregar os ports, os packages ou inclusive o tarball
(.tar.gz) de toda a vida, ainda que eu recomendo que instaleis o package se
é a primeira vez que actualizais.
O package podeis obtê-lo de ftp ://ftp.freebsd.org/pub/FreeBSD/FreeBSD-stable/packages/net
e o arquivo a baixar se chama cvsup-xx.xx.tgz (xx segun a versão).Em meu
caso é o cvsup-16.1e.tgz. Uma vez o tengais baixado tecleamos como
root
daemon# pkg_add cvsup-xx.xx.tgz
|
NOTA: * Se decides instalar cvsup com os ports tens de comprovar (sobretudo se nunca ou faz muito que não os atualizas) que a version do port de cvsup seja a 16.1d ou superior. As versões inferiores à 16.1d contêm um bug e não podem ser utilizá-las para atualizar os fontes de FreeBSD. Se o tentas obtendras uma mensagem parecida a esse: Protocol negotiation failed: See http://www.polstra.com/projects/freeware/CVSup/s1g/ for upgrading informationPára mas detalhes confere a web anterior. Se tens uma versão inferior atualiza teu ramo de ports ou instala o package como indicámos anteriormente. Se finalmente atualizaste os ports, a rota de cvsup é /usr/ports/net/cvsup e não /usr/ports/net/cvsup-bin como antigamente * |
3. Começando a atualização
Bem.. se chegastes até aqui estais prontos para atualizar vosso sistema
Não teremos que configurar demasiadas
coisas no arquivo de configuração de cvsup , já que FreeBSD traz arquivos
de exemplo que nos virão muito bem e se ajustam a todas nossas necessidades.
Estes arquivos estão localizados no diretório /usr/share/examples/cvsup
Há variados, nós faremos uma cópia de um deles e o modificaremos a nosso gosto:
daemon# cp /usr/share/examples/cvsup/stable-supfile /usr/share/examples/cvsup/freebsd-supfile
Uma vez temos a cópia editamos o /usr/share/examples/cvsup/freebsd-supfile
para modificá-lo a nosso gosto.
Comentarei um pouco por em cima as modificações que se têm de realizar
(o que NÃO esta em negrita são comentários mios):
%[...]
# IMPORTANT: Change the next line to use one of the CVSup mirror sites
# listed at
http://www.freebsd.org/handbook/mirrors.html .
*default host=CHANGE_THIS.FreeBSD.org
A linea *default host se
refere à direção do servo do que pegaremos as fontes. Segun tua
zona geografica pode interessar-te um ou outro. Eu resido em españa asi que pegarei
o espanhol. Para saber que mirrors tens consulta a web que figura no comentário:
http://www.freebsd.org/handbook/mirrors.html
Uma vez que temos o host o pomos:
*default host=cvsup.é.FreeBSD.org
As lineas *default prefix=/usr e *default base=/usr indicam de onde se pegarão as fontes e onde se porão. Isto nós não o tocaremos
A linea *default release=cvs tag=RELENG_4 indica a que versão queremos atualizar. Tem-se de ir com cuidado com o que se põe, e ter claro a que queremos atualizar. Tal como está (com o RELENG_4) indica que obterá os fontes de FreeBSD 4.X-STABLE. O X depende de quando esteis atualizando. A data de hoje (10/11/2001) atualizaria a FreeBSD 4.4-STABLE porque a ultima release de FreeBSD que saiu foi a 4.4. Há muitas mas opções. A continuação vos ponho todos os tags referente a versões que figuram no handbook:
| . | Rama current (é um ponto) |
| RELENG_4. | Rama 4-STABLE |
| RELENG_4_4. | Rama 4.4-RELEASE COM os parches de segurança indispensáveis aplicados |
| RELENG_4_3. | Rama 4.3-RELEASE COM os parches de segurança indispensáveis aplicados |
| RELENG_3. | Rama 3-STABLE |
| RELENG_2_2. | Rama 2.2-RELEASE COM os parches de segurança indispensáveis aplicados |
| RELENG_4_4_0_RELEASE | Rama 4.4-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_4_3_0_RELEASE | Rama 4.3-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_4_2_0_RELEASE | Rama 4.2-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_4_1_1_RELEASE | Rama 4.1.1-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_4_1_0_RELEASE | Rama 4.1-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_4_0_0_RELEASE | Rama 4.0-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_3_5_0_RELEASE | Rama 3.5-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_3_4_0_RELEASE | Rama 3.4-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_3_3_0_RELEASE | Rama 3.3-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_3_2_0_RELEASE | Rama 3.2-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_3_1_0_RELEASE | Rama 3.1-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_3_0_0_RELEASE | Rama 3.0-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_2_2_8_RELEASE | Rama 2.2.8-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_2_2_7_RELEASE | Rama 2.2.7-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_2_2_6_RELEASE | Rama 2.2.6-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_2_2_5_RELEASE | Rama 2.2.5-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_2_2_2_RELEASE | Rama 2.2.2-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_2_2_1_RELEASE | Rama 2.2.1-RELEASE SEM os parches de segurança indispensáveis aplicados |
| RELENG_2_2_0_RELEASE | Rama 2.2.0-RELEASE SEM os parches de segurança indispensáveis aplicados |
A linea *default compress só tendria que ser comentada se possuímos uma conexão T1 ou superior. Se a poseeis comentá-la pondo diante um #
Finalmente se mirais mas abaixo fica src-all
que indica que pegaremos TODOS os fontes. O mas normal é pegá-los todos
e atualizar todo o /usr/src. Se és novo recomendo que atualizes
todo.
Para o que queira atualizar só algumas seções pontuais
não tem mas que comentar com um # a linea src-all e descomentar (tirando
o #) as lineas que correspondam às seções que queira atualizar
Uma vez gravado as mudanças nos situámos no diretório /usr/src e executámos o seguinte comando:
daemon# cvsup /usr/share/examples/cvsup/freebsd-supfile
E deveríamos ver algo ao estilo de:
Connected to cvsup.é.FreeBSD.org
Updating collection src-all/cvs
Checkout src/Makefile
Checkout src/Makefile.inc1.
Checkout src/README
Checkout src/UPDATING
...
Neste momento o sistema já esta baixando o
código fonte do FreeBSD e o esta colocando em usr //src
Não vos posso dizer com exactitud o momento que leva este processo, já que depende
muito da velocidade que tenhais de conexão e da versão de FreeBSD que
tenhais atualmente.
Ao acabar teríeis que ver algo assim:
...
Edit src/usr.sbin/wicontrol/wicontrol.8.
Edit src/usr.sbin/wicontrol/wicontrol.c
Finished successfully
Chegados a este ponto comentar-vos algumas coisas.
Agora que já temos os fontes, podemos obtar por compilar TODO ou adecuar
a compilação a nossas necessidades. Que quer dizer isto ultimo?
Vos pondre um exemplo. FreeBSD, traz em seu sistema base coisas como o servo
de correio Sendmail, ou o servo de nomes BIND. Que passa se nós antigamente
tínhamos instalado Qmail e já não usámos sendmail? pois que singelamente
Sendmail se instalará e joderemos nosso Qmail. Como arranjar isto?
Adecuando a compilação singelamente.
Temos a nossa disposição umas variáveis num arquivo
que indicarão o que queremos compilar e o que não. Estas variáveis estan
em etc //defaults/make.conf. Este arquivo NÃO deve ser modificado.
O procedimento correto é pegar as variáveis que nos interessem e pô-las
em etc //make.conf
(criá-lo se não existe)
Por exemplo, se não quisieramos instalar o BIND, Sendmail, Perl nem os jogos a configuração correta de etc //make.conf séria:
NÃO_BIND=true
NÃO_SENDMAIL=true
NOPERL=true
NOGAMES=true
Uma vez comentado todo isto só fica compilar e instalar o codigo fonte. Para o primeiro teclearemos desde /usr/src:
daemon# make buildworld
Ouna vez tecleado o buildworld o sistema começará a compilar o código fonte. Este processo demora bastante, pode inclusive demorar várias horas, assim que paciência :-)
Se todo isto a saído bem, é a hora de compilar
um novo kernel. Para isso dependendo da versão de FreeBSD que tenhamos
faremos o seguinte:
-Se atualizámos a FreeBSD 4.3 ou superior-
# cd /usr/src
# make buildkernel KERNCONF=nome-de-teu-kernel
# make installkernel KERNCONF=nome-de-teu-kernel
-Se atualizámos a FreeBSD 4.0, 4.1, 4.1.1 ou 4.2-
# cd /usr/src
# make buildkernel KERNEL=nome-de-teu-kernel
# make installkernel KERNEL=nome-de-teu-kernel
-Se atualizámos a FreeBSD 1.x, 2.x ou 3.x-
# cd /usr/src/sys/i386/conf
# /usr/obj/usr/src/usr.sbin/config/config nome-de-meu-kernel
# cd ../../compile/nome-de-meu-kernel
# make depend; make; make install
(Mudai nome-de-meu-kernel pelo nome que tenhais. Se não tendes nenhum pôr como nomeie GENERIC. Se não especificamos o kernel com as variáveis KERNCONF ou KERNEL FreeBSD tomará o kernel GENERIC)
Uma vez que acabou e que a coisa não deu nenhum erro reiniciaremos o sistema para instalar os ficheros compilados em seus diretórios correspondentes, assim que teclearemos:
daemon# shutdown now
Não é necessário reiniciar, mas se recomendável.
Uma vez reiniciado nos iremos ao diretório /usr/src e teclearemos:
daemon# make installworld
O processo do installworld o que faz é instalar todos os binários do sistema que compilámos a seus diretórios correspondentes. Não deveria demorar nem muito menos tanto como o passo anterior. Me gostaria dar-vos uma aproximação, mas todo depende de vosso procesador e demais :-)
Ao acabar só fica atualizar uma coisa, esta coisa é o diretório /etc
|
NOTA (Não aplicável ao ramo current): * A parte de ficar por atualizar o diretório /etc também fica atualizar o programa sysinstall (Leste é o programa que nos sai quando instalamos FreeBSD. Também o usámos posteriormente para configurar algumas coisas de nosso sistema. Por defeito não se atualiza automaticamente, assim que se queremos fazer um upgrade dele, teclearemos desde o diretório /usr/src/release/sysinstall : daemon# make all install E já o teremos atualizado :-) * |
|
NOTA2: * Os passos make buildworld e make installworld se podem fazer num só tecleando make world desde /usr/src . Não obstante, eu recomendo fazê-lo nestes 2 passos explicados, já que à hora de detectar erros ou falhas de compilação e instalação é mas fácil de detectar em que passo a fallado a coisa. É o mesmo caso de buildkernel e installkernel que se pode simplificar com make kernel * |
4. Atualizando o diretório /etc
O /etc é um diretório perigoso e importante, esta é a razão
da que porque não se atualiza automaticamente como o resto do sistema.
Poderíamos atualizá-lo a mão, mas se converte numa tarefa um pouco pesada.
Assim que faremos uso do programa mergemaster que comentámos na seção
anterior.
Seu modo de uso não é muito complicado, mas sempre recomendo que leiais sua documentação
para que vejais todas suas possíveis opções e para saber como funciona (man
mergemaster)
Um costume que tenho antes de lançar mergemaster é fazer uma cópia de todo o /etc por se tenho algun despite. Para isso não há mas que teclear:
daemon# cp -pr /etc /root
Agora já se que estamos prontos para executar o programa, a si que teclearemos o seguinte desde /usr/src:
daemon# mergemaster
Ao executá-lo é possível que nos faça uma pergunta de se queremos usar o diretório por defeito /var/tmp/temproot . Nós diremos que se. A partir de agora, mergemaster olhará arquivo por arquivo e comparará um arquivo do velho /etc com o do novo /etc (mergemaster só olha os arquivos que diferem com o mesmo nome).
As possíveis opções que podemos realizar sobre os arquivos do /etc são:
(d) para apagar o arquivo
(m) para unir o arquivo novo com o velho
(i) para instalar o arquivo novo e machacar o arquivo velho
(v) para ver as diferenças entre o arquivo velho e novo
Este é um dos processos mas delicados da atualização de FreeBSD, ¡PRECAUÇÃO! ;-) . Arquivos como /etc/passwd, /etc/master.passwd, /etc/hosts, /etc/group, /etc/rc.conf, etc. estão em jogo
Ao acabar o processo de comparação é muito provável que nosso mergemaster nos tenha perguntado automaticamente se queremos criar os novos devices de dev /. Se é asi lhe diremos que se e se não vos hicira ningun tipo de pergunta o tendriamos que fazer a mão tecleando:
daemon# sh /dev/MAKEDEV all
Por ultimo só fica reiniciar e fazer um uname -à ver que diz o bicho :-)
sorte!
5. Atualização dos ports
Não me estenderei muito para explicar isto já que o processo vem ser exatamente igual.O primeiro é fazer uma cópia para fazer as mudanças oportunas nela:
daemon# cp /usr/share/examples/cvsup/ports-supfile /usr/share/examples/cvsup/freebsdports-supfile
Editámos /usr/share/examples/cvsup/freebsdports-supfile
Como podeis ver este arquivo é muito parecido ao que usemos anteriormente para atualizar os fontes. Debeis especificar da mesma maneira o servo cvsup de onde cogereis os ports, em nosso caso pegaremos de novo o espanhol:
*default host=cvsup.é.freebsd.org
Assegurar-vos que teneis *default release=cvs tag=.
(com o ".")
E já para acabar, se quereis baixar-vos todo o esqueleto de ports
comprovar que teneis ports-all sem comentar. Se quereis atualizar só
algumas seções dos ports não teneis mas que comentar ports-all e
descomentar cada uma das seções que quereis atualizar
Solo fica fazer um cvsup /usr/share/examples/cvsup/freebsdports-supfile
Ato seguido o diretório de ports se começassem a atualizar :-)
|
NOTA: * Forma alternativa de atualizar nossos ports: SUP_UPDATE= yes Desta maneira e ao teclear make update desde /usr/ports
vosso esqueleto de ports se atualizará |
6. Que fazer ante qualquer problema?
Dependendo em onde tenha fallado a atualização deveremos fazer uma ou outra coisa:
Relgla geral e obrigada
Ler o arquivo /usr/src/UPDATING que contém notas, mudanças e
anotações sobre a atualização
- Tem fallado no buildworld ou installworld
-
Se peta neste ponto o mas fácil e recomendável é esperar algumas
horas ou inclusive algun dia para voltar a realizar o processo do cvsup
Porque esperar? Singelo, os fontes estan em contínua atualização
pelos desarrolladores. Tão cedo se sabe que há algun tipo de problema se
tenta corrigir os fontes, por isso quanto mas tempo deixemos passar até
repetir o processo de cvsup mas possibilidades há de que o problema esteja
subsanado.
Que fazer se despues de esperar o problema persiste? Se segue petando no mesmo
lugar podemos obtar por comentá-lo nas listas de FreeBSD destinadas
a estes temas. Se estamos tendo problemas com o ramo stable podemos dirigir-nos
a freebsd [email protected]
e se estamos tendo os problemas com current a freebsd [email protected]
Se peta em diferentes lugares cada vez que tentámos o buildworld ou
installworld é mas que provável que se trate de um problema de hardware
de nosso computador
- Tem fallado na compilacion ou instalação do kernel -
A vezes pode passar que tenhamos um kernel feito a partir do GENERIC
do FreeBSD anterior à atualização. Imaginar-vos que por alguma razão
nós antes da atualização temos um FreeBSD 4.3 e em nosso
kernel temos configurado algumas opções que com FreeBSD 4.4 (version à que
atualizámos) mudaram. Que pasaria então? singelamente que
se usamos nosso kernel velho personalizado não iria a coisa. Eu recomendo
que partais da base do novo GENERIC e que vos mireis /sys/i386/conf/LINT
ou /sys/i386/conf/NOTES (se habeis atualizado a current) para ver se
a sintaxe das opções segue igual ou se essas opções mesmo seguem suportadas
por essa versão de FreeBSD.
- Me tenho liado com mergemaster e me carreguei algun arquivo de etc /
-
Fizeste a cópia de todo o /etc que
propus? Espero que se
Aqui não posso dar-te uma solução exata. Paciência e a comprovar a cópia
de root //etc com /etc a ver o que se te colou
7. Despedida
Espero ter-me explicado o mas claro possível. Quiçá a primeira vez que se faz isto pode resultar um pouco complicado, mas já vereis que à que o hagáis 2 ou 3 vezes o vereis como uma coisa singela.
E como sempre pois dizer que qualquer critica constructiva será bienvenida, e se há algum erro ou me equivoquei em algo pois também ;-)
saudações
koji@jet.é
Apêndice
A. Liberando espaço e acelerando a atualização em outras ocasiões
O processo de atualização tem dois inconvenientes a destacar. O primeiro e mas notável é o da lentidão do compilado de fontes e o segundo é o espaço em disco que diminui em cada atualização. A continuação vos propomos alguns conselhos e soluções para estes dois inconvenientes:
Quanto a libertação de espaço se refere podemos apagar calmamente o diretório /usr/obj. Este diretório contém todos os arquivos objeto (object files) que se criaram durante a compilação. Ao apagá-lo liberaremos bastante espaço. Se não o apagámos e se fazemos uma compilação dos fontes em futuras ocasiões nosso sistema apagará esse diretório automaticamente para compilar as novas fontes. Se o que queremos é acelerar a compilação, uma solução é não apagar /usr/obj e passar-lhe o parâmetro -NOCLEAN ao make: make -DNOCLEAN buildworld ou make -DNOCLEAN world desde /usr/src como sempre.
O parametro -DNOCLEAN também nos serve para reanudar a compilação no ponto que se parou se não finalizou o processo exitosamente
Para outras possíveis ligeiras optimizaciones quanto a velocidade se refere à hora de compilação e instalação do sistema podemos olhar-nos os parâmetros CFLAGS explicados em etc //defaults/make.conf . Se nos interessa algum só teremos que os pôr em etc //make.conf antes da compilação e instalação dos fontes. Se estais interessados em obter mas informação sobre estas opções e sobre como optimizar mesmo mas nosso FreeBSD nas compilações te recomendo que leias o articulo: Optimizando FreeBSD mediante compilações (totalmente em castelhano)
Já para acabar, e como ultima idéia para acelerar a velocidade de acesso a disco, podemos configurar softupdates ou montar a partición que contenha /usr/src ou/e /usr/obj com o parâmetro noatime ou async. Pára mas info man mount
B. Refuse files
Imaginai-vos que estamos dispostos a atualizar nosso sistema (a -stable), mas por alguma razão não nos interessa atualizar a seção games ( usr/src/games). Nesta situação o mas lógico séria editar o arquivo /usr/share/examples/cvsup/freebsd-supfile (ou o arquivo que usemos para atualizar) e comentar a seção src-all descomentando posteriormente todas as outras seções excluindo a src -games por suposto. Com isto já teríamos acabado, mas o tratar por seções a todos os pacotes nos dá pouca liberdade. Que passaria se por alguma estranha razão eu quisesse atualizar todo o sistema menos qualquer arquivo chamado Makefile ? Isto não é possível com todo o que vimos, no entanto obrigado aos refuse files é possível.
Não vos posso assegurar até que versão do cvsup funciona esta característica, o que se vos confirmo é que o provei na versão cvsup-bin-16.1 e funciona.
O arquivo no qual especificaremos que não queremos atualizar nenhum Makefile se chama refuse e tal como temos configurados os exemplos de usr //share/examples/cvsup deve estar situado em usr //sup, isto pode mudar-se por suposto.
Não esta de mas que vos olheis o readme do refuse situado em usr //share/examples/cvsup/refuse.README e um exemplo que traz o cvsup situado em usr //share/examples/cvsup/refuse . Ponhamo-lo aqui para comentá-lo:
src/etc/sendmail/freebsd.mc*
ports/chinese
ports/french
ports/german
ports/hebrew
ports/japanese
ports/korean
ports/russian
ports/ukrainian
ports/vietnamese
Como veis é fácil de interpretar. Com este exemplo não se atualizam todas as coleções de ports que veis listadas e ademais, à hora de atualizar o sistema o ou os arquivos sendmail/freebsd.mc* também não se atualiza/n. A sintaxe do arquivo não permite comentários e as linhas têm de estar uma debaixo de outra ou bem separando os patronos com um espaço em alvo.
Continuando com nosso exemplo do Makefile vamos a usr //sup e cremos o refuse para que fique asi:
src/*Makefile*
Isto impede baixar qualquer arquivo Makefile que este ao menos em src . O primeiro * indica todos os diretórios de src (/, games, etc, sbin etc.), o segundo indica que seguirá o patrono Makefile + o que seja (Makefile, Makefile.inc etc
Se quiséssemos só não atualizar os Makefile de usr
//src com src/Makefile* bastaria. Se pelo contrário só quiséssemos
indicar que não baixasse os Makefile de games poríamos: src/games/Makefile*.
Como veis possibilidades há muitas.
Para acabar vejamos como podemos mudar a rota de localização
de refuse .
Para mudar a configuração temos que editar o arquivo que usemos para
atualizar o que queiramos atualizar nesse momento (ports-supfile ,
standard-supfile, stable-supfile, freebsd-supfile etc.) e tocar
a configuração da linha *default base=/usr. Mudaremos /usr
pelo diretório root que queiramos que tenha nossa configuração de cvsup.
Lembrai que se especificais por exemplo /etc o arquivo refuse
sempre tem de estar em sup portanto o ubicaríamos em etc //sup.
Não vos preocupeis se nesse momento /etc/sup não existe, cvsup o criará.
A parte também criará uma espécie de "base de dados" com todos os arquivos
que olhou, especificando se os editou só, se os atualizou etc.
Este arquivo estará ubicado dentro do diretório sup e dentro de outro
diretório com o nome da seção que especificámos a atualizar.
Por exemplo, se estabamos atualizando todos os ports (apartado ports-all
descomentado) e tínhamos configurado a rota asi *default base=/etc deveríamos
ter-nos criado o arquivo /etc/sup/ports-all/checkouts.cvs:. contendo
todo tipo de informação sobre nossos ports. Ej:
-...-
Ou ports/archivers/nulib 2#861#11#01#0.
D ports/archivers/p5-Arquive-Tar
C ports/archivers/p5-Arquive-Tar/Makefile,v . . 2#871#19#9875403784#15253#444
1.
3 2001.03.01.06.36.56 2#871#16#4347393#6593#644.
C ports/archivers/p5-Arquive-Tar/distinfo,v . . 2#871#19#9875403783#3933#444
1.1
2000.12.19.09.48.13 2#871#19#9772192932#653#644.
C ports/archivers/p5-Arquive-Tar/pkg-comment,v . . 2#871#19#9875403783#3833#444.
1.1 2000.12.19.09.48.13 2#871#19#9772192932#553#644.
C ports/archivers/p5-Arquive-Tar/pkg-descr,v . . 2#871#19#9875403783#8433#444
1.
1 2000.12.19.09.48.13 2#871#19#9772192933#5143#644.
C ports/archivers/p5-Arquive-Tar/pkg-plist,v . . 2#871#19#9875403783#7083#444
1.
1 2000.12.19.09.48.13 2#871#19#9772192933#3773#644.
-...-
Como veis se indica a data, o estado (Ou=Oupgrade, D =Delete etc) e outras coisas
| NOTA: * Ao especificar uma rota nos refuse files sempre omitimos /usr devido a que já fica especificado na configuração mediante a linea *default prefix=/usr * |
Se pelo contrário tendes descomentado por exemplo as seções
ports-base , ports-archivers e ports-astro tereis três
diretórios com três checkouts.cvs correspondentes a cada seção de ports
atualizada (/etc/sup/ports-base/checkouts.cvs:. , /etc/sup/ports-archivers/checkouts.cvs:.
e /etc/sup/ports-astro/checkouts.cvs:.)
As rotas e configuração também se podem mudar desde o interprete de comandos.
Para isso vos aconselho um man cvsup onde vos dará todo tipo de informação
sobre todas suas características e opções
by Koji