Baixe o app para aproveitar ainda mais
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�
Compartilhar