sexta-feira, 29 de junho de 2012

RPM Package Manager e Yellow dog Updater Modified

O "RPM Package Manager" é um sistema de gerenciamento de pacotes para distribuições Linux desenvolvido originalmente pela Red Hat. Um sistema de gerenciamento de pacotes tem o propósito de automatizar o processo de instalação, atualização e remoção de softwares em um sistema operacional.

Um pacote serve para distribuir um software, que pode estar compilado ou não, mas um software pode ser distribuído em mais de um pacote, ou seja, não necessariamente em um único pacote. Os softwares fornecidos para o Fedora, CentOS, RHEL e descendentes são empacotados pelo RPM Package Manager e utilizam a extensão .rpm.

O arquivo de um pacote RPM possui o seguinte formato para seu nome:

<nome>-<versão>-<lançamento>.<arquitetura>.rpm

Um software sempre é compilado para determinada arquitetura, por exemplo i386, i686, x86_64 etc. Sua extensão indica para qual arquitetura ele é compatível. Por exemplo "firefox-3.6.13-1.fc13.x86_64.rpm". O código fonte de um software também pode ser distribuído em pacote RPM, sua arquitetura recebe o nome src, como "firefox-3.6.13-1.fc13.src.rpm".

Os pacotes RPM que possuem a extensão noarch.rpm referem-se a pacotes que não dependem de determinada arquitetura de computador, ou seja, podem ser instalados em qualquer uma. Por exemplo, são os pacotes com arquivos de imagens, audio etc., ou softwares que serão interpretados, scripts etc.

O pacote RPM traz, em um único arquivo, o software compactado e um rótulo com diversas informações, que incluem nome, versão e descrição. O conteúdo a seguir é o retorno do comando "rpm -qpi <pacote>":

Name        : firefox                            Relocations: (not relocatable)
Version     : 3.6.13                             Vendor: Fedora Project
Release     : 1.fc13                             Build Date: Qui 09 Dez 2010 13:04:06 BRST
Install Date: Sex 10 Dez 2010 23:42:53 BRST      Build Host: x86-17.phx2.fedoraproject.org
Group       : Applications/Internet              Source RPM: firefox-3.6.13-1.fc13.src.rpm
Size        : 18060708                           License: MPLv1.1 or GPLv2+ or LGPLv2+
Signature   : RSA/SHA256, Qui 09 Dez 2010 20:53:23 BRST, Key ID 7edc6ad6e8e40fde
Packager    : Fedora Project
URL         : http://www.mozilla.org/projects/firefox/
Summary     : Mozilla Firefox Web browser
Description :
Mozilla Firefox is an open-source web browser, designed for standards
compliance, performance and portability.



Para que um pacote possa ser instalado, o sistema deve conter os pré-requisitos para o pacote. São as dependências do pacote. Uma dependência proporciona um modo de um pacote requerer outros pacotes, instalados previamente ou simultaneamente, para ser possível sua instalação. Quando tenta-se instalar um pacote e os pré-requisitos para ele estão incompletos, o gerenciador de pacotes retorna uma mensagem e não instala o pacote.

O Fedora, o CentOS e o RHEL utilizam essencialmente duas ferramentas para gerenciar os pacotes em linha de comando, o RPM Package Manager e o YUM (Yellow dog Updater, Modified), este desenvolvido por terceiros e compatível com o sistema de gerenciamento RPM.

O RPM é uma ferramenta simples e direta, para instalar, atualizar ou remover pacotes e realizar pesquisas na base de pacotes instalados. O YUM é uma ferramenta automática, também para instalar, atualizar ou remover pacotes, porém, capaz de localizar as dependências e instalá-las quando necessário. Com o YUM é possível consultar os repositórios de softwares para procurar por determinado pacote ou até atualizar todo o sistema.

Com as ferramentas RPM e YUM podemos realizar diversas operações com os pacotes. No artigo "Guia de referência cruzada dos gerenciadores de pacotes" (http://dan-scientia.blogspot.com.br/2009/10/guia-de-referencia-cruzada-dos.html) publiquei uma tabela comparativa dos comandos entre os principais gerenciadores de pacotes, as principais operações estão listadas lá, juntamente com os comandos.

O sistema de gerenciamento de pacotes RPM mantém no sistema operacional um banco de dados dos pacotes. Este banco, local, guarda informações sobre todos os pacotes instalados no sistema. O banco de dados RPM fica armazenado no diretório "/var/lib/rpm/" e pode conter arquivos, como a listagem a seguir:

Basenames           Packages
Conflictname        Providename
__db.001            Provideversion
__db.002            Pubkeys
__db.003            Requirename
Dirnames            Requireversion
Filemd5s            Sha1header
Group               Sigmd5
Installtid          Triggername
Name

A ferramenta YUM também utiliza o banco de dados RPM, entretanto, o YUM é capaz de consultar repositórios mantidos em servidores acessados pela Internet. Através desta consulta o YUM consegue localizar os pacotes que serão instalados no sistema local, não só o pacote principal mas também suas dependências.

As configurações para acesso à repositórios ficam no arquivo "/etc/yum.conf" ou em arquivos separados, no diretório "/etc/yum.repos.d/". Uma parte do conteúdo do arquivo "/etc/yum.repos.d/fedora-updates.repo" é exibida a seguir:

[updates]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch


Instalação, atualização ou remoção de um software no sistema Linux é extremamente simples, desde que o software esteja devidamente empacotado. Estas ferramentas são muito eficazes. Existem interfaces gráficas para estas ferramentas, facilitando ainda mais. O sistema de gerenciamento de pacotes é, talvez, uma das características que torna o Linux superior aos outros sistemas operacionais.

Nenhum comentário:

Postar um comentário