Como lidar com os pacotes de programas que encontramos por aí na Internet, ou nos CDs das distribuições Linux? Quais os processos para instalar, remover e atualizar programas que estão no formato DPKG?
Para manipular os pacotes .deb, o Debian e seus derivados utilizam o programa dpkg. Com esta poderosa ferramenta, podemos construir, instalar, consultar, atualizar ou apagar pacotes de programas. Um pacote no formato DEB consiste em um arquivo no formato ar, contendo os meta-dados (arquivos de controle, definições, permissões, informações de dependências, entre outros) e dados do programa, ambos agrupados com o tar e compactados com o gzip.
Para extrair o conteúdo de um pacote DEB sem instalá-lo no sistema, utilizamos o comando dpkg-deb. O parâmetro -x extrai os dados de programa do pacote. Exemplo, extraindo o conteúdo de um pacote no diretório atual:
$ dpkg-deb -x pacote.deb .
Para extrair os meta-dados (arquivos de controle) do mesmo pacote, utilizamos o parâmetro -e. O exemplo abaixo vai criar um diretório chamado DEBIAN contendo todos os arquivos de controle do pacote:
$ dpkg-deb -e pacote.deb
O banco de dados do dpkg está localizado no diretório /var/lib/dpkg e seu formato é de um arquivo texto comum, podendo ser editado por qualquer editor de texto.
DPKG: Instalação e desinstalação
Para instalar um pacote, utilizamos a opção -i:
# dpkg -i pacote.deb
O -i também serve para atualização de um pacote. Se o pacote já existir e se o que estivermos tentando instalar for mais novo, o pacote será atualizado.
Para remover um pacote do sistema, utilizamos a opção -r:
# dpkg -r pacote
Caso esse pacote não seja removido porque outros pacotes dependem dele, podemos forçar a remoção do mesmo com o parâmetro –force-depends:
# dpkg -r --force-depends pacote
Cuidado! Forçar a remoção de um pacote sem resolver as dependência pode causar problemas! Os programas dependentes do pacote poderão não funcionar corretamente. Use apenas se você souber o que estiver fazendo.
DPKG: Consulta
Para ver uma lista com todos os pacotes intalados no sistema, utilize:
$ dpkg -l
O dpkg irá mostrar uma lista com todos os pacotes, o status, a versão e um pequeno sumário sobre o que é cada um dos pacote.
As três primeiras linhas do comando dpkg -l mostram os estados dos pacotes, representados por três letras. A primeira letra significa o estado que o sistema quer que o pacote esteja (Desired), a segunda letra indica o estado atual do pacote e a terceira letra indica um erro. O próprio cabeçalho do comando indica quais estados podem aparecer nas letras.
Por exemplo, a combinação ii significa que o sistema quer que o pacote esteja instalado (primeira letra i) e o pacote realmente está instalado no sistema (segunda letra i). A combinação rc significa que o pacote está marcado para ser removido (primeira letra: r), mas os arquivos de configuração não foram removidos (segunda letra: c).
Para saber se apenas um pacote está instalado, basta colocar o nome do pacote depois do parâmetro -l:
$ dpkg -l vim
Para listar todos os pacotes associados a uma certa palavra, utilizamos o -l da seguinte forma:
$ dpkg -l '*gnome*'
Dessa forma todos os pacotes contendo a palavra gnome no nome serão mostrados na tela.
Para obter informações detalhadas sobre um pacote, utilizamos o parâmetro -p:
$ dpkg -p grub Package: grub Priority: optional Section: admin Installed-Size: 668 Maintainer: Grub Maintainers <[email protected]> Architecture: i386 Version: 0.95+cvs20040624-17 Depends: libc6 (>= 2.3.2.ds1-4), libncurses5 (>= 5.4-1) Suggests: grub-doc, grubconf Size: 358684 Description: GRand Unified Bootloader GRUB is a GPLed bootloader intended to unify bootloading across x86 operating systems. In addition to loading the Linux kernel, it implements the Multiboot standard, which allows for flexible loading of multiple boot images (needed for modular kernels such as the GNU Hurd).
O dpkg -p mostrou vários detalhes sobre o pacote, como por exemplo quem mantém o pacote, que seção ele pertence, qual arquiteura, do que ele depende, qual o tamanho, versão e um sumário e descrição sobre o que é o pacote. Quem quer conhecer mais sobre os programas dentro da distribuição pode utilizar o dpkg -l e ir verificando os detalhes de cada pacote com dpkg -p. Haja paciência!
Para verificar o status de um pacote (como mostrado na lista com o dpkg -l, utilize o parâmetro -s:
$ dpkg -s pacote
Para listar o conteúdo de um pacote:
$ dpkg -L grub /. /sbin /sbin/update-grub /sbin/grub-install /usr /usr/share ...corte...
Para procurar por um arquivo dentro do banco de dados do dpkg afim de descobrir a qual pacote ele pertence, utilizamos a opção -S:
$ dpkg -S arquivo
Exemplo:
$ dpkg -S /usr/bin/file file: /usr/bin/file