Se você prefere compilar seus softwares a partir do código fonte, usando o sistema de ports, no FreeBSD, uma alternativa atraente é usar o comando portmaster.
Este comando é usado nas tarefas de gestão de software no FreeBSD — para verificar/aplicar atualizações, instalar/remover ports e todas as suas dependências.
Leia mais sobre gestão de pacotes no FreeBSD, com o Portsnap.
Neste post, estou usando exemplos baseados no FreeBSD 10.3 STABLE.
Para obter o utilitário portmaster, faça a sua instalação via ports system, se ainda não vez.
Como instalar o portmaster no FreeBSD
Se ainda não tiver o portmaster instalado no sistema, use um destes 2 métodos de instalação.
Para baixar e instalar, via pkg:
sudo pkg install portmaster
Password: Updating FreeBSD repository catalogue... Fetching meta.txz: 100% 944 B 0.9kB/s 00:01 Fetching packagesite.txz: 100% 6 MiB 1.5MB/s 00:04 Processing entries: 100% FreeBSD repository update completed. 25560 packages processed. Updating database digests format: 100% New version of pkg detected; it needs to be installed first. The following 1 package(s) will be affected (of 0 checked): Installed packages to be UPGRADED: pkg: 1.8.7 -> 1.8.7_1 Number of packages to be upgraded: 1 2 MiB to be downloaded. Proceed with this action? [y/N]:
… ou compile a ferramenta, a partir dos fontes. Para isto, vá até o diretório do pacote, na árvore de ports e instale-o com o make:
cd /usr/ports/ports-mgmt/portmaster/ sudo make install clean
Especificamente sobre este processo, o sistema poderá perguntar se você deseja instalar extensões programáveis para uma ou mais shells. Eu optei por não e as desmarquei (figura acima).
É possível ver mensagem sobre adicionar informações ao /etc/make.conf e converter seu banco de dados de pacotes (package database) — o que não é necessário nas versões do FreeBSD 10.1 ou superiores.
Como atualizar o sistema com o portmaster
Uma vez instalado o portmaster, verfique se há atualizações disponíveis:
portmaster -L
Como você pode ver, no exemplo acima, não é necessário ter privilégios administrativos para fazer este procedimento.
O meu resultado (parcial, abaixo), mostra que há 47 atualizações pendentes:
===>>> 47 total installed ports ===>>> 2 have new versions available
O portmaster examina todos os softwares instalados no seu sistema e o compara com o arquivo de índice, a procura de novas versões disponíveis.
Funciona como o comando pkg e independe do fato de os softwares terem sido instalados via package ou ports.
No que tange as dependências, ele os categoriza e determina como estão conectados entre si.
Repare a saída (acima) do comando. Todos os que tenham atualização disponível, terão uma linha indentada, em destaque (exemplo abaixo):
===>>> pt-freebsd-doc-48963,1 ===>>> New version available: pt-freebsd-doc-49071,1
Novamente, você pode optar por um destes 2 métodos de atualização: packages ou portmaster.
Se optar por fazer a atualização através do primeiro, use novamente o comando pkg:
sudo pkg upgrade
Password: Updating FreeBSD repository catalogue... FreeBSD repository is up-to-date. All repositories are up-to-date. Updating database digests format: 100% New version of pkg detected; it needs to be installed first. The following 1 package(s) will be affected (of 0 checked): Installed packages to be UPGRADED: pkg: 1.8.7 -> 1.8.7_1 Number of packages to be upgraded: 1 2 MiB to be downloaded. Proceed with this action? [y/N]:
Se você prefere o segundo método, para atualizar todos os ports que necessitam de atualização, use a seguinte opção:
portmaster -aD
Para remover os distfiles velhos, use ‘–clean-distfiles’:
portmaster --clean-distfiles
Fique atento, pois este processo pode pedir sua intervenção algumas ou várias vezes, até ser concluído.