Capítulo 9. Gerenciamento de Pacotes

Índice
Entendendo os Pacotes
Pacotes e Dependências
O Banco de Dados RPM
O Gerenciador de Pacotes RPM
Gerenciando Pacotes com o Linuxconf
Usando o APT

Se você já conhece um pouco do Conectiva Linux, é provável que já tenha ouvido falar várias vezes em pacotes. Talvez até já tenha instalado ou removido alguns.

O Conectiva Linux gerencia os arquivos instalados através de pacotes. Para isso ele utiliza o RPM[1].

Entendendo os Pacotes

Na maioria dos casos, um aplicativo não é formado apenas por um único arquivo executável, mas sim por um grande número de arquivos, como arquivos de tradução (potfiles), arquivos auxiliares[2], arquivos de documentação e arquivos de configuração. Assim, é bastante complexa a tarefa de instalação de um aplicativo manualmente; ainda mais difícil é a manutenção de seus arquivos. Muitas vezes, uma nova versão do aplicativo torna alguns de seus arquivos obsoletos e então, o administrador do sistema tem de apagar o arquivo antigo para evitar um acúmulo de arquivos inúteis.

Um pacote é um arquivo que, além de conter os arquivos necessários para a instalação de um determinado aplicativo, contém também as informações necessárias para que o gerenciador de pacotes possa instalar, manter e remover programas.

Um arquivo típico de pacote se parece com o seguinte:

-rw-r--r--  1 root root 8960479 Mar 10 14:42 emacs-21.2-11cl.i386.rpm

Estes nomes de arquivos seguem um padrão. Os nomes dos arquivos de pacotes RPM contém informações sobre a versão e a arquitetura às quais se destinam. No caso acima, o arquivo diz que se trata do pacote do "Emacs", versão 21.2, release 11cl e que ele foi criado para plataforma Intel 386. Todos os arquivos de pacotes RPM têm o formado pacote-versao-release.arquitetura.rpm, para permitir reconhecer-se visualmente o arquivo. Você poderá encontrar também pacotes com nomes no formato pacote-versao.src.rpm. Esses pacotes não contém os binários de um aplicativo para serem instalados, mas sim os seus arquivos fontes e são (na grande maioria dos casos) independentes de arquitetura. Será mostrado mais adiante como utilizar esse tipo de pacote.

Apesar de várias distribuições de Linux utilizarem pacotes do tipo RPM, isso não significa que eles sejam iguais e que um pacote feito originalmente para uma distribuição irá funcionar perfeitamente em outra. Além dos arquivos que compõem um determinado aplicativo, o pacote RPM contém também informações de como instalar, em que local copiar os arquivos, como configurar, etc. Essas informações adicionais podem ser diferentes de uma distribuição para outra, então, para evitar problemas, o administrador deve procurar sempre utilizar pacotes feitos especificamente para a sua distribuição.

Pacotes e Dependências

Uma das características de um sistema Linux é a modularização de seus componentes e o uso intensivo de bibliotecas compartilhadas, e isso se aplica também aos pacotes de aplicativos. É bastante comum que um programador ao escrever um aplicativo utilize bibliotecas de funções já existentes, mas não as inclua no pacote do seu aplicativo uma vez que, se todos fizessem isso, seria um tremendo desperdício de espaço e de banda de rede no caso de se disponibilizar esse pacote na Internet.

Assim, ao se instalar, um determinado pacote pode ser necessário primeiro instalar um outro pacote que contenha os "pré-requisitos" para a sua instalação. Pode-se dizer então que o primeiro pacote depende, ou tem como dependência o segundo pacote. Os pacotes RPM contém a informação das dependências de cada aplicativo, e essa informação é utilizada pelo gerenciador de pacotes ao se instalar um novo pacote no sistema, ou remover um pacote instalado. Caso a instalação de um novo pacote requeira um outro, ou se tente remover um pacote instalado do qual outro depende, o gerenciador de pacotes alertará o administrador sobre isso.

Outra característica do uso de pacotes é que podem haver aplicativos que se encontram "distribuídos" por vários pacotes. O XFree86 é um exemplo disto. As bibliotecas se encontram em um pacote, os binários em outro, e os módulos específicos a cada grupo de placas de vídeo em outros. A organização de um aplicativo em vários pacotes permite que o administrador instale somente aqueles pacotes que são realmente necessários, evitando ter que instalar ou fazer o download de componentes que não serão utilizados.

O Banco de Dados RPM

Quando o administrador instala um pacote RPM, o gerenciador de pacotes não se limita a instalar os arquivos, ele também mantém um banco de dados que armazena informações sobre todos os arquivos instalados. O banco de dados registra onde estão os arquivos e quais versões estão instaladas, assim, quando o usuário precisar instalar um pacote que necessite de um arquivo específico, ele saberá se esse pacote já existe ou precisa ser instalado. Ao remover um pacote, o gerenciador consultará o banco de dados, e assim obterá uma lista de quais arquivos que podem ser removidos.

Em algumas situações especiais, o banco de dados pode ficar corrompido. Para isso o gerenciador de pacotes conta com funções especiais para recuperar a integridade deste banco, como será mostrado mais adiante.

O Gerenciador de Pacotes RPM

O rpm é um poderoso gerenciador de pacotes que permite ao administrador instalar, remover e obter informações sobre pacotes. Com o rpm é possível também reparar um banco de dados danificado, construir pacotes a partir de arquivos fonte, verificar a assinatura digital de pacotes RPM, simular uma instalação, entre outras coisas. O RPM oferece uma grande gama de funcionalidades, no entanto, será mostrado aqui apenas as mais utilizadas, devendo o administrador consultar a documentação do aplicativo para mais detalhes.

Instalando Pacotes com o RPM

Instalar pacotes utilizando utilizando o comando rpm é bastante simples. Abra um terminal e, estando no mesmo diretório onde está o pacote que se deseja instalar, digite:

# rpm -i pacote-versao.i386.rpm

A opção -i informa ao comando que você deseja instalar um pacote. É recomendado que o administrador utilize também as opções v e h ao instalar um pacote, ou seja, rpm -ivh, para que o comando mostre mais informações sobre o andamento do processo.

Caso o pacote a ser instalado necessite que outro pacote tenha sido previamente instalado, o rpm apresentará uma mensagem de erro mostrando quais dependências não foram atendidas para a instalação deste pacote. Será necessário então instalar os pacotes indicados para poder então instalar com sucesso o pacote que originalmente se queria instalar. Será mostrado mais adiante um modo de fazer isso automaticamente.

Caso se deseje atualizar um pacote já instalado no sistema por uma versão mais nova em vez do -i utilize a opção -U, assim o pacote mais antigo será removido, o pacote novo será instalado e as configurações serão mantidas.

Removendo Pacotes com o RPM

Para remover um pacote com o rpm abra um terminal e digite:

# rpm -e  nome_do_pacote

Ao remover um pacote não é necessário utilizar o nome do pacote completo, isto é, não utilize nome-versão-release.rpm, mas sim apenas o nome do pacote. Utilize a versão apenas se existirem duas versões do pacote instalado e se desejar remover uma delas.

Caso algum pacote instalado no sistema dependa do pacote que se deseja remover, o rpm não fará a desinstalação e emitirá uma mensagem de erro informando que dependências seriam quebradas com isto. Caso seja realmente necessário, o administrador poderá utilizar a opção --nodeps para evitar que o rpm faça essa verificação, mas isso não é recomendado, pois poderá danificar o sistema.

Obtendo Mais Informações Sobre os Pacotes

O rpm pode ser utilizado para obter mais informações sobre os pacotes, tanto os já instalados quanto os não instalados. A forma básica para o modo de consulta é rpm -q[opção] pacote. Será mostrado a seguir, algumas das consultas mais comuns utilizando-se o rpm:

Obtendo informações de um pacote:

# rpm -qi bash
Name : bash Relocations: (not relocateable)
Version : 2.05b Vendor: Conectiva
Release : 23597cl Build Date: Seg 03 Fev 2003 11:02:57 BRST
Install date: Qua 26 Fev 2003 16:10:06 BRT
Build Host: mapi8.distro.conectiva
Group : Base Source RPM: bash-2.05b-23597cl.src.rpm
Size : 863709 License: GPL
Packager : Conectiva S.A. - security at conectiva.com.br
URL : http://www.gnu.org/software/bash
Summary : GNU Bourne Again Shell (bash)
Description :
Bash é um interpretador de comandos compatível com sh, que executa
comandos lidos da entrada padrão ou de um arquivo. Bash também
incorpora características úteis das shells Korn e C (ksh e csh).
Bash tem sido desenvolvido para ser uma implementação compatível
com a especificação IEEE Posix para shells e ferramentas (IEEE
Working Group 1003.2).

Para obter informações de um pacote que não está instalado, utilize a opção -p, seguida do nome do arquivo do pacote.

O administrador poderá utilizar o rpm para obter informações sobre as dependências de um pacote. Poderá descobrir que outros pacotes dependem do pacote que se quer consultar, bem como descobrir de que pacotes o pacote consultado necessita. Os dois exemplos abaixo mostram como descobrir essas duas informações, respectivamente:

# rpm -q --whatrequires glib
glib-devel-1.2.10-22252cl
gtk+-1.2.10-22253cl
bonobo-1.0.22-22774cl
gconf-1.0.9-24661cl
xmms-1.2.7-19809cl

# rpm -q -requires glib
/sbin/ldconfig
/sbin/ldconfig
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
libc.so.6
libdl.so.2
libpthread.so.0
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1.2)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.3)
libdl.so.2(GLIBC_2.0)
libdl.so.2(GLIBC_2.1)
libpthread.so.0(GLIBC_2.0)

Para descobrir a qual pacote pertence um arquivo do sistema utilize a opção -qf arquivo, como no exemplo abaixo:

# rpm -qf /bin/bash
bash-2.05b-23597cl

E como um último exemplo, veja como listar todos os pacotes instalados no sistema:

# rpm -qa

Recuperando o Banco de Dados RPM

Se por um motivo ou outro o banco de dados de pacotes corromper-se, o rpm pode recuperá-lo. Caso seja necessário fazer isso, basta utilizar o comando abaixo:

# rpm --rebuildb

Utilizando Pacotes de Fontes

Usualmente, além dos pacotes que contém os binários dos aplicativos, encontramos também pacotes contendo os arquivos fontes[3] dos aplicativos[4]. O pacote fonte, ao ser instalado, copia seus arquivos para a o diretório /usr/src/rpm/SOURCES, permitindo assim que os usuários do sistema possam estudar como determinado programa é feito e até mesmo alterá-lo de acordo com sua vontade.

É possível utilizar um pacote fonte para construir um pacote RPM contendo os arquivos binários adequados à arquitetura da máquina em que ele será utilizado. Se você possui o arquivo fonte e deseja construir um pacote contendo os binários para que o programa possa efetivamente ser instalado, utilize o comando rpm com a opção --rebuild pacote.src.rpm. O pacote será construído e colocado no diretório /usr/src/rpm/RPMS/arquitetura, onde arquitetura é o processador para o qual o pacote foi compilado, normalmente i386. Proceda então a instalação como faria normalmente.

Gerenciando Pacotes com o Linuxconf

Como alternativa ao uso do rpm no modo linha de comando, o administrador poderá utilizar o Linuxconf para instalar, remover, atualizar e pesquisar informações sobre pacotes. O Linuxconf não possui todas as funcionalidades do rpm em modo texto, no entanto é de mais fácil utilização.

Para poder utilizar o Linuxconf para gerenciar pacotes RPM, é necessário instalar o módulo apropriado. Abra o Linuxconf, clique na aba Controle e verifique se a opção Gerenciamento de pacotes RPM está disponível. Caso não esteja, instale o pacote linuxconf-managerpm-*.rpm.

O Linuxconf utiliza o diretório /mnt/cdrom/conectiva/RPMS como padrão (esse é o diretório padrão do CD-ROM). Caso os pacotes RPM que você deseje instalar/consultar localizem-se em outros diretórios, acesse a opção Controle -> Gerenciamento de pacotes RPM -> Preferências e insira os diretórios onde localizam-se os pacotes RPM do seu sistema.

Figura 9-1. Configurando a Localização dos Diretórios com Pacotes RPM

Instalando e Atualizando Pacotes com o Linuxconf

Figura 9-2. Instalando Um Pacote com o Linuxconf

Para instalar ou atualizar um pacote utilizando o Linuxconf, acesse a opção Controle -> Gerenciamento de pacotes RPM -> Instalar/Atualizar um pacote . Preencha o campo Caminho do arquivo RPM com o diretório e o nome do arquivo de pacote RPM que deseja instalar e clique no botão Aceitar. Os diretórios configurados na opção Preferências estarão disponíveis ao se clicar no botão drop-down do campo.

Figura 9-3. Confirmando a Instalação de Um Pacote com o Linuxconf

O Linuxconf verificará se o pacote já está instalado, e o notificará caso já esteja, ou se a versão do pacote instalado for maior ou igual à versão que se deseja instalar. Se o pacote a ser instalado é mais atual do que o já presente no sistema, ou o pacote não exista no sistema, o Linuxconf apresentará uma tela semelhante à Figura 9-3.

Clique no botão Aceitar para efetuar a instalação. Concluída a instalação o Linuxconf apresentará uma janela contendo as mensagens geradas pelo processo de instalação.

Caso o administrador deseje instalar ou atualizar múltiplos pacotes de uma só vez deve utilizar a opção Controle -> Gerenciamento de pacotes RPM -> Instalar/Atualizar vários pacotes. Ao selecionar esta opção será apresentada uma tela como esta:

Figura 9-4. Instalando Vários Pacotes

Entre com o diretório onde se encontram os pacotes RPM e a máscara de arquivos que o Linuxconf deve utilizar para procurar os arquivos. Se você deseja apenas atualizar os arquivos já existentes, deixe a opção Mostrar pacotes não instalados desmarcada, caso contrário selecione-a para que o Linuxconf mostre os pacotes ainda não instalados, permitindo que você os selecione para instalação.

Ao se clicar no botão Aceitar, o Linuxconf efetuará uma busca no sistema e apresentará uma janela contendo todos os pacotes passíveis de atualização e instalação, mostrando a versão atual e a versão para a qual serão atualizados, ou indicará ao lado do pacote que ele não está instalado e indicará também a versão a ser instalada.

Selecione os pacotes a serem atualizados ou instalados e clique em Aceitar.

Consultando Pacotes com o Linuxconf

O Linuxconf é capaz de consultar e mostrar informações referentes a pacotes rpm, tanto os instalados quanto os não instalados. Para consultar pacotes já instalados no sistema utilize a opção Controle -> Gerenciamento de pacotes RPM -> Consultar os pacotes instalados e informe uma máscara de procura, ou deixe em branco para listar todos os arquivos. Clique em Aceitar para efetuar a consulta. Após consultar o sistema o Linuxconf lhe apresentará grupos cujos pacotes membros correspondem à sua máscara de procura.

Figura 9-5. Lista de Grupos de Pacotes

Clicando sobre um dos grupos, obtém-se uma lista contendo os pacotes membros deste grupo.

Figura 9-6. Lista de Pacotes

Finalmente, para se obter informações sobre um pacote específico, basta clicar no nome do pacote. Para obter a lista de arquivos que compõem o pacote e o caminho onde serão colocados ao se instalar o pacote, clique no botão Listar arquivos.

Figura 9-7. Informações do Pacote

O procedimento para consulta de pacotes não instalados é bastante parecido com o processo acima. Utilize a opção Controle -> Gerenciamento de pacotes RPM -> Consultar os pacotes não instalados para iniciar a consulta. Digite o diretório onde se localizam os pacotes a serem instalados no campo Diretórios contendo os rpms, e a máscara de procura de pacotes no campo logo abaixo, ou mantenha o padrão para pesquisar todos os pacotes.

Figura 9-8. Consultando Pacotes Não Instalados

A apresentação dos resultados é idêntica à da consulta a pacotes já instalados.

O Linuxconf provê também uma maneira de se pesquisar palavras chaves em pacotes não instalados. É possível fazer buscas de palavras chaves nas descrições, na lista de arquivos, na lista de dependências e na lista de funcionalidades que os pacotes provêem. Acessando a opção Controle -> Gerenciamento de pacotes RPM -> Pesquisar um pacote você tem acesso a um poderoso modo de pesquisa.

Figura 9-9. Pesquisando Palavras Chaves nos Pacotes RPM

O modo de pesquisa é uma extensão do modo Consultar pacotes não instalados e, como este, pede que você entre com o diretório onde se encontram os arquivos de pacotes RPM e uma máscara de procura de arquivos. Além disto você deve entrar com uma ou mais palavras chaves e selecionar as opções de busca:

Deve conter todas as palavras

Selecione esta opção se você usou duas ou mais palavras chaves e deseja que todas elas estejam presentes nos pacotes encontrados. Seu efeito é o do "E" lógico.

Pesquise em Sumário

Selecione esta opção para que o Linuxconf procure pelas palavras chaves no sumário do pacotes RPMS.

Pesquise em Descrição

Selecione esta opção para fazer a procura das palavras chaves na descrição detalhada do pacote RPM.

Pesquise na listagem de arquivos

Utilize esta opção para fazer a procura das palavras chaves na lista de arquivos contidos nos pacotes. Você pode utilizar esta opção para descobrir de qual pacote um determinado arquivo do sistema faz parte.

Pesquise em Requer

Selecione esta opção para buscar nas dependências dos pacotes as palavras chaves.

Pesquise em Provê

Utilize esta opção para procurar as palavras chaves na lista de funcionalidades que os pacotes provêem.

Além das formas de consulta apresentadas acima, o Linuxconf oferece através da opção Controle -> Gerenciamento de pacotes RPM -> Mostrar os pacotes adicionais uma listagem de todos os pacotes instalados, sem separação por grupos. Através desta lista, o administrador pode obter mais informações sobre um pacote e efetuar a remoção de pacotes individualmente.

Figura 9-10. Mostrar os Pacotes Adicionais

Usando o APT

O APT, Ferramenta Avançada de Pacotes,[5] é um conjunto de ferramentas utilizadas para gerenciar pacotes de forma automatizada, capaz de resolver automaticamente dependências de pacotes, utilizar e criar repositórios de pacotes. O APT pode ser utilizado para instalar, remover ou atualizar um aplicativo, verificar conflitos de versões de aplicativos instalados, e até mesmo fazer a atualização automática de todo o seu sistema.

Configurando o APT

O APT utiliza repositórios de arquivos RPM ao instalar ou atualizar pacotes no sistema. Esses repositórios podem estar em sites na Internet, no CD-ROM da distribuição, ou podem ser construídos pelo administrador. A configuração da localização desses repositórios é feita através do arquivo /etc/apt/sources.list.

Cada linha do arquivo sources.list contém as informações relativas a um repositório de arquivos RPM e o seu formato é:

TIPO [CHAVE] URI PARÂMETROS

O campo TIPO pode assumir os valores rpm ou rpm-src, para repositórios que contém pacotes binários ou repositórios de arquivos fonte. O campo [CHAVE] contém o nome da assinatura digital do distribuidor dos pacotes, garantido assim a autenticidade dos pacotes. Esse campo pode ser omitido. O campo URI contém a localização do repositório propriamente dito, e finalmente o campo PARÂMETROS contém informações adicionais sobre a localização dos pacotes dentro do repositório. Será mostrado detalhadamente cada um desses campos, mais adiante.

Este é um exemplo do arquivo sources.list[6]:

# Package repository URLs 
#
#
# Official repositories.
rpm ftp://atualizacoes.conectiva.com.br 9/conectiva updates

#
# Mirror repositories.
# rpm ftp://ftp.nl.linux.org/pub/linux/conectiva 9/conectiva main extra kde

Estes são somente exemplos; é importante verificar se os caminhos estão corretos antes de iniciar o processo.

O Campo TIPO

A variável TIPO indica qual tipo de pacote será utilizado. Pode ser rpm, rpm-src ou deb, embora esse último não deva ser utilizado com o seu Conectiva Linux. Como há a possibilidade de ter mais de uma linha apontando para os repositórios do APT, você pode querer colocar o repositório mais rápido na primeira linha.

Nota: O tipo rpm-src é utilizado para indicar repositórios com fontes de pacotes (arquivos SRPM). Dessa maneira, utilizando o comando apt-get source algum_pacote, você pode fazer o download dos arquivos fonte do pacote algum_pacote e compilá-lo.

O Campo [CHAVE]

O arquivos rpm podem ser assinados digitalmente com uma chave criptográfica, e o APT pode utilizar esse recurso para garantir que os pacotes utilizados sejam "autênticos", isto é, que eles sejam assinados pelo autor ou pela empresa responsável pela distribuição deles. Para os administradores, o uso de pacotes assinados pela distribuição garante que eles não contém código malicioso criado por uma pessoa mal-intencionada.

Embora recomendado, esse campo não é obrigatório e pode ser omitido. Veja como adicionar assinaturas digitais na seção Usando as assinaturas GPG.

O Campo URI

As variáveis uri indicam a localização do servidor de repositório do APT.

A distribuição pode especificar um caminho exato. Se esta opção for usada, você precisará omitir a variável componente e terminar a opção com uma barra.

O APT classificará o uri para o uso interno, mas é muito importante que estas linhas estejam na ordem do servidor mais rápido para o mais lento.

Os parâmetros após a uri informam os diretórios que contém os arquivos rpm ou srpm dentro do repositório. Veja mais sobre esses campos na seção Criando Repositórios RPM.

Você pode usar diversos fontes para um uri. Veja alguns exemplos:

ftp

Este método especifica uma conexão FTP para o servidor de repositório.

ftp://ftp.conectiva.com.br/repositorio
http

Este método especifica que você fará uma conexão HTTP ao servidor de repositório.

http://www.conectiva.com.br/repositorio

Usando o apt-cdrom

O apt-cdrom é um comando simples utilizado para adicionar o CD-ROM ao arquivo sources.list do APT, fazendo com que o apt-get procure no seu CD-ROM por pacotes. Sua sintaxe é uma variação desta linha de comando:

# apt-cdrom add

O apt-cdrom usa informação do arquivo /etc/fstab, caso você não especifique onde está o drive de CD-ROM. Após a execução do comando apt-cdrom add uma linha semelhante à do exemplo a seguir será incluída no seu arquivo sources.list.

rpm cdrom:[Conectiva Linux 9 Pre-1 - CD1]/ conectiva 001

Uma possível saída do comando apt-cdrom add seria a seguinte:

# apt-cdrom add
Usando ponto de montagem do CD-ROM/mnt/cdrom/
Desmontando o CD-ROM
Insira um disquete no drive e pressione Enter
Montando o CD-ROM
Identificando..[c19afb6208760e4f2542607f75a70893-2]
Procurando por arquivos de índice no disco.. Encontrei 1
índices de pacotes e 0 índices de fonte.
Rótulo encontrado 'Conectiva Linux 9 Pre-1 - CD1'
Este disco é chamado:
'Conectiva Linux 9 Pre-1 - CD1'
Reading Indexes... Done
Gravando nova lista-fonte
As entradas de lista-fonte para este disco são:
rpm cdrom:[Conectiva Linux 9 Pre-1 - CD1]/ conectiva 001
Repetir este processo para o restante dos CDs em seu conjunto.

Utilizando o apt-get

O apt-get é uma das ferramentas do APT e provavelmente é o comando que será utilizado com mais freqüência. Os comandos do apt-get são muito fáceis e intuitivos. Eles seguem uma estrutura muito simples:

# apt-get opções comando

# apt-get opções install pacote [pacote ...]

A linha de comando pode ser uma variação dos tipos básicos a seguir:

apt-get update

Atualiza o banco de dados local do apt-get com os arquivos pkglist[7] do servidor.

apt-get check

Verifica a integridade do seu sistema. Execute este comando quando tiver dúvidas quanto à integridade dos pacotes do seu sistema. É recomendável executá-lo antes de executar uma atualização de distribuição.

apt-get install algum-pacote

Instala algum pacote novo, solucionando e carregando automaticamente os pacotes dos quais o aplicativo a ser instalado depende. Caso o pacote algum-pacote já esteja instalado, o apt-get tentará atualizá-lo.

apt-get source algum-pacote

Faz o download dos fontes de um pacote (SRPM). Note que é necessário que haja uma linha com o TIPO rpm-src no arquivo sources.list para que este comando seja executado.

apt-get upgrade

Procura por pacotes desatualizados no sistema e os atualiza automaticamente. Atualizará todos os pacotes antigos no sistema. Para atualizar um pacote e suas dependências utilize o comando:

# apt-get install pacote_a_ser_atualizado


apt-get dist-upgrade

Semelhante ao apt-get upgrade, mas instala todos os pacotes básicos e tenta atualizar tudo, instalando novos pacotes caso seja necessário. É uma maneira mais fácil de fazer uma atualização de sua distribuição[8].

apt-get remove algum-pacote

Remove o pacote algum-pacote e todos os demais pacotes que dele dependam.

apt-get clean

Remove os arquivos encontrados no diretório cache, localizado em: /var/cache/apt/archives/, liberando um pouco de espaço no seu disco de sistema. É uma maneira automática de apagar os arquivos que já foram instalados e que não são mais necessários ao sistema.

O diretório archives

Quando você solicita ao APT para instalar algum pacote ou efetuar uma atualização (upgrade ou dist-upgrade), ele fará download dos pacotes necessários para /var/cache/apt/archives/partial/ e, após verificar seus hashes e tamanhos de MD5, moverá estes pacotes para /var/cache/apt/archives/.

Você pode assumir que todo arquivo no diretório archives/ foi verificado. Utilize o comando apt-get clean para excluir os arquivos no diretório archives/ e archives/partial/.

Usando as assinaturas GPG

O APT tem suporte ao gpg[9]. Dessa forma, você pode querer usar isto para certificar-se de que está obtendo os pacotes genuínos do seu fornecedor.

O APT não tem suporte ao PGP[10].

A sintaxe do arquivo sources.list tem de ser alterada como desta maneira para que possamos utilizar o gpg:

rpm [gpg-id] uri distribution component [component ...]

Após efetuar esta mudança, isto é, introduzir o campo [gpg-id], você terá de certificar-se de que tem a chave pública do seu fornecedor em seu chaveiro gpg.

A gpg-id[11] é a usada pelo fornecedor para assinar seus pacotes, garantido assim a genuinidade do fornecedor. Na realidade, é um indicador para a última parte da assinatura digital do fornecedor disponível no arquivo vendors.list.

Exemplo 9-1. vendors.list

# Lista dos fornecedores de pacotes confiáveis
#
# Este arquivo contém a lista de fornecedores de pacote (empresas
# ou pessoas) cujos pacotes você pode confiar.
#

simple-key "cncbr"
{
Fingerprint "30EAE85C3D91C29880B4F0B3E368DDD099807190";
Name "Conectiva S.A. <security@conectiva.com.br>";
}

Exemplo 9-2. Importando uma chave gpg

# gpg --import arquivo_com_a_chave

No Exemplo 9-2, em arquivo_com_a_chave[12], temos um arquivo com a chave pública gpg do seu fornecedor.

Este comando importará a chave de seu fornecedor no chaveiro do usuário root (já que apenas o root pode instalar, remover ou manipular pacotes, não teria sentido importar esta chave no chaveiro de outro usuário).

Caso você queira utilizar o apt sem a assinatura gpg, basta que você retire o [gpg-id] da linha do endereço do repositório que consta no arquivo sources.list. O padrão para o site da Conectiva é utilizar a assinatura gpg.

Apenas lembre-se que esta versão do apt-get está em constante desenvolvimento. Caso você encontre algum erro ao utilizá-lo, entre em contato com a Conectiva; mais informações no site da distribuição .

Criando Repositórios RPM

Além de utilizar os repositórios públicos disponíveis na Internet, um administrador poderá montar o seu próprio repositório, o que pode ser bastante útil para se atender uma rede local evitando que cada máquina a ser atualizada precise buscar os seus pacotes na Internet, consumindo banda de rede desnecessariamente.

Antes de prosseguir com a criação de um repositório, o administrador deve se certificar de que a máquina onde será armazenado o repositório possui um servidor web, um servidor de FTP ou algum tipo de acesso funcionando (por exemplo, NFS).

Estrutura de Diretórios de um Repositório RPM

Um repositório RPM possui uma estrutura padronizada de diretórios, definida assim:

diretório principal

Este diretório conterá os arquivos de licença, os diretórios com os arquivos fontes, arquivos binários, etc. É equivalente ao diretório raiz do CD da sua distribuição Linux. Contém os seguintes sub-diretórios:

diretório da distribuição

Este diretório conterá os diretórios com os arquivos rpm.

diretórios RPMS

Esses diretórios conterão os arquivos de pacotes. Eles devem ter o nome RPMS seguido de ponto e um nome que os identifique, como por exemplo, RPMS.beta ou RPMS.001. Poderão existir vários diretórios como estes ou apenas um, ficando a cargo do administrador essa decisão. O nome após o ponto também pode ser decidido pelo administrador.

diretório base

O diretório base contém arquivos especiais do tipo pkglist que possuem a lista e a descrição dos pacotes dos diretórios RPMS. Atenção: o nome deste diretório deve ser base.

Seguindo essa estrutura, poderia ter como exemplo um repositório cujo diretório principal fosse /srv/www/default/html/repositorio. A árvore de diretórios se pareceria assim:

/srv/www/default/html/repositorios
/srv/www/default/html/repositorios/9
/srv/www/default/html/repositorios/9/conectiva
/srv/www/default/html/repositorios/9/conectiva/RPMS.new
/srv/www/default/html/repositorios/9/conectiva/base

A configuração do arquivo /etc/apt/sources.list deverá conter a seguinte linha para poder utilizar esse repositório:

rpm http://www.minhaorganizacao.com.br/repositorios 9/conectiva new

Gerando os Arquivos pkglist

Para cada diretório RPMS é necessário gerar um arquivo que contenha a lista e a descrição dos pacotes ali contidos. Esses arquivos recebem o nome de pkglist.xxx, onde o xxx é o diretório descrito pelo arquivo. Os arquivos pkglist são compactados no formato bzip2 e são gerados automaticamente pelo comando genbasedir, que possui o seguinte formato:

# genbasedir [-s | --sign] [--topdir=dir] dist comp [comp ...]

onde:

-s ou --sign

Use este parâmetro para assinar digitalmente o seu arquivo pkglist. Utilizando esta opção o comando solicitará a sua senha gpg e irá criar um arquivo chamado hashfile.gpg no mesmo diretório.

--topdir

Este parâmetro indica onde se localiza o diretório principal.

dist

É o nome de sua distribuição Linux. Usualmente se utiliza o nome da distribuição e opcionalmente um identificador de versão.

comp

Este ou estes são os diretórios onde os arquivos RPM se localizam. Utilize apenas o sufixo após o ponto dos diretórios RPMS.

Para gerar os arquivos pkglist da árvore de diretórios exemplificada anteriormente, deve-se se utilizar o seguinte comando, estando no diretório base:

# genbasedir --topdir=/srv/www/default/html/repositorios 9/conectiva new

Synaptic - Interface Gráfica para o APT

O Synaptic é uma interface gráfica para o conjunto de ferramentas de atualização APT. Ele permite que você atualize seu Conectiva Linux de maneira rápida, prática e segura. Todos os pacotes são baixados diretamente do ftp da conectiva (podendo ser configurado o local) com possibilidade de certificação de autenticidade do fornecedor. Há ainda a possibilidade de instalar os pacotes presentes no CD do Conectiva Linux.

Interface do Synaptic

Conheceremos a aparência visual do Synaptic, o que cada botão faz e como podemos utilizá-los. Para executar o Synaptic, estando como superusuário, digite no terminal X (konsole, wterm, xterm, etc.):

# synaptic
      

Aguarde enquanto o Synaptic inicia. Surgirá então uma janela como a apresentada na Figura 9-11.

Figura 9-11. Janela Principal do Synaptic

Agora teremos uma breve descrição da interface do Synaptic começando pelos botões localizados no topo da janela.

Botões Principais do Synaptic

Na Figura 9-12 temos os botões principais do Synaptic. Eles serão explicados a seguir.

Figura 9-12. Botões Principais do Synaptic

O Botão Atualizar Lista

Esse botão faz a atualização dos arquivos de índice de pacotes do Apt contendo a lista de pacotes disponíveis no servidor. É necessário estar conectado à Internet para poder fazer o download dos arquivos de índice. Recomendamos utilizar esse botão sempre que você for fazer uma atualização/modificação de qualquer pacote no seu sistema. Dessa forma, sua máquina estará sempre com a versão mais nova dos arquivos de índice, refletindo assim a situação no servidor que abriga o repositório do Apt. Este botão é equivalente ao comando apt-get update.

Ao pressionar o botão Atualizar Lista, surgirá uma janela mostrando a evolução do download dos arquivos de índice[13]. Ao final do download, a janela fechará e o Synaptic irá recalcular as dependências e mostrar a nova lista de pacotes atualizada.

O Botão Atualizar Tudo

Este botão seleciona automaticamente todos os pacotes existentes no servidor que tenham versões mais novas que os pacotes que estão instalados no seu sistema. É a maneira mais simples de estar com o seu sistema sempre atualizado com a última versão dos aplicativos instalados. Para executar a instalação dos pacotes, veja o botão Proceder.

O Botão Atualizar Distribuição

Este botão seleciona automaticamente todos os pacotes que devem ser instalados/atualizados para atualizar a distribuição inteira. O botão anterior (Atualizar tudo) não atualiza pacotes que, na sua nova versão, dependam de outros pacotes que não instalados no seu sistema.

Um breve exemplo: se o pacote X atual depende só de Y, mas na versão mais nova (que está no servidor) ele depende também de Z que não está instalado na sua máquina, então o pacote X não será instalado. Utilizando o botão Atualizar Distribuição, o pacoteX seria atualizado e o pacote Z instalado. A mesma situação ocorre para pacotes que seriam removidos por causa de conflitos novos que não existiam na versão anterior do pacote. O botão Atualizar distribuição também instalará os pacotes considerados essenciais, que estão marcados como Important no arquivo /etc/apt/rpmpriorities.

O Botão Proceder

Como o próprio nome já indica, o botão Proceder tem a finalidade de executar as ações programadas com os outros botões (Atualizar tudo, Atualizar Distribuição) e também as ações efetuadas diretamente com os pacotes (Manter, Instalar, Atualizar e Remover). Você pode ainda, durante a execução das ações, especificar se deseja apenas fazer o download dos pacotes ou se quer fazer o download e executar as operações especificadas.

Nota: A instalação/atualização de um número grande de aplicativos pode demorar algum tempo. Aguarde enquanto o Synaptic realiza as operações necessárias aos procedimentos solicitados.

Vejamos agora os outros botões que compõem a interface do Synaptic.

Procurando pacotes

É possível realizar uma busca pelo nome do pacote utilizando a opção Procurar Pacote e clicando no botão com a figura de uma lupa. Na janela principal surgirão as seções onde você pode encontrar o pacote com o nome especificado. Na caixa de opções Filtro de Busca você pode definir a situação do pacote que deseja encontrar. Veja com mais detalhes cada um desses botões na Figura 9-13.

Figura 9-13. Botões de Procura dos Pacotes

O botão Filtros... permite que você crie filtros de busca personalizados. Você pode buscar pacotes por seção, por status, conforme as dependências e muito mais. Experimente esse recurso para otimizar suas buscas.

Dica: Você pode visualizar a lista de pacotes de diferentes formas, utilizando as opções do menu Visualizar, contido na interface principal.

Agora que já sabemos como procurar um pacote, vejamos como instalar, atualizar, manter e/ou remover um pacote e suas dependências.

Quando o filtro de pacotes estiver com o filtro Todos os Pacotes selecionado, serão mostrados todos os pacotes disponíveis no(s) servidor(es) listados no arquivo /etc/apt/sources.list, local onde constam os servidores que contêm repositório de arquivos do Apt.

Esta lista de pacotes pode conter os pacotes encontrados nos repositórios de mais de um servidor. Por esse motivo, o tempo para download varia de acordo com o tempo de resposta do servidor.

Lista de Pacotes

Observando a primeira coluna da tabela, vemos setas apontando para a direita, indicando o nome de cada seção. Clicando em uma seta, aparece uma lista com os nomes dos pacotes pertencentes à seção aberta. Na coluna Versão Instalada, podemos observar a versão do pacote, caso ele esteja instalado. A coluna Versão Disponível mostra qual versão do pacote está disponível para a instalação. Se a versão disponível for mais nova que a versão instalada, significa que esse pacote pode ser atualizado. Na coluna Descrição vemos a descrição do pacote.

Para uma descrição mais detalhada do pacote veja a aba Descrição, que se encontra abaixo da lista e pacotes.

Informações sobre os Pacotes

Na parte inferior da janela, temos algumas abas que mostram informações mais detalhadas sobre o pacote selecionado na lista de pacotes. Estas abas são as seguintes: Informação, Descrição e Dependências. Cada aba tem uma funcionalidade própria. Veja na Figura 9-14 essas abas em destaque.

Figura 9-14. Abas de Informação

A aba Informação fornece informações gerais sobre o pacote como, por exemplo, se está instalado ou não, a que seção o pacote pertence, qual a prioridade de instalação do pacote, tamanho e versão, além de informações sobre os pacotes disponíveis para a atualização e a importância da atualização.

A aba Descrição nos fornece uma descrição detalhada do que é o pacote, o que ele faz e o que disponibiliza. O nível de detalhe de cada descrição varia de pacote para pacote.

A aba Dependências nos mostra as dependências do pacote selecionado. Você também pode selecionar no menu dessa aba a opção de ver somente as dependências do pacote, os pacotes que dependem do pacote selecionado. Assim, você pode ter uma idéia de quais pacotes dependem de quais e o quão complexo seria instalar isso tudo manualmente, além de poder avaliar as conseqüências da desinstalação de um pacote.

Trabalhando com os Pacotes

Quando modificarmos o estado atual do pacote, surgirá uma indicação do que será feito. Essa indicação será visualizada de duas formas, com pequenas setas coloridas apontando em determinadas direções ou com um destaque colorido sobre a linha do pacote marcado. Vejamos o que cada uma dessas indicações querem nos dizer:

  • seta para cima ou destaque verde: indica que o pacote será instalado.

  • seta para baixo ou destaque vermelho: indica que o pacote será desinstalado.

  • seta na diagonal ou destaque amarelo: indica que o pacote será atualizado.

Dica: Você pode alterar as cores utilizadas para indicar as operações com os pacotes. Para isso clique em Configurações -> Preferências -> Cores e clique sobre o botão cor ao lado da opção que você deseja alterar.

Vejamos agora o que fazem os botões Manter, Instalar/Atualizar e Remover. Observe estes botões na Figura 9-15.

Figura 9-15. Botões de Estado dos Pacotes

O botão Manter é utilizado para voltar o pacote aos seu estado atual. Por exemplo, você selecionou o pacote YZW e clicou no botão Instalar, sendo assim, o estado do pacote YZW foi modificado indicando que ele seria instalado quando o botão Proceder fosse pressionado. Porém, você se arrependeu e não quer mais instalar o pacote YZW e sim deixá-lo como está. Basta clicar no botão Manter para fazer voltar o pacote YZW ao estado anterior sem efetuar nenhuma alteração. Note que este botão só tem efeito antes de você pressionar o botão Proceder.

O botão Instalar marca o pacote para ser instalado, calculando suas dependências e selecionando-as para instalação automática, de forma que todas as dependências sejam instaladas junto com o pacote. Caso você selecione um pacote que já esteja instalado, o nome deste botão mudará para Atualizar e a sua função será de atualizar o pacote existente com as versões mais novas existentes no repositório do servidor. Caso você selecione um pacote cuja versão instalada no seu sistema seja a última versão disponível, o botão Atualizar ficará sombreado de cinza, tornando-se inativo. Veja a versão instalada do pacote no seu sistema na coluna Versão Instalada e a versão disponível no servidor na coluna Versão Disponível.

Vejamos agora o botão Remover, que remove um pacote selecionado, observando as dependências de pacotes existentes no sistema. Você pode ver quais são as dependências de cada pacote clicando na aba Dependências.

Nota: Quando você seleciona algum pacote para atualizar ou instalar, o Synaptic automaticamente seleciona as dependências desse pacote como necessárias à instalação. Se você retirar alguma dependência manualmente (selecionando o pacote e clicando no botão Manter), as dependências do pacote serão quebradas. Para consertar automaticamente os problemas de dependência, você pode utilizar o recurso de Corrigir Pacotes Quebrados do menu Ações. Uma outra situação em que essa função será útil é quando o usuário instala um pacote utilizando o comando rpm com a opção --nodeps.

Utilizando o Synaptic

Vejamos agora uma maneira simples de manter seu sistema atualizado utilizando o Synaptic. Uma vez que o seu APT já vai pré-configurado com os servidores oficiais da Conectiva, a única coisa que você tem que fazer é utilizar o Synaptic estando conectado à Internet.

  1. Em primeiro lugar, devemos sempre atualizar os arquivos de índice que possuímos em nossas máquinas. Isso é feito utilizando o botão Atualizar Lista. Clicando nesse botão, surgirá uma janela com a lista de servidores cadastrados no APT mostrando o progresso do download do arquivo de índice, como já visto anteriormente.

  2. Devemos agora marcar todos os pacotes que queremos atualizar. Isso pode ser feito de duas maneiras: manualmente ou automaticamente. Para fazer da maneira mais simples e rápida clique no botão Atualizar tudo, que se encontra ao lado do botão Atualizar Distribuição. Caso queira fazer manualmente, selecione pacote por pacote e clique no botão Atualizar que se encontra na parte inferior da janela, ao lado das abas de informação.

  3. Com os pacotes selecionados, podemos ver quais serão as alterações a ser executadas. Selecione o filtro Mudanças Programadas e observe que a lista de pacotes será modificada e todos os pacotes terão a marcação indicando uma mudança de estado.

  4. Para finalizar, clique no botão Proceder, que irá executar as ações especificadas e confirme a execução do processo na janela que se abre.

    Você pode ver na Figura 9-16 um exemplo das barras de progresso que surgem enquanto as alterações estão sendo preparadas e executadas.

    Figura 9-16. Preparando Alterações

Notas

[1]

Redhat Package Manager (Gerenciador de Pacotes Redhat).

[2]

Arquivos diversos como imagens de ícones ou arquivos de dados.

[3]

Contém o código que deve ser compilado para gerar o programa em si.

[4]

Pacotes com o nome: pacote.src.rpm.

[5]

Advanced Package Tool.

[6]

As linhas que iniciam com o caractere # são comentários

[7]

Arquivos que contém a lista de pacotes, dependências e informações encontradas no servidor. Este comando deve ser executado sempre antes de se utilizar o comando apt-get com outro parâmetro.

[8]

Note que podem ocorrer problemas durante a atualização de uma distribuição mais antiga.

[9]

GNU Privacy Guard.

[10]

Pretty Good Privacy.

[11]

Os colchetes no arquivo source.list devem estar aqui.

[12]

Por exemplo, o arquivo vendors.list.

[13]

Especificados no arquivo /etc/apt/sources.list, que é um dos arquivos de configuração do Apt.