Gerenciamento de pacotes com dpkg
O dpkg é o gerenciador de pacotes padrão em distribuições Debian e derivados. Seu gerenciamento é bem simplificado através de parâmetros e argumentos passados via linha de comandos, abaixo veremos alguns simples exemplos de utilização do dpkg nas tarefas diárias de um administrador de sistemas:
Para listarmos todos os pacotes disponíveis no sistema, pode-se executar a seguinte linha de comandos:
root@server:~# dpkg -l
A lista ficaria bem extensa, então é possível também redirecionar a saída para um pipe e filtrar somente os pacotes que estamos procurando:
root@server:~# dpkg -l |grep apache ii apache2 2.2.16-6+squeeze2 Apache HTTP Server metapackage ii apache2-mpm-worker 2.2.16-6+squeeze2 Apache HTTP Server - high speed threaded model ii apache2-utils 2.2.16-6+squeeze2 utility programs for webservers ii apache2.2-bin 2.2.16-6+squeeze2 Apache HTTP Server common binary files ii apache2.2-common 2.2.16-6+squeeze2 Apache HTTP Server common files ii libapache2-mod-proxy-html 3.0.1-1 Apache2 filter module for HTML links
No exemplo acima, foram listados todos os pacotes que possuem “apache” em seu nome, isso graças ao filtro permitido pelo pipe. Para adicioanar um pacote, utilizamos a opção -i do dpkg:
root@server:~# dpkg -i rkhunter_1.3.6-4_all.deb
Acima efetuamos a instalação do pacote rkhunter. Note que devemos indormar o nome completo do arquivo incluindo a extensão .deb. Já no processo de remoção de pacotes não precisamos especificar a extensão, somente o nome do pacote. Abaixo usaremos como exemplo novament e o pacote rkhunter como exemplo de remoção de um pacote utilizando o dpkg:
root@server:~# dpkg -l |grep rkhunter ii rkhunter 1.3.6-4 rootkit, backdoor, sniffer and exploit scanner
Na linha acima, listamos o pacote rkhunter para saber se o mesmo estava instalado no sistema. Agora utilizando a opção -r removemos o pacote com a linha de comandos abaixo:
root@server:~# dpkg -r rkhunter
Uma grande utilidade do comando dpkg, é quando possuímos determinado arquivo mas não sabemos a que pacote o mesmo peertence. A opção -S serve para listar os pacotes pertencentes a cada arquivo:
root@server:~# dpkg -S /etc/rkhunter.conf rkhunter: /etc/rkhunter.conf
Com o resultado acima, podemos ver que o arquivo /etc/rkhunter.conf pertence ao pacote rkhunter.
Também podemos listar todos os arquivos referentes a um determinado pacote, com a opção -L é possível realizar tal procedimento:
root@server:~# dpkg -L rcconf /. /var /var/lib /var/lib/rcconf /usr /usr/sbin /usr/sbin/rcconf /usr/sbin/update-rcconf-guide /usr/share /usr/share/doc /usr/share/doc/rcconf /usr/share/doc/rcconf/README.Debian /usr/share/doc/rcconf/copyright /usr/share/doc/rcconf/changelog.gz /usr/share/man /usr/share/man/man8 /usr/share/man/man8/rcconf.8.gz /usr/share/man/man8/update-rcconf-guide.8.gz /usr/bin
Se por alguma razão for necessário extrair os arquivos de um pacote, a opção -x, observe abaixo que extraímos o pacote para nosso diretório local indicando um (.), pois é necessário sempre informar um destino ao utilizar esta opção:
root@server:/tmp/teste# dpkg -x /var/cache/apt/archives/rcconf_2.5_all.deb . root@server:/tmp/teste# ls -l total 8 drwxr-xr-x 5 root root 4096 Nov 16 2009 usr drwxr-xr-x 3 root root 4096 Nov 16 2009 var