Gerenciando seus pacotes no FreeBSD com o portmaster
Posted by gondim | Posted in Dicas, FreeBSD, Software Livre | Posted on 18-05-2012
Tags:port manager, portmaster, ports
12
Uma coisa que sempre foi complicada quando trabalhamos com pacotes compilados, é a famosa dependência. Quando instalamos uma aplicação pelo ports, o mesmo se encarrega de baixar, compilar e instalar todas as dependências que aquela aplicação necessita. Dependendo da aplicação e dependência ainda podem aparecer janelas de configurações de opções de compilação para aquele determinado pacote e aí dependendo das marcações, mais dependências poderão surgir no contexto. Até aqui tudo bem, o problema maior é quando você precisa atualizar uma lib ou aplicação que envolverá atualizar outras aplicações da sua dependência. Para você ter uma idéia do que estou dizendo vou pegar como exemplo a libpcre e usar o comando “pkg_info -R” para mostrar quais pacotes dependem dele:
# pkg_info -R pcre-8.30_2
Information for pcre-8.30_2:Required by:
ap22-mod_auth_mysql_another-3.0.0_4
ap22-mod_wsgi-2.8_2
apache-2.2.22_5
pecl-APC-3.1.9_1
pecl-intl-1.1.2_3
pecl-pdflib-2.1.8_1
phpMyAdmin-3.4.10.2
postfixadmin-2.3.5
roundcube-0.7,1
php5-5.3.13
php5-zip-5.3.13
php5-zlib-5.3.13
php5-mbstring-5.3.13
php5-gettext-5.3.13
php5-mysqli-5.3.13
php5-gd-5.3.13
php5-imap-5.3.13
php5-xml-5.3.13
php5-openssl-5.3.13
php5-session-5.3.13
php5-iconv-5.3.13
php5-pspell-5.3.13
php5-dom-5.3.13
php5-sqlite-5.3.13
php5-json-5.3.13
php5-ldap-5.3.13
php5-hash-5.3.13
php5-ctype-5.3.13
php5-bz2-5.3.13
php5-mysql-5.3.13
php5-xmlrpc-5.3.13
php5-filter-5.3.13
php5-mcrypt-5.3.13
postfix-2.8.10,1
Isso quer dizer que se eu atualizar essa lib, terei que recompilar todos esses pacotes que dependem dela. Imagine o trabalho e agora imagine ter que fazer isso em mais de um servidor. Uns 2 anos atrás isso me assombrou pois na época tentei usar o portupgrade e não me adaptei muito bem. Foi quando conheci o portmaster e realmente fiquei maravilhado com essa ferramenta fabulosa escrita em shell script por Douglas Barton.
Para usarmos o portmaster precisamos primeiramente instala-lo:
# cd /usr/ports/ports-mgmt/portmaster
# make install clean
# rehash <- se tiver usando csh
O man portmaster pode lhe apresentar todas as opções disponíveis e por isso vou mostrar apenas algumas básicas aqui:
Instalando um pacote:
# portmaster lang/php5-extensions <- esse comando fará a instalação do PHP5 e as extensões que você selecionar para ele.
Excluir um pacote:
# portmaster -e php5-bz2-5.3.13 <- nesse caso estou querendo excluir esse pacote php5-bz2
Substituir uma versão de pacote já instalada por outra:
# portmaster -o /usr/ports/mail/postfix28 postfix-2.7.8_1,1 <- nesse exemplo estou substituindo o postfix 2.7 que já está instalado no meu sistema, pelo postfix 2.8. Repare que o parâmetro “-o” especifica o local onde se encontra o novo pacote que será colocado no lugar do anterior.
Atualizar e recompilar todos os pacotes instalados:
# portmaster -a -f <- quando você quiser atualizar e recompilar todos os pacotes instalados no seu sistema. Dependendo da quantidade de pacotes isso poderá demorar um bocado.
Atualizar um pacote e todas as suas dependências e ainda apagando os distfiles:
# portmaster -d -Rf databases/rrdtool <- nesse caso vai atualizar e recompilar o pacote rrdtool e todas as suas depências. O “-d” vai dizer para o portmaster apagar os distfiles.
Para excluir um pacote da atualização:
# portmaster -a -f -x roundcube <- aqui vou atualizar todos os pacotes exceto o pacote roundcube
Bem é isso pessoal. Mais detalhes estudem o man do portmaster.
Ah! Não esqueçam de fazer um “portsnap fetch update” antes de usar o portmaster. 🙂