Autor: Juan RP
Data:
28/08/2002.
Ultima revisão: 12-11-2002.
O sistema de ports e um de seus grandes inconvenientes: atualizar pacotes. O problema que muitos usuários tinham antes de que existisse Portupgrade era que , despues de ter instalado um port e querer atualizá-lo a uma versão mas recente, tenian dois pacotes iguais na base de dados /var/db/pkg de diferente versão, com o que obteniamos erros com as dependências, ou teniamos que apagar o pacote e instalar o pacote novo para não ter as duas versões instaladas.
Por sorte temos Portupgrade o qual contém várias ferramentas para administrar, atualizar, reconfigurar os ports/pacotes e arranjar dependências entre outras coisas. Despues entraremos em mas detalhes, por agora vamos ao primeiro passo , obter Portupgrade.
Para instalar dito pacote , podemos fazê-lo de 2 modos: ou instalámos o pacote binário e suas dependências mediante o comando pkg_add, ou instalamos e compilámos automaticamente o port. Aqui vos explico os 2 passos:
1ª opção (pkg_add):
pkg_add -r portupgrade
2ª opção (port):
cd /usr/ports/sysutils/portupgrade && make install clean
Podemos comprovar se o temos bem instalado e ver os ficheros que traz o pacote mediante o comando pkg_info -L 'portupgrade*' | more. Se todo tem ido corretamente , já teremos Portupgrade pronto para que faça o trabalho "sujo".
Antes de usar portupgrade ,devemos ter instalado em nosso sistema o pacote cvsup, o procedimento será o mesmo para instalá-lo, mas poderemos eleger entre 2 versões:
Este é a versão para executá-lo em modo texto
Este programa se pode executar em modo grafico e em modo texto
Despues de tê-lo instalado podemos atualizar nossa raiz de ports :-).
Temos 2 opções para atualizar nosso diretório de ports, ainda que os dois usam o mesmo comando ao fim e ao cabo. Ou bem elegemos o método tradicional (cvsup -g -L 2 /rota/onde/esta/ports-supfile), ou em seu lugar podemos utilizar uma alternativa:
#cp /etc/defaults/make.conf /etc/
E editaremos este mesmo fichero que copiámos a etc /, e ficará da seguinte forma:
SUP_UPDATE=yes SUP=/usr/local/bin/cvsup SUPFLAGS= -g -L 2 SUPHOST=cvsup.uk.FreeBSD.org SUPFILE=/usr/share/examples/cvsup/stable-supfile PORTSSUPFILE=/usr/share/examples/cvsup/ports-supfile DOCSUPFILE=/usr/share/examples/cvsup/doc-supfile
Se usais uma conexion lenta (modem) , podeis adicionar o flag -z a SUPFLAGS , o qual fará que comprima os dados com o consiguiente aumento de velocidade. Uma vez temos estas lineas metidas , podemos ir-nos a usr //ports e teclear o seguinte comando para atualizar automaticamente nossa raiz de ports: make update.
Obrigado às lineas referentes a cvsup que metemos anteriormente em etc //make.conf, poderemos utilizar o comando make update dentro do diretório /usr/src.O qual atualizará nosso diretório de fontes completo ( vease sys,doc,ports ... ).
Agora que já temos atualizada nossa raiz de ports , vos explicarei o funcionamento básico de todos os comandos que contém portupgrade.
Olhando com pkg_info -L 'portupgrade*' vemos que este pacote contém os seguintes comandos:
portsdb e ports_glob são equivalentes, os dois fazem a mesma função.
É um comando quase equivalente ao que vem incluído com a instalação base de FreeBSD , pkg_delete, mas adiciona algumas melhoras , tais como recursividad -r , recursividad investida -R e algumas mas. Pára mas informação te recomendo que olhes a página man.
Este comando se usa para baixar pacotes binários de localizações remotas, entre suas características est´ o flag -R, o qual baixa as dependências que precise o pacote.
Serve para listar todos os pacotes instalados no sistema e opcionalmente as dependências destes, faz a mesma função que pkg_info com algumas melhoras adicionadas. Opcionalmente podes listar todos os pacotes ordenados por ordem de dependências combinandolo com pkg_sort, exemplo : pkg_glob -a | pkg_sort .
Lê da entrada estandar e ordena os pacotes por ordem de dependências.
Invoca o primeiro navegador disponível que tenhamos , para utilizar a ferramenta CVSweb, com a qual poderemos navegar pelo CVSROOT de ports .
Uma util ferramenta com a qual poderemos limpar os diretórios de trabalho da raiz de ports, apagar pacotes antigos em usr //ports/distfiles, e librerias compartidas que estan repetidas ou que não têm utilidade.
Esta ferramenta gera uma base de dados (INDEX.db), basandose no ídice dos ports (/usr/ports/INDEX).Se autogenera quando a base de dados é muito antiga a comparacion com INDEX. Recomenda-se executar com os flags -uU despues de atualizar nossa raiz de ports.
A mas importante de todas as que contém o pacote, com a qual atualizaremos, reconfiguraremos todos os pacotes instalados no sistema.
Nos servirá para comparar as versões dos pacotes instalados com os que temos na raiz de ports e nos dir´ cuales faz defeituosa atualizar.
Utilidade que nos servira para instalar o port ou pacote binário que lhe digamos
Com esta última poderemos gerar/regenerar a base de dados que usa portupgrade para ver as dependências e versões dos pacotes normalmente usaremos os flags -ufa e -F para refazer a base de dados e revisar/reparar as dependências respectivamente.
Para atualizar todos os pacotes que temos instalados em nosso sistema , utilizaremos o comando portupgrade -vai, o qual a primeira vez que o executemos chamará a pkgdb internamente e criasse a base de dados que utilizasse portupgrade. Se ademas quisieramos fazer a actualizaci&oocute;n em modo interativo añadiriamos o flag -i, o qual nos perguntará se queremos atualizar ou não esse pacote.
Se só queremos atualizar um pacote em questão , por exemplo mozilla , o executaríamos de tal modo: portupgrade -v mozilla, ademas por se não fosse pouco desejámos atualizar as dependências deste pacote tambien, adicionaremos o flag -r. Interessante eh ?. Para ver mas características do comando portupgrade, aconselho-vos que veais a página man cuidadosamente.
Que não teneis espaço em usr /, por culpa da compilacion de ports e quereis liberar espaço?. A resposta a este problema esta no comando portsclean -CD. Este apagará todos os diretórios de trabalho de compilação dos ports e os tarballs de pacotes de versões antigas que se encontram em usr //ports/distfiles. Como sempre , mas informaci&ocute;n na página man.
Por suposto não todo são alegrias, e de vez em quando deberias de executar o comando pkgdb -F para arranjar os problemas que tenham surgido com as dependências. Não entrarei em detalhes com este comando já que está suficientemente claro o que se deve fazer.
Se desejamos instalar um port ou pacote que não temos instalado em nosso
sistema deveremos de utilizar o comando portinstall
seguido dos flags correspondentes e o nome ou nommbres destes.
Exemplo:
portinstall -m WITH_GNOME=não -v
xchat
Aqui vemos um novo flag -m o qual
lhe passa parâmetros ao comando make para a
compilação, o seguinte fica claro para que serve :P.
Por ultimo vos porei um exemplo sobre como recompilar um port e adicionar-lhe uma
opção de configuração, o port que utilizarei será: (pure-ftpd). Olvidásteis dar-lhe suporte MySQL a vosso servo ftp e quereis habilitar essa opção
?. A solução é esta:
portupgrade -m
WITH_MYSQL=yes -vf pure-ftpd
Neste comando encontramos um novo flag -f o qual significa force, osea que força a reinstalá-lo. Espero que tenha ficado claro.
Analisei um por um os comandos que contém o pacote portupgrade e vos pus alguns exemplos de como usá-los , podeis ver que as opções são muito flexíveis e podeis combiná-las como vos plazca . Para qualquer dúvida sobre o funcionamento da ferramenta/s, não olvideis recorrer à pagina man antes de perguntar pelo irc ou nas listas de correio. Espero que este pequeno tutorial sirva de guia para que vos vayais introduzindo em atualizar pacotes.