Como você descobriu, pkg_add
não pode atualizar as portas normalmente. O pacote portupgrade
faz isso muito bem, e é o método que eu uso e recomendo (há outros disponíveis se você não gostar desse método).
Quando a porta estiver instalada, você pode simplesmente executar portupgrade -aPP
e atualizará todas as portas instaladas no sistema usando pacotes. Se você não quiser atualizar a porta, poderá executar portupgrade -RPP [category/port]
para atualizar uma porta específica e as portas das quais ela depende. Executar o programa sem argumentos atualizará a porta pertencente ao diretório atual (por exemplo, cd /usr/ports/security/openssl ; portupgrade
atualizará openssl
, sem a opção -PP
que construirá a porta a partir da origem); e se você não estiver em um diretório de portas, ele mostrará a ajuda (igual à opção -h
).
Editar:
Por padrão, o portupgrade instalará pacotes se eles existirem no diretório definido pela variável PKG_PATH
environmental (o padrão é $PACKAGES/All
, $PACKAGES
é padronizado como $PORTSDIR/packages
; portanto, o caminho padrão é /usr/ports/packages/All
).
Se eles não existirem lá, ele fará o download dos pacotes (por preferência) de $PKG_SITES
(recebe um URI com subpastas Latest
e All
; nenhum valor padrão) ou $PACKAGEROOT
(leva um URI com o caminho do espelho normal abaixo dele; o padrão é "ftp://ftp.freebsd.org"
).
Uma maneira fácil de fazer isso é usar uma máquina para criar / armazenar em cache os pacotes que serão instalados em outra máquina.
- Você pode criar pacotes a partir da árvore de portes com
make package
no diretório da porta (que também instalará a porta). - Você pode usar
portupgrade
para atualizar uma máquina e armazenar em cache os arquivos do pacote para uso em outras máquinas, os comandos mencionados anteriormente armazenarão em cache os arquivos de pacote no diretório padrão (veja acima). - Você pode usar o portupgrade para buscar somente os pacotes e não instalá-los, com
portupgrade -aPPF
ouportupgrade -RPPF [category/port]
.
Depois de ter os arquivos do pacote em cache, você pode compartilhar o diretório via NFS, FTP, HTTP, etc; desde que os arquivos estejam acessíveis nas outras máquinas. Defina o PACKAGES
ou PKG_SITE
com os valores apropriados para apontar para o servidor de armazenamento em cache. Execute o comando típico portupgrade
, ele deve extrair os pacotes do servidor de armazenamento em cache e instalá-los.
Nota: A árvore de portas precisa estar atualizada em todos os servidores para que portupgrade
funcione corretamente (ela tentará atualizar para qualquer versão que esteja na árvore de ports locais). Se você vai ter as mesmas portas / pacotes instalados em todos os computadores, pode ser mais fácil compartilhar um diretório /usr/ports
de servidores (digamos sobre NFS) e montá-lo em todos os outros servidores.