O pkg é o substituto da próxima geração para as tradicionais ferramentas de gerenciamento de pacotes do FreeBSD, oferecendo muitos recursos que tornam o processamento de pacotes binários mais rápido e fácil.
Para sites que desejam apenas usar pacotes binários pré-construídos a partir dos espelhos do FreeBSD, o gerenciamento de pacotes com pkg pode ser suficiente.
No entanto, para aqueles que optarem por compilar suas aplicações a partir do código-fonte ou que utilizarem seus próprios repositórios, será necessária uma ferramenta de gerenciamento de ports separada.
Como o pkg só funciona com pacotes binários, ele não é um substituto para tais ferramentas. Estas ferramentas podem ser usadas para instalar o software a partir de pacotes binários e da Coleção do Ports, enquanto o pkg instala apenas pacotes binários.
O FreeBSD inclui um utilitário de bootstrap que pode ser usado para baixar e instalar o pkg e suas páginas de manual. Este utilitário foi projetado para funcionar com versões do FreeBSD começando com 10.X
.
Nem todas as versões e arquiteturas do FreeBSD suportam este processo de bootstrap. A lista atual está em https://pkg.freebsd.org/. Para outros casos, o pkg deve ser instalado a partir da coleção de ports ou como um pacote binário.
Para inicializar o sistema, execute:
#
/usr/sbin/pkg
Você deve ter uma conexão com a Internet para que o processo de inicialização seja bem-sucedido.
Caso contrário, para instalar o port, execute:
#
cd /usr/ports/ports-mgmt/pkg
#
make
#
make install clean
Ao atualizar um sistema existente que usava originalmente as ferramentas pkg_ * mais antigas, o banco de dados deve ser convertido para o novo formato, para que as novas ferramentas estejam cientes dos pacotes já instalados. Uma vez que o pkg tenha sido instalado, o banco de dados de pacotes deve ser convertido do formato tradicional para o novo formato, executando este comando:
#
pkg2ng
Esta etapa não é necessária para novas instalações que ainda não possuem nenhum software de terceiros instalado.
Este passo não é reversível. Uma vez que o banco de dados de pacotes tenha sido convertido para o formato pkg, as ferramentas tradicionais pkg _ *
não devem mais ser usadas.
A conversão do banco de dados de pacotes pode emitir erros conforme o conteúdo é convertido para a nova versão. Geralmente, esses erros podem ser ignorados com segurança. No entanto, uma lista com os softwares que não foram convertidos com sucesso é mostrada após o pkg2ng
terminar. Esses aplicativos devem ser reinstalados manualmente.
Para garantir que a Coleção de Ports registre novos softwares com o pkg ao invés do tradicional banco de dados de pacotes, versões do FreeBSD anteriores a 10.X
requerem esta linha em /etc/make.conf
:
WITH_PKGNG= yes
Por padrão, o pkg usa os pacotes binários dos espelhos de pacotes do FreeBSD (o repositório). Para obter informações sobre como criar um repositório de pacotes personalizados, consulte Seção 4.6, “Compilando Pacotes com o Poudriere”.
Opções adicionais de configuração do pkg são descritas em pkg.conf(5).
As informações de uso do pkg estão disponíveis na página de manual pkg(8) ou executando o pkg
sem argumentos adicionais.
Cada argumento do comando pkg é documentado em uma página de manual específica do comando. Para ler a página de manual do pkg install
, por exemplo, execute um destes comandos:
#
pkg help install
#
man pkg-install
O restante desta seção demonstra tarefas comuns de gerenciamento de pacotes binários que podem ser executadas usando o pkg. Cada comando demonstrado fornece muitos switches para personalizar seu uso. Consulte a ajuda de um comando ou a página do manual para obter detalhes e mais exemplos.
Informações sobre os pacotes instalados em um sistema podem ser visualizadas executando pkg info
que, quando executado sem qualquer opção, listará a versão do pacote para todos os pacotes instalados ou para o pacote especificado.
Por exemplo, para ver qual versão do pkg está instalada, execute:
#
pkg info pkg
pkg-1.1.4_1
Para instalar um pacote binário, use o seguinte comando, em que packagename
é o nome do pacote a ser instalado:
#
pkg install
packagename
Esse comando usa os dados do repositório para determinar qual versão do software instalar e se ele possui alguma dependência faltando. Por exemplo, para instalar o curl:
#
pkg install curl
Updating repository catalogue /usr/local/tmp/All/curl-7.31.0_1.txz 100% of 1181 kB 1380 kBps 00m01s /usr/local/tmp/All/ca_root_nss-3.15.1_1.txz 100% of 288 kB 1700 kBps 00m00s Updating repository catalogue The following 2 packages will be installed: Installing ca_root_nss: 3.15.1_1 Installing curl: 7.31.0_1 The installation will require 3 MB more space 0 B to be downloaded Proceed with installing packages [y/N]:y
Checking integrity... done [1/2] Installing ca_root_nss-3.15.1_1... done [2/2] Installing curl-7.31.0_1... done Cleaning up cache files...Done
O novo pacote e quaisquer pacotes adicionais que foram instalados como dependências podem ser vistos na lista de pacotes instalados:
#
pkg info
ca_root_nss-3.15.1_1 The root certificate bundle from the Mozilla Project curl-7.31.0_1 Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers pkg-1.1.4_6 New generation package manager
Pacotes que não são mais necessários podem ser removidos com pkg delete
. Por exemplo:
#
pkg delete curl
The following packages will be deleted: curl-7.31.0_1 The deletion will free 3 MB Proceed with deleting packages [y/N]:y
[1/1] Deleting curl-7.31.0_1... done
Os pacotes instalados podem ser atualizados para as versões mais recentes executando:
#
pkg upgrade
Este comando irá comparar as versões instaladas com as disponíveis no catálogo do repositório e atualizá-las a partir do repositório.
Vulnerabilidades de software são regularmente descobertas em aplicativos de terceiros. Para resolver isso, o pkg inclui um mecanismo de auditoria integrado. Para determinar se há alguma vulnerabilidade conhecida para o software instalado no sistema, execute:
#
pkg audit -F
Remover um pacote pode deixar dependências que não são mais necessárias. Pacotes desnecessários que foram instalados como dependências podem ser automaticamente detectados e removidos usando:
#
pkg autoremove
Packages to be autoremoved: ca_root_nss-3.15.1_1 The autoremoval will free 723 kB Proceed with autoremoval of packages [y/N]:y
Deinstalling ca_root_nss-3.15.1_1... done
Os pacotes instalados como dependências são chamados de pacotes automáticos. Pacotes não automáticos, ou seja, os pacotes que não foram instalados como uma dependência para outro pacote, podem ser listados usando:
#
pkg prime-list
nginx openvpn sudo
O pkg prime-list
é um alias de comando declarado no /usr/local/etc/pkg.conf
. Existem muitos outros que podem ser usados para consultar o banco de dados de pacotes do sistema. Por exemplo, o comando pkg prime-origins
pode ser usado para obter o diretório de origem dos ports da lista mencionada acima:
#
pkg prime-origins
www/nginx security/openvpn security/sudo
Esta lista pode ser usada para recompilar todos os pacotes instalados em um sistema usando ferramentas de compilação como o ports-mgmt/poudriere ou o ports-mgmt/synth.
Marcar um pacote instalado como automático pode ser feito usando:
#
pkg set -A 1 devel/cmake
Uma vez que um pacote é um pacote orfão e está marcado como automático, ele será selecionado por pkg autoremove
.
Marcar um pacote instalado como não automático pode ser feito usando:
#
pkg set -A 0 devel/cmake
Ao contrário do sistema tradicional de gerenciamento de pacotes, o pkg inclui seu próprio mecanismo de backup de banco de dados de pacotes. Essa funcionalidade é habilitada por padrão.
Para desabilitar o script que faz o backup periódico do banco de dados de pacotes, defina daily_backup_pkgdb_enable="NO"
no periodic.conf(5).
Para restaurar o conteúdo de um backup anterior do banco de dados de pacotes, execute o seguinte comando substituindo /path/to/pkg.sql
pelo local do backup:
#
pkg backup -r
/path/to/pkg.sql
Se estiver restaurando um backup feito pelo script periódico, ele deve ser descompactado antes de ser restaurado.
Para executar um backup manual do banco de dados pkg, execute o seguinte comando, substituindo /path/to/pkg.sql
por um nome de arquivo e local adequados:
#
pkg backup -d
/path/to/pkg.sql
Por padrão, o pkg armazena pacotes binários em um diretório de cache definido por PKG_CACHEDIR
no pkg.conf(5). Somente cópias dos últimos pacotes instalados são mantidas. Versões mais antigas do pkg mantinham todos os pacotes anteriores. Para remover esses pacotes binários desatualizados, execute:
#
pkg clean
O cache inteiro pode ser limpo executando:
#
pkg clean -a
Os softwares dentro da Coleção de Ports do FreeBSD podem passar por grandes mudanças no número de versão. Para resolver isso, o pkg possui um comando interno para atualizar as origens do pacote. Isto pode ser útil, por exemplo, se lang/php5 for renomeado para lang/php53 para que lang/php5 possa agora representar a versão 5.4
.
Para alterar a origem do pacote para o exemplo acima, execute:
#
pkg set -o lang/php5:lang/php53
Como outro exemplo, para atualizar lang/ruby18 para lang/ruby19, execute:
#
pkg set -o lang/ruby18:lang/ruby19
Como um exemplo final, para alterar a origem das bibliotecas compartilhadas libglut
de graphics/libglut para graphics/freeglut, execute:
#
pkg set -o graphics/libglut:graphics/freeglut
Ao alterar as origens do pacote, é importante reinstalar os pacotes que dependem do pacote com a origem modificada. Para forçar uma reinstalação dos pacotes dependentes, execute:
#
pkg install -Rf
graphics/freeglut
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.