Post em Destaque

BSD Day 2018 chegando

  Pessoal da área de tecnologia ou que gosta, não deixe de ir nesse evento. Será abordado muitos assuntos legais desde segurança da informação até impressão 3D e muito mais. O vento é gratuito mas quem quiser contribuir com alguma doação, pode ser feito pelo site mesmo de forma segura....

Leia mais...

Gerenciando seus pacotes no FreeBSD com o portmaster

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre | Posted on 18-05-2012

Tags:, ,

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.  🙂

Share Button