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].
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 6656554 Dec 4 14:42 emacs-20.7-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 20.7, 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.
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.
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, por isso o gerenciador de pacotes conta com funções especiais para recuperar a integridade deste banco, como será mostrado mais adiante.
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.
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.
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 depedê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.
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[opcao] 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.04 Vendor: Conectiva Release : 9cl Build Date: sex 16 fev 2001 21:18:40 EST Install date:seg 19 fev 2001 12:21:17 EST Build Host: kepler Group:Interpretadores de Comandos Source RPM: bash-2.04-9cl.src.rpm Size : 754165 License: GPL 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.8-7cl pygtk-0.6.6-5cl gkrellm-1.0.6-1 gconf-0.11.20001219-3cl gtk+-1.2.8-14cl bonobo-0.30-5cl # rpm -q --requires glib /bin/sh ld-linux.so.2 libc.so.6 libdl.so.2 libpthread.so.0 libc.so.6(GLIBC_2.0) 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.04-9cl |
E como um último exemplo,veja como listar todos os pacotes instalados no sistema:
# rpm -qa |
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 |
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.
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.
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.
O Linuxconf verificará se o pacote já está instalado, e o notificará caso já esteja e a versão do pacote instalado seja 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. Concuí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:
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.
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.
Clicando sobre um dos grupos obtém-se uma lista contendo os pacotes membros deste grupo.
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.
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. Entre com 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.
A apresentação dos resultados é idêntica à da consulta a pacotes já instalados.
Dica: Você pode instalar ou remover pacotes a partir do modo de consulta. Clique sobre um grupo de pacotes e no painel seguinte clique no botão Seleciona. Proceda então a escolha dos pacotes. Pressione o botão Aceitar e em seguida no botão Fechar para voltar à listagem de pacotes. Agora basta pressionar o botão Instala disponível quando se consulta pacotes não instalados, ou o botão Desinstala disponível quando se consulta 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.
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:
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.
Selecione esta opção para que o Linuxconf procure pelas palavras chaves no sumário do pacotes RPMS.
Selecione esta opção para fazer a procura das palavras chaves na descrição detalhada do pacote RPM.
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.
Selecione esta opção para buscar nas dependências dos pacotes as palavras chaves.
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.
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.
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://ftp.conectiva.com/pub/conectiva/.0 beta/conectiva 001 002 # # Mirror repositories. #rpm ftp://rufus.w3.org/linux/conectiva beta/conectiva 001 002 #rpm-src ftp://rufus.w3.org/linux/conectiva beta/conectiva 001 002 |
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 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.
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.
| Atenção |
|
Apenas lembre-se de que HTTP e FTP são os únicos métodos testados e seguros. Quando mais métodos forem suportados, eles serão documentados e devidamente explicados. |
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:
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 8 Pre-1 - CD1]/ conectiva 001 |
# 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 8 Pre-1 - CD1' Este disco é chamado: 'Conectiva Linux 8 Pre-1 - CD1' Reading Indexes... Done Gravando nova lista-fonte As entradas de lista-fonte para este disco são: rpm cdrom:[Conectiva Linux 8 Pre-1 - CD1]/ conectiva 001 Repetir este processo para o restante dos CDs em seu conjunto. |
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:
Atualiza o banco de dados local do apt-get com os arquivos pkglist[7] do servidor.
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.
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.
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.
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 |
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]
Nota: Caso você tenha uma versão anterior do Conectiva Linux já instalado, para atualizar o seu sistema, é necessário executar um script de atualização devido a limitações que existiam no APT daquela versão. Execute num terminal, como superusuário, os seguintes comandos:
A seguir espere alguns instantes e siga as instruções apresentadas na tela.
# mount /mnt/cdrom # /mnt/cdrom/apt/dist-upgrade.sh
Remove o pacote algum-pacote e todos os demais pacotes que dele dependam.
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.
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/.
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 "akk"
{
Fingerprint "B24534AA5D10F86B46EAB46B3EB3759E05BBD9E4";
Name "Alfredo K. Kojima <kojima@conectiva.com.br>";
}
simple-key "cncbr"
{
Fingerprint "30EAE85C3D91C29880B4F0B3E368DDD099807190";
Name "Conectiva S.A. <security@conectiva.com.br>";
}
|
No Exemplo 9-2, 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 através do email <info@conectiva.com.br>.
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 ou um servidor de FTP funcionando.
Um repositório RPM possui uma estrutura padronizada de diretórios, definida assim:
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:
Este diretório conterá os diretórios com os arquivos rpm.
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.
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 /var/www/default/repositorio. A árvore de diretórios se pareceria assim:
/var/www/default/repositorios /var/www/default/repositorios/8 /var/www/default/repositorios/8/conectiva /var/www/default/repositorios/8/conectiva/RPMS.new /var/www/default/repositorios/8/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 8/conectiva new |
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:
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.
Este parâmetro indica onde se localiza o diretório principal.
É o nome de sua distribuição Linux. Usualmente se utiliza o nome da distribuição e opcionalmente um identificador de versão.
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=/home/httpd/repositorios 7.1/conectiva new |
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 localmente) com possibilidade de certificação de autenticidade do fornecedor. Há ainda a possibilidade de instalar os pacotes presentes no CD do Conectiva Linux.
Será apresentada agora a aparência visual do Synaptic, o que cada botão faz e como podem ser utilizados. Para executar o Synaptic, estando como superusuário, digite no terminal X (xterm):
# synaptic |
Aguarde enquanto o Synaptic inicia. Surgirá então uma janela como a apresentada na Figura 9-12.
Agora será mostrada uma breve descrição da interface do Synaptic, começando pelos botões localizados no topo da janela.Na Figura 9-13 temos os botões principais do Synaptic. Eles serão explicados a seguir.
Este 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. É recomendado utilizar esse botão sempre que você for fazer uma atualização ou modificação de qualquer pacote no seu sistema, garantindo desta maneira 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.
Ao pressionar este botão surgirá uma janela mostrando a evolução do download dos arquivos de índice especificados no arquivo /etc/apt/sources.list. Ao final do download a janela fechará e o Synaptic irá recalcular as dependências e mostrar a nova lista de pacotes atualizada.
Quando você seleciona algum pacote para atualizar ou instalar, o Synaptic automaticamente seleciona as dependências desse pacote como necessárias à instalação. Mas, caso você não queira atualizar alguma dependência e retire-a 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 botão Autocorreção. Uma outra situação na qual o botão de Autocorreção se torna necessário é quando o usuário instala um pacote utilizando o comando rpm com a opção --nodeps.
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.
Este botão seleciona automaticamente todos os pacotes que devem ser instalados/atualizados para atualizar sua distribuição inteira. A diferença entre este botão e o botão Upgrade é que o botão Upgrade não atualiza pacotes que, na sua nova versão, dependam de outros pacotes que você não tem instalado 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 Dist-Upgrade, o pacote X 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 Dist-Upgrade também instalará os pacotes considerados essenciais, que estão marcados como Important no arquivo /etc/apt/rpmpriorities.
Nota: Caso você tenha uma versão anterior do Conectiva Linux já instalado, para atualizar o seu sistema, é necessário executar um script de atualização devido a limitações que existiam no APT daquela versão. Execute num terminal, como superusuário, os seguintes comandos:
A seguir espere alguns instantes e siga as instruções apresentadas na tela.
mount /mnt/cdrom /mnt/cdrom/apt/dist-upgrade.sh
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 (Upgrade, Dist-Upgrade) e também as ações efetuadas diretamente com os pacotes (Instalar, Manter, 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.
Clicando nesse botão você poderá configurar as opções do Synaptic. Essas opções especificam detalhes de utilização dos filtros, de armazenamento dos pacotes que serão instalados e também sobre a aparência dos botões principais.
Será mostrado agora os outros botões que compõem a interface do Synaptic.
Observe o botão com a imagem de uma lupa que se localiza abaixo dos botões Atualizar e Auto-Correção. Este botão permite que você procure um pacote específico pelo nome. Quando você clicar no botão contendo a lupa, a caixa de seleção dos filtros será retirada e surgirá um campo texto onde você poderá digitar o nome do pacote a ser procurado, e ao lado do campo texto surgirá o botão Para Filtro. Veja com mais detalhes cada um desses botões na Figura 9-14.
Independente de saber ou não o nome completo do pacote, assim que você começar a digitar esse nome o cursor irá se mover na tabela com a lista dos pacotes, parando sobre o nome mais próximo daquele que foi digitado. Note que a figura do botão muda da lupa para uma seta e que surgem dois outros botões: Próximo e Para Filtro.
O botão Próximo, como o próprio nome já diz, avança o cursor para o próximo pacote. Com o botão Para Filtro você pode construir um filtro que será armazenado no Filtro Rascunho apenas especificando uma expressão regular no campo texto. Quando você clica no botão Para Filtro, o filtro é criado e é aplicado o filtro recém-criado à lista dos pacotes mostrados. Para retornar à listagem total dos pacotes clique no botão que agora está com a figura de seta, o que fará o botão voltar a ser a lupa e mostrará a lista de filtros. Basta agora selecionar o filtro Todos os Pacotes.
Agora que já sabe como procurar um pacote, será mostrado 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 listados todos os pacotes disponíveis no(s) servidor(es) listado(s) no arquivo /etc/apt/sources.list, sendo este o local para indicar servidores que contém repositório de arquivos do Apt.
Nota: Esta lista de pacotes pode conter os pacotes encontrados nos repositórios de mais de um servidor. Sendo assim, os arquivos podem ter tempos diferentes de download, dependendo do tempo de resposta do servidor.
Conheça agora alguns detalhes sobre a tabela que mostra os pacotes e seus respectivos dados.
Observando a primeira coluna da tabela, constata-se que ela inicialmente se encontra em branco, sem título. Essa coluna é utilizada para indicar qual operação será efetuada em cada pacote. Quando modificar o estado atual do pacote, surgirá uma indicação do que será feito. Essa indicação será visualizada de duas formas: ou como pequenas setas coloridas apontando para diversas direções, ou como um X em vermelho. Vejamos o que cada uma dessas indicações quer dizer:
seta para cima indica que o pacote será instalado.
seta para baixo indica que o pacote será desinstalado.
seta diagonal cima indica que o pacote será atualizado.
seta para lado direito indica que o pacote pode ser atualizado, mas não está marcado para ser atualizado.
X indica que o pacote tem dependências quebradas, ou seja, não irá funcionar caso seja instalado da maneira atual. Neste caso é necessário utilizar o botão de Autocorreção para que ele corrija as dependências que estão quebradas ou então deve-se corrigi-las manualmente.
Na Figura 9-15 temos um exemplo dessa tabela.
A segunda coluna da tabela (Pacote) indica o nome do pacote. A coluna Instalado indica a versão instalada do pacote e estará em branco caso este não esteja instalado. Na quarta coluna (Disponível) é mostrada a versão do pacote disponível no repositório do servidor. A coluna Resumo mostra uma breve descrição do que é o pacote.
Para uma descrição mais detalhada do pacote veja a aba Descr., que se encontra ao lado da tabela.
Veja agora o que fazem os botões Manter, Instalar/Atualizar e Remover. Observe estes botões na Figura 9-16.
O botão Manter é utilizado para fazer 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 a 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 disponíveis 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 Instalado e a versão disponível no servidor na coluna Disponível.
O botão Remover 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 Depends..
A próxima parte da janela revela as abas que se encontram abaixo dos botões Manter, Upgrade e Remover.
Estas abas são as seguintes: Geral, Descr. e Depends.. Cada aba tem uma funcionalidade própria. Veja na Figura 9-17 essas abas em destaque.
A aba Geral 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 Descr. 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 Depends. 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 remoção de um pacote.
Será mostrado 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.
Em primeiro lugar, deve-se sempre atualizar os arquivos de índice que existem em nossas máquinas. Isso é feito utilizando o botão Atualizar. Clique no botão Atualizar, e surgirá então uma janela com a lista de servidores cadastrados no APT mostrando o progresso do download do arquivo de índice.
Deve-se agora marcar todos os pacotes a serem atualizados. Isso pode ser feito de duas maneiras: manualmente ou automaticamente. Para fazer da maneira mais simples e rápida clique no botão Upgrade, que se encontra ao lado do botão Dist-Upgrade. Caso queira fazer manualmente, selecione pacote por pacote e clique no botão Upgrade que se encontra ao lado da tabela de pacotes.
Com os pacotes selecionados, é possível ver as alterações que devem ser executadas. Selecione o filtro Alterações Esperadas e observe que a lista de pacotes será modificada, tendo todos os pacotes os sinais de mudança de estado na primeira coluna da tabela. Veja a lista de pacotes com o filtro aplicado na Figura 9-18.
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-19 e na Figura 9-20 exemplos das barras de progresso que surgem enquanto as alterações estão sendo preparadas e executadas.
| [1] |
Redhat Package Manager (Gerenciador de Pacotes Redhat). |
| [2] |
Arquivos diversos como imagens de ícones ou arquivos de dados. |
| [3] |
Os arquivos fontes contém o código utilizado para se construir um programa, e que devem ser compilados 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. |