Você está na página 1de 6

TLA-I Autor: Eduardo de Oliveira Hernandes

15.3 – Sistemas de gerenciamento de pacotes


A instalação de programas via pacotes compactados pré-compilados, possuía muitos problemas.
Muitos arquivos acabavam ficando dispersos no sistema, a desinstalação era um grande problema e havia
muitos problemas de dependências de bibliotecas.
Para evitar estes tipos de problemas e também com a popularização do sistema GNU/Linux em
computadores populares, gerou-se a necessidade de distribuir os programas na sua forma binária e
consequentemente a criação de um sistema de pacotes.
Os desenvolvedores de distribuições começaram a definir alguns gerenciadores de pacotes, e
geralmente, um pacote é específico para uma arquitetura, sistema operacional e distribuição.
Com a utilização de um sistema gerenciador de pacotes, é muito simples e fácil para o usuário
atualizar o sistema ou adicionar programas através de CD's de instalação ou através da própria Internet.
Um pacote nada mais é do que um programa (ou vários) já compilado pronto para funcionar, que
está “empacotado” em um único arquivo, denominado pacote.

O que é um pacote:

Um pacote contém algumas informações, veja:

• arquivos binários (programas já compilados)


• scripts de instalação
• arquivos de configuração do sistema
• informações sobre dependências
• informações sobre conflitos com outros pacotes
• relação de todos os arquivos contidos no pacote
• relação do local onde os arquivos são instalados
• relação dos programas e bibliotecas que são pré-requisitos para a instalação

Alguns pacotes não funcionam sem algumas capacidades fornecidas por um ou mais pacotes,
estes pacotes são conhecidos como pacotes dependentes. As informações que estes pacotes contém são
de grande ajuda para o gerenciador de pacotes que tenta certificar que os programas instalados irão
trabalhar de forma apropriada. Caso um pacote seja necessário para outro, durante a desinstalação o
usuário será avisado. Isto são as “dependências” !
As dependências são o calcanhar de aquiles de qualquer gerenciador de pacotes, pois quando um
pacote precisa que já exista um ou mais pacotes específicos (nome, versão, etc...) instalados no sistema,
ele “depende” desses pacotes e não pode ser instalado sem que estes pacotes dependentes estejam
previamente instalados no sistema.

Os dois principais sistemas de pacotes existentes hoje em dia são:

RPM – RedHat Package Manager, foi criado pela distribuição RedHat e é utilizado por muitas
outras distribuições (geralmente voltadas para empresas e usuários finais) como Conectiva, SUSE,
Fedora, Mandriva entre tantas outras. Este gerenciador de pacotes foi adotado como padrão pelo projeto
LSB (Linux Standard Base).
Este gerenciador é baseado no empacotador “cpio”, a extensão dos arquivos é “.rpm”, o comando
utilizado para gerenciamento é “rpm” e além disso possui vários front-ends gráficos.

Geralmente as versões dos pacotes seguem a seguinte convenção:

<nome-pacote> - <versão-fonte> - <versão-pacote> . <arquitetura> . rpm

Ex:.

bash-1.14.7-22.i386.rpm

Administração de Sistemas Linux - I 1


TLA-I Autor: Eduardo de Oliveira Hernandes

DPKG – Debian Packager: este é gerenciador de pacotes utilizado pela distribuição Debian
GNU/Linux e outras distribuições baseadas em Debian como Knoppix e Ubuntu. Os pacotes Debian
recebem a extensão .deb e muitos consideram o sistema de pacotes do Debian tecnicamente superior ao
RPM.

Geralmente as versões dos pacotes seguem a seguinte convenção:

<nome-pacote> _ <versão-fonte> - <versão-pacote> . deb

Ex:.

bash_2.04-6.deb

Pode acontecer às vezes de alguns pacotes .deb anexarem a arquitetura ficando assim:

bash_2.04-6_i386.deb

Observação:

TGZ – arquivos com extensão “.tgz” é o formato de pacotes utilizados na distribuição Slackware.

15.4 – Ferramentas de gerenciamento de pacotes – dpkg e rpm

Instalando/atualizando pacotes

Para instalar um pacote no sistema utilize os seguintes comandos abaixo de acordo:

Debian

dpkg -i pacote.deb
dpkg --install pacote.deb

RedHat

rpm -i pacote.rpm
rpm -U pacote.rpm

Dependências

Os pacotes frequentemente requerem que outros pacotes sejam instalados para que os mesmos
trabalhem corretamente. A base de dados de pacotes do sistema mantém o rastro das dependências
destes pacotes. Ao instalar um pacote e o usuário obter algum erro de dependência, significa que o
mesmo tem que instalar outros pacotes antes. A mesma coisa pode acontecer com o usuário ao remover
pacotes.
Algumas vezes pode acontecer de um pacote requisitar outro, o qual, o usuário sabe que não é
mesmo essencial para o funcionamento do primeiro. Para escapar da checagem de dependências, veja os
comandos abaixo:

Administração de Sistemas Linux - I 2


TLA-I Autor: Eduardo de Oliveira Hernandes

Debian

dpkg -i --ignore-depends=<pacote_requerido> <arquivo .deb>

RedHat

rpm -i pacote -nodeps

Listar pacotes instalados no sistema

Veja os comandos abaixo:

Debian

dpkg -l pacote

Ao listar os pacotes, também será mostrado o “status” de cada pacote na coluna da esquerda,
acompanhado do nome do pacote, versão e descrição básica.

dpkg -l padrão-do-nome-do-pacote
dpkg --list padrão-do-nome-do-pacote

Os comandos acima, listam os pacotes que combinam com o padrão dado. Se nenhum padrão-do-
nome-do-pacote for dado, lista todos os pacotes em /var/lib/dpkg/available.

Para isto, é recomendado utilizar o comando:

dpkg -l | less

Caracteres curingas são permitidos em padrão-do-nome-do-pacote. Provavelmente o usuário


precisará colocar o padrão-do-nome-do-pacote entre aspas para impedir que o shell faça expansão do
nome do arquivo. Por exemplo:

dpkg -l “lib5*”

O comando acima listará todos os pacotes que comecem com “lib5”

Dica:
Para visualizar todos os pacotes instalados ou não, utilize o comando:

dpkg -l “*”

RedHat

rpm -q nome_pacote
rpm -qa
rpm -qa | grep padrão-nome-pacote

Administração de Sistemas Linux - I 3


TLA-I Autor: Eduardo de Oliveira Hernandes

Removendo pacotes do sistema

Para remover um pacote do sistema e manter os arquivos de configuração (talvez para uma futura
reinstalação) utilize o comando:

Debian

dpkg -r nome_pacote
dpkg –remove nome_pacote

Para realizar uma remoção completa de um pacote incluindo seus arquivos de configuração, utilize
o comando:

dpkg -P nome_pacote
dpkg –purge nome_pacote

Estes comandos podem ser utilizados após o comando “dpkg -r”. Caso o usuário utilize diretamente
o comando “dpkg -P ou dpkg –purge”, o dpkg removerá primeiro o pacote normalmente e após removido,
apagará todos os arquivos de configuração.

Dica:
O “dpkg -P ou dpkg --purge” somente remove os arquivos de configuração conhecidos pelo pacote.

RedHat

rpm -e nome_pacote

Obtendo informações sobre pacotes

Debian

dpkg -I pacote.deb
dpkg –info pacote.deb

Para obter informações sobre um pacote que não está instalado no sistema

dpkg -s nome_pacote
dpkg –status nome_pacote

Para obter informações sobre um pacote que está instalado no sistema

RedHat

rpm -qpi pacote.rpm


rpm -qi nome_pacote

Administração de Sistemas Linux - I 4


TLA-I Autor: Eduardo de Oliveira Hernandes

Listando o conteúdo de um pacote

A lista de arquivos que um pacote contém é muito útil para encontrar comandos e documentação
que um pacote fornece.
Para obter a listagem dos arquivos de um pacote que já está instalado no sistema, utilize os
seguintes comandos:

Debian

dpkg -L nome_pacote
dpkg –listfiles nome_pacote

RedHat

rpm -ql nome_pacote

Para obter a listagem dos arquivos de um pacote que não está instalado no sistema, utilize o
comando:

Debian

dpkg -c pacote.deb

RedHat

rpm -qpl pacote.rpm

Descobrindo a qual pacote um arquivo pertence

Para descobrir a qual pacote um arquivo pertence, utilize o comando:

Debian

dpkg -S nome_do_arquivo
dpkg –search nome_do_arquivo

RedHat

rpm -qf nome_do_arquivo

Dicas:

dpkg -L`dpkg -S \`which <command> \` | cut -f1 -d:


rpm -ql `rpm -qf \`which—skip-alias <command>\``

Listando Dependências Requisitadas e Necessárias

Administração de Sistemas Linux - I 5


TLA-I Autor: Eduardo de Oliveira Hernandes

Para listar bibliotecas e outros pacotes necessários por um pacote, faça:

Debian

dpkg -s pacote | grep -i depends

RedHat

rpm -qR pacote

Para listar por quais pacotes um pacote é requisitado, faça:

Debian

dpkg -P –no-act pacote

RedHat

rpm -q –whatrequires pacote

Referências:

http://rute.2038bug.com/node27.html.gz#SECTION002720000000000000000

AUTOR:
Eduardo de Oliveira Hernandes
Analista de Suporte I - EMPRO (Divisão de Apoio Técnico)
Kees Informática – Instrutor de Treinamentos Mandriva Linux
Mail: eduardodeoh@gmail.com

Administração de Sistemas Linux - I 6

Você também pode gostar