Buscar

doc 8 Gerenciamento de Pacotes(60 69)

Prévia do material em texto

Universidade do Grande Rio “Professor José de Souza Herdy”
Sistemas Operacionais Abertos
Gerenciamento de Pacotes em Sistema Linux
Introdução
O sistema de gerenciamento de pacotes em Linux varia muito de distribuição para distribuição. Podemos considerar um pacote, um conjunto de arquivos (programas binários, scripts, arquivos de configuração, arquivos de dados, documentação, etc), colocados dentro de um arquivo com uma extensão, que quando instalados, distribuem os arquivos para os caminhos padrões. Em geral, os pacotes são compactados e o processo de instalação, provê recursos para a desinstalação, configuração e gerenciamento do mesmo.
	
Um gerenciador de pacotes é um software existente em uma distribuição que tem como função ajudar na instalação, remoção e manutenção do pacote. Entre os gerenciadores de pacotes existentes podemos citar: DPKG (pacotes .deb, usados pelas distribuições derivadas do Debian), RPM (pacotes .rpm, usados nas distribuições derivadas do RED HAT) e TGZ (formato .tgz, usado pelo Slackware e derivados).
Serão tratados aqui, alguns exemplos de pacotes Debian e RPM (Red Hat Package Manager).
Gerenciamento de pacotes do Debian
Cada pacote do Debian contém arquivos de programas e de configuração, documentação e indicações de dependências em relação a outros pacotes. Os nomes dos pacotes possuem três elementos em comum:
Nome do pacote: É sempre curto e descritivo e quando várias palavras são usadas no nome, elas são separadas por hífens. Nomes típicos incluem kernel-source, telnet.
Número da Versão: Cada pacote tem uma versão. A maioria das versões dos pacotes tem o mesmo número que o software que elas contêm. O formato das versões varia de pacote para pacote, mas em geral são numéricos (número_maior.número_menor.nível_do_patch).
Por padrão, todos os pacotes Debian terminam com a extensão .deb.
 versão do
 software
PACOTE _ 1.0 – 2 . deb
 revisão
Fig.: Estrutura de um pacote no Debian
	
Gerenciando os Pacotes do Debian
A ferramenta original de gerenciamento de pacotes do Debian é o dpkg, que opera diretamente sobre os arquivos de pacotes .deb e pode ser usada para automatizar a instalação e a manutenção dos pacotes de software. A ferramenta alternativa apt-get opera usando nomes de pacotes, obtendo-os a partir de uma fonte pré-definida como: cd-rom, sites ftp, etc. Ambas as ferramentas funcionam a partir da linha de comando.
Comando dpkg
Tem como função gerenciar pacotes em sistemas Debian. O seu modo de operação é em texto através de comandos e para uma operação mais amigável é aconselhado utilizar o dselect para seleção e instalação dos pacotes ou o apt.
Sintaxe: dpkg [opções] ação
Para instalar um pacote no formato déb.
dpkg -i nome_do_pacote.deb ou
dpkg --install nome_do_pacote.deb 
Para remover um pacote no formato deb mantendo os arquivos de configuração relacionados ao pacote.
dpkg -r nome_do_pacote ou
dpkg --remove nome_do_pacote 
Para remover um pacote no formato déb, removendo também todos os arquivos de configuração relacionados ao pacote.
dpkg -P nome_do_pacote ou
dpkg --purge nome_do_pacote
 
Para exibir detalhes sobre um determinado pacote.
dpkg -p nome_do_pacote ou
dpkg --print-avail nome_do_pacote 
Para exibir todos os pacotes instalados no computador.
dpkg -l ou
dpkg –list
 
Para exibir todos os pacotes que contenham em seu nome a palavra “mozilla”.
dpkg -l | grep mozilla ou
dpkg --list | grep mozilla 
Para exibir todos os pacotes que comecem com a palavra “postgre”.
dpkg -l postgre* ou
dpkg --list postgre* 
Para exibir os arquivos que um determinado pacote possui.
dpkg -L nome_do_pacote ou
dpkg -listfiles nome_do_pacote 
Para exibir o nome do pacote que contem os arquivos todos os “kmail_*.sh”.
dpkg -S kmail_*.sh ou
dpkg --search kmail_*.sh 
Para exibir uma descrição mais detalhada do pacote “elvis”.
dpkg -s elvis 
Para exibir o conteúdo de um pacote DEB.
dpkg -c nome_do_pacote.deb 
Observações:
 
O dpkg usa como arquivo de log /var/log/dpkg.log.
Durante a instalação de um pacote, o sistema mantém controle sobre instalações, bloqueando-as com o arquivo /var/lib/dpkg/lock.
Comando apt-get
Faz parte do sistema de gerenciamento de Ferramenta de Pacotes Avançado (Advanced Packages Tool). Não trabalha diretamente com os arquivos “.deb” como o dpkg, mas usa, em vez disso, nomes de pacotes. O apt-get mantém um banco de dados de informações de pacotes que habilitam a ferramenta a fazer upgrade automaticamente de pacotes e das suas dependências, à medida que novas versões dos pacotes são disponibilizadas.
Comandos freqüentemente usados
update : obtém uma lista dos pacotes atualmente disponíveis, verificando todos os repositórios e baixando a lista com os pacotes disponíveis.
Ex.: apt-get update
---------------------------------------------------------------------------------------------------------
install: instala ou faz upgrade (caso o pacote já esteja instalado) de um ou mais pacotes, por nome.
Ex.:# apt-get install dselect
Lendo listas de pacotes... Pronto
Construindo árvore de dependências 
Lendo informações de estado... Pronto
Os novos pacotes a seguir serão instalados: dselect
0 pacotes atualizados, 1 pacotes novos instalados, 0 a serem removidos e 6 não
atualizados.
É preciso baixar 795kB de arquivos.
Depois desta operação, 2241kB adicionais de espaço em disco serão usados.
Obter:1 http://ftp.br.debian.org lenny/main dselect 1.14.25 [795kB]
Baixados 795kB em 30s (26,0kB/s) 
Selecionando pacote previamente não selecionado dselect.
(Lendo banco de dados ... 99106 arquivos e diretórios atualmente instalados).
Desempacotando dselect (de .../dselect_1.14.25_i386.deb) ...
Processando gatilhos para man-db ...
Configurando dselect (1.14.25) …
---------------------------------------------------------------------------------------------------------
remove: remove os pacotes especificados
Ex.: apt-get remove elvis
Lendo listas de pacotes... Pronto
Construindo árvore de dependências 
Lendo informações de estado... Pronto
Os pacotes a seguir serão REMOVIDOS: elvis
0 pacotes atualizados, 0 pacotes novos instalados, 1 a serem removidos e 6 não atualizados.
Depois desta operação, 696kB de espaço em disco serão liberados.
Você quer continuar [S/n]? s
(Lendo banco de dados ... 99303 arquivos e diretórios atualmente instalados).
Removendo elvis …
Observações: 
Neste exemplo, é necessário responder s quando pedido pelo prompt. O uso da opção -y de apt-get eliminaria essa interação.
O apt-get procura por pacotes em todos os endereços (repositórios) listados no arquivo "/etc/apt/sources.list". É um arquivo de texto, os endereços são colocados um por linha e as linhas iniciadas com "#" são comentários. O arquivo deverá conter uma ou mais linhas parecidas conforme abaixo. 
# 
# deb cdrom:[Debian GNU/Linux 5.0.2 _Lenny_ - Official i386 DVD Binary-1 20090628-15:08]/ lenny contrib main
deb http://ftp.br.debian.org/debian/ lenny main
deb-src http://ftp.br.debian.org/debian/ lenny main
deb http://security.debian.org/ lenny/updates main contrib
deb-src http://security.debian.org/ lenny/updates main contrib
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib
Comando dselect
O comando dselect oferece um menu interativo que permite ao administrador selecionar a partir de uma lista de pacotes disponíveis e marcá-los para subseqüente instalação além de fazer a verificação das dependências, que são pacotes requeridos para a instalação de um outro pacote. 
Exemplo: dselect
Interface do gerenciador de pacotes do Debian 'dselect'versão 1.14.25 (i386).
 * 0. [A]cesso Escolher o método de acesso a usar. 
 1. [U]pdate Atualizar lista de pacotes disponíveis, se possível.
 2. [S]eleciona Solicita quais pacotes você quer em seu sistema.
 3. [I]nstalar Instalar e atualizar pacotes desejados.
 4. [C]onfigura Configurar quaisquer pacotes que estejam desconfigurados.
 5. [R]emover Remover programas indesejados.
 6. [Q]Sair Sair do dselect.
Mova-se com ^P e ^N, teclas direcionais, letras iniciais, ou dígitos;
Pressione <enter> para confirmar a seleção. ^L redesenha a tela.
Copyright (C) 1994-1996 Ian Jackson.
Copyright (C) 2000,2001 Wichert Akkerman.
Este é um software livre; veja a GNU General Public License ("GNU Licença Pública Geral") versão 2 ou posterior para condições de cópia. Não há NENHUMA garantia.
Veja dselect --license para detalhes de copyright e licença.
Comando alien
O comando alien permite o uso de pacotes não Debian, tais como no formato RPM do Red Hat.
Observação: Caso o comando alien não exista, instale-o conforme abaixo.
# apt-get install alien
Em caso de insucesso conforme abaixo, o mesmo aconteceu porque existe uma instalação em curso;
E: Não foi possível obter trava /var/lib/dpkg/lock - open (11 Recurso temporariamente indisponível)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
/var/lib/dpkg
debian-rrv:/var/lib/dpkg# ls -l lock
-rw-r----- 1 root root 0 Ago 30 09:11 lock  bloqueia outras instalações em paralelo.
Usando o alien.
Alguns tipos de conversão de pacotes: 
-d, --to-deb: Converte para o formato deb; 
-r, --to-rpm: Converte para o formato rpm; 
-t, --to-tgz: Converte para o formato tgz; 
Alguns exemplos de uso do alien:
 alien --to-deb package.rpm
 Converte o pacote.rpm para um pacote.deb
 alien --to-rpm package.deb
 Converte o pacote.deb para um pacote.rpm
 alien -i package.rpm
 Converte o pacote.rpm para um pacote.deb (converte para um pacote.deb
 por padrão, sem a necessidade de especificar --to-deb), e instala o pacote gerado.
Gerenciador de Pacotes do Red Hat (RPM)
É um poderoso Gerenciador de Pacotes (Red Hat Package Manager), que pode ser usado para construir (build), instalar (install), pesquisar (query), verificar (verify), atualizar (update) e remover (erase) pacotes de software individualmente. Um pacote consiste de arquivos com outros arquivos (archive of file) e metadados (dados sobre outros dados) usados para instalá-los e removê-los. Dentro de cada pacote se encontram arquivos de programas, arquivos de configuração, documentação e dependências de outros pacotes. Os arquivos de pacotes são manipulados usando-se o comando rpm, que mantém um banco de dados de todos os pacotes instalados e dos seus arquivos. As informações dos novos pacotes são adicionadas a esse banco de dados, e este é consultado para verificação de dependências, arquivo por arquivo, quando são instalados, consultados e removidos. Em Red Hat e nos sistemas que usam rpm, este banco de dados se encontra em /var/lib/rpm.
Todo pacote RPM tem um rótulo de pacote (package label), com as seguintes informações:
O nome do software 
A versão do software (a versão tirada da fonte original do pacote) 
Edição do pacote (o número de vezes que o pacote foi refeito utilizando a mesma versão do software) 
A arquitetura sob a qual o pacote foi feito (i386, i686, athlon, ppc, etc.) 
Os arquivos RPM têm normalmente o seguinte formato:
nome-versão-release.arquitetura.rpm
Um exemplo: nano-0.98-2.i386.rpm
Observação: Se várias palavras forem usadas, elas deverão ser separadas por hífens e não por undercores (ex.: caching-nameserver).
Rodando o rpm
O comando rpm aciona a instalação, remoção, atualização, verificação e outros tipos de gerenciamento dos pacotes RPM. Existem várias opções, incluindo o padrão tradicional com uma só letra (-i) e o estilo com dois hífens e uma palavra completa (--install). Os principais modos do rpm e algumas das opções:
Sintaxe:
rpm –i [opções] (também rpm --install)
rpm –U [opções] (também rpm --upgrade)
rpm –e [opções] (também rpm --uninstall)
rpm –q [opções] (também rpm --query)
rpm –v [opções] (também rpm --verify)
Modo de instalação/atualização	
O modo de instalação (rpm –i) é usado para instalar novos pacotes. Uma variação do modo de instalação é o modo de upgrade (rpm –U), em que um pacote instalado é atualizado para uma versão mais recente. 
Opções de instalação e upgrade mais usadas.
--force: Permite a substituição de pacotes existentes e de arquivos de pacotes previamente instalados; para upgrades, permite a substituição de um novo pacote mais antigo. Literalmente, é o equivalente a se definir todas as opções (--replacepkgs, --replacefiles e –oldpackage. Esta opção deve ser usada com cuidado.
-h (--hash): Exibe uma string de sinais (#) durante a instalação, com indicador de progresso.
--nodeps: Permite instalar um pacote sem verificar as dependências. Deve ser evitado, pois torna o banco de dados e dependências inconsistente.
--test: Executa todas as etapas da instalação, mas não escreve realmente os arquivos. É útil para verificar se um pacote se instalará corretamente. As opções verbose e hash (-v e –h) não podem ser usadas com –test.
-v: Define o modo verbose. Ou seja, exibe os nomes dos pacotes, à medida que estes vão sendo instalados.
Exemplo de instalação
# rpm –i gcc-2.96-113.i386.rpm
error: failded dependencies:
binutils >= 2.11.93.0.2-6 is needed by gcc-2.96-113
cpp = 2.96-113 is needed by gcc-2.96-113
glib-devel is needed by gcc-2.96-113
Para corrigir o problema acima, as dependências deves primeiramente ser satisfeita.
# rpm –i binutils-2.11.93.0.2-11.i386.rpm cpp-2.96-113.i386.rpm \
glibc-devel-2.2.5-44.i386.rpm gcc-2.96-113.i386.rpm
Exemplo de atualização
# rpm –U gcc-2.96-113.i386.rpm
Faz a atualização (upgrade) de um pacote para uma nova versão e se o pacote não existir o mesmo será instalado, neste caso a opção –U se comporta como –i.
Exemplo de desinstalação
# rpm –e glib-devel
error: removing these packages would break dependencies: 
 glib-devel is needed by gcc-2.96-113
Neste caso, se aplicam as mesmas restrições de dependências. Poderia usar –nodeps, mas este deve ser evitado uma vez que torna inconsistente o banco de dados de dependências. Uma boa opção seria –test, que verificará se um pacote pode ser desinstalado corretamente sem quebrar as dependências, ante de fazer a desinstalação.
Exemplo de consulta
Pacotes instalados e os arquivos de pacotes podem ser consultados, usando o comando rpm –q. Existem opções do modo de consulta para a seleção de pacotes e de informações.
-a ou –all : exibe uma lista de todos os pacotes instalados no sistema.
# rpm –qa (vários pacotes serão listados)
-f ou –file nome_do_arquivo : exibe o pacote que contém um determinado arquivo.
# rpm –qf /etc/aliases
sendmail-8.11.6-15
# rpm -qf /bin/tar
tar-1.15.1-23.13
-p nome_do_pacote : consulta o arquivo de um pacote. É mais útil com –i.
# rpm –qpi openssh-3.4p1-2.i386.rpm | grep Version
Version : 3.4p1	Vendor: Red Hat, inc.
-c : lista apenas arquivos de configuração
# rpm –qc at
/etc/at.deny
/etc/rc.d/init.d/atd
 
�PAGE \* MERGEFORMAT�60�

Continue navegando