>_Gerenciamento de pacotes Freebsd – 1.1

Pkg:

Pacotes são binários pré-compilados de alguns dos softwares de terceiros mais usados. Os pacotes podem ser gerenciados facilmente com a ajuda de vários utilitários, também conhecidos como ferramentas pkg*:

pkg_add – um utilitário para a instalação e atualização de pacotes de software.
pkg_delete – um utilitário para excluir pacotes de software instalados anteriormente.
pkg_info – um utilitário para mostrar informações sobre pacotes de software.
pkg_create – um utilitário para a criação de pacotes de software.

pkg_add (opção) (nome do pacote) – instala o pacote desejado.

  • -r – instala o pacote e suas dependências;
  • -i – instala o pacote SEM suas dependências;
  • -v – mostra detalhadamente a instalação (verbose);
  • -n – somente mostra o que poderia acontecer se a instalação acontecesse;
  • -R – não armazena a informação que o pacote foi instalado; terá que ser sido removido manualmente no futuro;
  • -f – força a instalação mesmo se os pré-requisitos não forem cumpridos ou o script requisitos falhar,
  • -I – não executa os scripts de instalação ou pós-instalação do pacote.

pkg_delete (opções) (nome do pacote) – remove os pacotes desejados.

As opções são semelhantes às opções do pkg_add:

  • -a – desinstala todos os pacotes;
  • -n – somente mostra o que irá acontecer se você for desinstalar o pacote;
  • -v – mostra detalhadamente o processo de desinstalação (verbose);
  • -r – remove o pacote e suas dependências;
  • -i – pede sua confirmação para desinstalar cada pacote individualmente;
  • -D – se um script de desinstalação existe para um determinado pacote, não é executado,
  • -d – remover diretórios vazios criados pela limpeza do arquivo.

Como usar o pkg_add em modo interativo
O pkg_add possui um modo interativo que é ativado através do sinalizador -i, fazendo com que ele faça questões quando não pode tomar decisões sozinho. Por exemplo, se você não sabe o número de versão de um pacote, você pode tentar algo como:

# pkg_add -i screen

Para alguns pacotes, algumas informações adicionais importantes serão mostradas, informações estas sobre a configuração ou uso do aplicativo. Sendo que isso é importante, será mostrado mesmo se você usar ou não o sinalizador -v. Considere o seguinte exemplo:

# pkg_add ghostscript-fonts-8.11

Vamos continuar agora com um exemplo de pacote que possui dependências:

# pkg_add -v tin-1.8.2p0
parsing tin-1.8.2p0
Dependencies for tin-1.6.2 resolve to: gettext-0.14.6, libutf8-0.8, pcre-6.4p1, libiconv-1.9.2p3 (todo: libiconv-1.9.2p3,gettext-0.14.6,pcre-6.4p1,libutf8-0.8)
tin-1.8.2p0:parsing libiconv-1.9.2p3
tin-1.8.2p0:libiconv-1.9.2p3: complete
tin-1.8.2p0:parsing gettext-0.14.6
Dependencies for gettext-0.14.6 resolve to: expat-2.0.0, libiconv-1.9.2p3 (todo: expat-2.0.0)
tin-1.8.2p0:parsing expat-2.0.0
tin-1.8.2p0:expat-2.0.0: complete
tin-1.8.2p0:gettext-0.14.6: complete
tin-1.8.2p0:parsing pcre-6.4p1
tin-1.8.2p0:pcre-6.4p1: complete
tin-1.8.2p0:parsing libutf8-0.8
tin-1.8.2p0:libutf8-0.8: complete
tin-1.8.2p0: complete

Adicionamos novamente o sinalizador -v para ver o que está acontecendo. Após investigar a informação de empacotamento, as dependências são encontradas e instaladas em primeiro lugar. Perto do meio da saída você pode ver o pacote gettext sendo instalado, e este depende da libiconv. Antes de instalar o gettext, sua informação de empacotamento é examinada e é verificado se libiconv já está instalada.

É possível especificar múltiplos nomes de pacote em uma linha, e eles são instalados um por um, junto com as possíveis dependências.

Você pode ver uma lista dos pacotes instalados usando o utilitário pkg_info.

# pkg_info
aterm-0.4.2p1 color vt102 terminal emulator with transparency support
bzip2-1.0.4 block-sorting file compressor, unencumbered
expat-2.0.0 XML 1.0 parser written in C
fluxbox-0.9.15.1p0 window manager based on the original Blackbox code
gettext-0.14.6 GNU gettext
imlib2-1.3.0 image manipulation library
jpeg-6bp3 IJG’s JPEG compression utilities
libiconv-1.9.2p3 character set conversion library
libltdl-1.5.22p1 GNU libtool system independent dlopen wrapper
libungif-4.1.4p0 tools and library routines for working with GIF images
libutf8-0.8 provides UTF-8 locale support
mutt-1.4.2.2i tty-based e-mail client
pcre-6.4p1 perl-compatible regular expression library
png-1.2.14p0 library for manipulating PNG images
screen-4.0.3p1 multi-screen window manager
tcsh-6.14.00p1 extended C-shell with many useful features
tiff-3.8.2p0 tools and library routines for working with TIFF images
tin-1.8.2p0 threaded NNTP and spool based UseNet newsreader

Ports:

No diretório /usr/ports existe uma infinidade de programas agrupados por temas em subdiretórios. Para instalar um pacote, é preciso fazer o Download e em seguida ser compilado.
Neste caso, o sistema compila o código fonte e proceder com sua instalação, caso esse programa necessite de outros para o seu funcionamento, então o sistema toma a liberdade de instalar e compilar os pacotes necessários.

Os arquivos de código fonte resultantes do download chegam à nossa máquina com o formato “nome_do_programa.tar.gz”.
Após sua instalação, os arquivos serão mantidos no diretório /usr/ports/distfiles.

Claro que para instalar um pacote desta forma, é preciso que tenhamos a rede configurada e com acesso a Internet. Por exemplo, se pretendermos intalar o pacote de edição “vim” bastará executar como root os comandos abaixo:

# cd /usr/ports/editors/vim/ (diretóio do vim)
# make install (para que o sistema proceda à instalação do programa vim)

Após a intalação com sucesso, é possível verificar o arquivo “vim.tar.gz” dentro do diretório /usr/ports/distfiles.
Para desinstalar um pacote, basta executar os comandos abaixo:

# cd /usr/ports/nome/do/programa (para irmos no diretório port pretendido)
# make deinstall (para que o sistema proceda com a desinstalação)

Toda essa informação é mantida em uma hierarquia de diretórios em /usr/ports. Essa hierarquia contém três subdiretórios especiais:

distfiles/ – onde o sistema de portes guarda os arquivos de distribuição de software após ter feito o download.
infrastructure/ – o diretório principal da infraestrutura do portes, contendo todos os scripts e arquivos make necessários.
packages/ – contém todos os pacotes binários compilados pelo sistema de portes.

A infraestrutura do portes é capaz de realizar toda a compilação como um usuário normal, e realizar como usuário root somente quelas etapas que necessitam dos privilégios de super usuário. Exemplos disso são os alvos fake e install do make. No entanto, pelo fato de que privilégios do root sejam sempre necessários em algum ponto, o sistema de portes não vai salvá-lo quando você decidir compilar um aplicativo malicioso.

Você pode configurar o sudo e fazer com que o sistema de portes use-o nas tarefas que exigem permissões de super usuário. Para isso, adicione uma linha ao /etc/mk.conf contendo

SUDO=/usr/bin/sudo

Você pode modificar as permissões da árvore de portes para poder escrever como um usuário normal. Nesse caso, o usuário normal precisa ser adicionado ao grupo wsrc, e os diretórios dependentes devem permitir a escrita pelo grupo.

# chgrp -R wsrc /usr/ports
# find /usr/ports -type d -exec chmod g+w {} ;

Você pode fazer com que o sistema de portes use o systrace adicionando a seguinte linha no /etc/mk.conf

USE_SYSTRACE=Yes

Isso força o procedimento de compilação a permanecer dentro dos diretórios permitidos, e proíbe a escrita em lugares ilegais, reduzindo, dessa forma, o risco de danos ao sistema. Note que o uso do systrace aumenta em cerca de 20% o tempo de compilação.

É possível usar a árvore de portes em modo “apenas para leitura” separando os diretórios que são escritos durante a compilação do porte:

O diretório de trabalho do portes. Este é controlado pela variável WRKOBJDIR, que especifica o diretório que deve conter os diretórios de trabalho.
O diretório contendo os arquivos de distribuição. Este é controlado pela variável DISTDIR.
O diretório contendo os novos pacotes binários criados. Este é controlado pela variável PACKAGE_REPOSITORY.

Por exemplo, você pode adicionar as seguintes linhas no /etc/mk.conf

WRKOBJDIR=/usr/obj/ports
DISTDIR=/usr/distfiles
PACKAGE_REPOSITORY=/usr/packages

Se desejado, você pode também alterar a propriedade desses diretórios para o seu nome de usuário e grupo local, assim o sistema de portes pode criar os diretórios de trabalho como um usuário normal.

Pesquisas na árvore de portes
Uma vez que a árvore de portes está instalada no seu sistema, a tarefa de pesquisar software torna-se muito simples. Simplesmente use make search key=”palavra-chave”, como mostrado no exemplo seguinte.

# cd /usr/ports
# make search key=rsnapshot

Port: rsnapshot-1.3.1p0
Path: net/rsnapshot
Info: remote filesystem snapshot utility
Maint: Antoine Jacoutot <ajacoutot@openbsd.org>
Index: net sysutils
L-deps:
B-deps: :net/rsync
R-deps: :devel/p5-Lchown :net/rsync
Archs: any

Desinstalação de um pacote do porte

# make uninstall
===> Deinstalling for rsnapshot-1.2.9
rsnapshot-1.2.9: complete
Clean shared items: complete

Isso chama o pkg_delete para remover o pacote correspondente do seu sistema. Se desejado, você também pode desinstalar e reinstalar um pacote de porte usando

# make reinstall
===> Cleaning for rsnapshot-1.2.9
/usr/sbin/pkg_delete rsnapshot-1.2.9
rsnapshot-1.2.9: complete
Clean shared items: complete
===> Installing rsnapshot-1.2.9 from /usr/ports/packages/i386/all/rsnapshot-1.2.9.tgz
rsnapshot-1.2.9: complete

Se for necessário remover um pacote já criado, execute o comando abaixo:

# make clean=packages
===> Cleaning for rsnapshot-1.2.9
rm -f /usr/ports/packages/i386/all/rsnapshot-1.2.9.tgz

Atualizando o Ports

Para atualizar a sua coleção de ports pela primeira vez execute o comando abaixo:
# portsnap fetch extract

Quando for atualizar a coleção de ports nas próximas vezes execute o comando abaixo:
# portsnap fetch update

OBS: Todas as informações dos pacotes são armazenadas no diretório /var/db/pkg. A lista de arquivos instalados e a descrição de cada pacote pode ser encontrada nos arquivos destes diretórios.

Fontes:
http://www.openbsd.org
Livro: Dominando BSD

>_Gerenciamento de pacotes Freebsd – 1.1
Tagged on:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: