Aula #29 - YUM



O yum fornece uma camada de alto nível e inteligente baseada no programa rpm. Ele pode resolver dependências automaticamente durante a instalação, atualização e remoção de pacotes. Ele acessa repositórios externos de software, sincronizando e baixando software, conforme necessário.



Os utilitários de pacotes de baixo nível como o rpm e o dpkg cuidam dos detalhes da instalação de pacotes de software e fazem a gestão do software já instalado.

Os sistemas de gestão de pacotes de alto nível (como o yum, o apt e o zypper) trabalham com bancos de dados de pacotes disponíveis e são capazes de encontrar, instalar, atualizar e desinstalar software de uma forma muito inteligente. 

Eles:

  •     Podem usar repositórios locais e remotos como origem para instalar e atualizar pacotes de aplicativos, e pacotes de código fonte.
  •     São usados para automatizar a instalação, atualização e remoção de pacotes de software.
  •     Resolvem as dependências automaticamente.
  •     Economizam tempo, porque não há necessidade de fazer download manual de pacotes ou procurar informações de dependência separadamente. 


Os repositórios de software são fornecidos por distribuições e por comunidades independentes. Os instaladores de pacotes mantém bancos de dados de software disponível nos repositórios. Ao contrário das ferramentas de pacotes de baixo nível, eles têm a capacidade de localizar e instalar as dependências automaticamente, que é uma função crítica.

Nesta seção, vamos falar sobre o yum; depois vamos ver o zypper, dnf e o apt. 


O yum estende as funcionalidades da ferramenta rpm. Sua tarefa principal é buscar pacotes em vários repositórios remotos e resolver as dependências entre pacotes. Ele é usado pela maioria (mas não todas) das distribuições que usam rpm, incluindo o RHEL, o CentOS, o Scientific Linux e o Fedora.

O yum armazena informações sobre os repositórios remotos em bases de dados locais para acelerar o desempenho. Para remover algumas ou todas as informações armazenadas no cache pode-se executar o comando:
$ yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

O yum tem uma série de extensões modulares (plugins) que ficam nas pastas /usr/bin/yum* e /usr/sbin/yum*.

Vamos nos concentrar no uso da linha de comando yum e não considerar as interfaces gráficas disponíveis.



Configuração dos repositórios yum no RHEL

Arquivos de configuração de repositórios são guardados na pasta /etc/yum.repos.d/ e usam a extensão .repo . Por exemplo em um sistema RHEL 6:

$ ls -l /etc/yum.repos.d
total 40
-rw-r--r-- 1 root root 957 Nov 4 2012 epel.repo
-rw-r--r-- 1 root root 1056 Nov 4 2012 epel-testing.repo
-rw-r--r-- 1 root root 188 May 28 2013 google-chrome.repo
-rw-r--r-- 1 root root 113 Dec 11 2011 google-earth.repo
-rw-r--r-- 1 root root 128 Dec 23 2013 google-talkplugin.repo
-rw-r--r-- 1 root root 477 Jan 29 2012 nux-dextop.repo
-rw-r--r-- 1 root root 529 Oct 30 2013 rhel-source.repo
-rw-r--r-- 1 root root 1113 Jan 4 2011 rpmforge.repo
-rw-r--r-- 1 root root 256 May 22 07:00 virtualbox.repo

No RHEL 6 não existe o arquivo redhat.repo mas ele está lá no RHEL 7:

total 112
drwxr-xr-x. 2 root root 4096 Sep 24 13:44 ./
drwxr-xr-x. 151 root root 12288 Oct 2 12:52 ../
-rw-r--r-- 1 root root 957 Sep 2 11:14 epel.repo
-rw-r--r-- 1 root root 1056 Sep 2 11:14 epel-testing.repo
-rw-r--r-- 1 root root 116 Sep 3 11:40 google-chrome.repo
-rw-r--r-- 1 root root 477 Jul 31 02:50 nux-dextop.repo
-rw-r--r-- 1 root root 37763 Sep 24 13:44 redhat.repo

O RHEL 6 e versões anteriores lidavam com repositórios de uma maneira diferente, embora clones como o CentOS usam repositórios convencionais.


Um exemplo de arquivo repo muito simples:

[repo-name]
name=Description of the repository
baseurl=http://somesystem.com/path/to/repo
enabled=1
gpgcheck=1

Exemplos mais complexos existem na pasta /etc/yum.repos.d e é uma boa ideia examiná-los.

É possível ligar e desligar um repositório em particular alterando o valor da linha enabled para 0 ou 1, 
ou ainda usando as opções 
--disablerepo=nomedorepo 

--enablerepo=nomedorepo 
quando chamar o yum. Ainda é possível (mas não é uma boa ideia) desabilitar a verificação de integridade alterando a linha gpgcheck.


Buscar pacote no repositório com o YUM

Assim como o rpm, o yum pode ser usado para consultas e buscas; entretanto o yum não está limitado ao que está presente no sistema local, ele pode fazer consultas em repositórios remotos. Alguns exemplos:

    Procura por pacotes com a palavra keyword no nome:
    $ sudo yum search keyword
    $ sudo yum list "*keyword*"

    Estes dois comandos retornam informações diferentes. O primeiro é sobre pacotes enquanto o segundo mostra se os pacotes estão instalados e o que mais está disponível.

    Mostra informação sobre um pacote:
    $ sudo yum info package

    As informações incluem tamanho, versão, repositório de origem, uma URL de origem, e uma descrição longa. Caracteres especiais como estrelas podem ser usados, como em yum info "libc*" para esse e para a maioria dos comandos do yum. 
Lembre-se de que os pacotes não precisam estar instalados, diferente das consultas feitas com o comando rpm -q.

    Lista todos os pacotes, ou apenas os que estão instalados, disponíveis, ou atualiza os que ainda não foram instalados.
    $ sudo yum list [installed | updates | available]
    
Mostra informações sobre grupos de pacotes (package groups) instalados, disponíveis, etc.:
    $ sudo yum grouplist [group1] [group2]
    $ sudo yum groupinfo group1 [group2]
    
Mostra pacotes que instalam um determinado arquivo:
    $ sudo yum provides
         como em
    $ sudo yum provides "/logrotate.conf"

        Observe que é necessário usar ao menos uma  / (barra) no nome do arquivo, o que pode ser confuso.


Usando o plugin yum-plugin-verify

A verificação de pacotes requer a instalação do plugin yum-plugin-verify o que pode ser feito com:

$ sudo yum install yum-plugin-verify


Observe que isso é um plugin para o yum e não um executável. Existem vários outros plugins para o yum.

     Para verificar um pacote:
    $ sudo yum verify [pacote]
     
    Para fazer o mesmo que o rpm -V :
    $ sudo yum verify-rpm [pacote]
     
    Para mostrar todas as diferenças incluindo arquivos de configuração:
    $ sudo yum verify-all [pacote]
      

Sem argumentos o comando acima verifica todos os pacotes instalados no sistema.


Por padrão os comandos de verificação ignoram os arquivos de configuração que podem ser alterados pelo uso normal. Existem outras opções que podem ser vistas com: man yum-verify.




Como usar o comando yum

Alguns exemplos das operações mais comuns:

     Instalar um ou mais pacotes de repositórios, resolvendo e instalando dependências se necessário:
    $ sudo yum install pacote1 [pacote2]
     
    Instala um rpm local:
    $ sudo yum localinstall ./pacote.rpm

    O que não é exatamente o mesmo que $ rpm -i ./pacote.rpm porque o yum vai tentar resolver e instalar dependências a partir de repositórios remotos.

Instala um grupo de pacotes a partir de um repositório, resolvendo e instalando as dependências para cada pacote do grupo:
    $ sudo yum groupinstall nome-do-grupo
    ou
    $ sudo yum install @nome-do-grupo


    Remover pacotes do sistema:
    $ sudo yum remove pacote1 [pacote2]

    Tenha cuidado com a remoção de pacotes, porque o yum vai remover o pacote solicitado, mas também todos os pacotes que dependem dele! Isso pode não ser o que você quer, então nunca rode yum remove com a opção -y , que assume confirmação automática de remoção.
     
    Atualiza um pacote a partir de repositórios remotos:
    $ sudo yum update [pacote]

    Caso nenhum pacote seja fornecido, todos os pacotes serão atualizados.



Durante a instalação (ou atualização), se um arquivo de configuração fornecido por um pacote é atualizado, o arquivo de configuração antigo será renomeado com a extensão .rpmsave. Caso o arquivo de configuração antigo ainda funcione, ele será renomeado com a extensão .rpmnew . Você pode procurar por estas extensões (quase sempre no diretório /etc) para ver se alguma modificação é necessária com o comando:


$ sudo find /etc -name "*.rpm*"

 Este é o comportamento da ferramenta de baixo nível rpm , mas mencionamos aqui como referência.


O yum é rico em recursos e pode ser estendido com plugins. Para listar os plugins instalados:  

$ sudo yum list "yum-plugin*"

 Mais exemplos de uso:

     Mostra a lista dos repositórios habilitados:
    $ sudo yum repolist
     
    Inicia um shell interativo para rodar comandos do YUM:
    $ sudo yum shell [arquivo-texto]

    Se você informar arquivo-texto o yum vai ler o arquivo e executar seu conteúdo ao invés de esperar que você digite comandos no terminal.
     
    Faz o download de pacotes, mas não os instala, apenas os salva no diretório /var/cache/yum:
    $ sudo yum install --downloadonly pacote

    Para isso funcionar, instale o pacote yum-plugin-downloadonly. Então você poderá:
    $ sudo yumdownloader pacote

    que vai fazer o download da última versão do pacote e vai salvar o arquivo .rpm no diretório atual. Também é possível computar e fazer o download de todas as dependências.


    Ver o histórico de comandos do yum , e com as opções corretas você pode desfazer e refazer comandos:

      $ sudo yum history

Mais vistos no mês:

As melhores distribuições Linux para 2017

TuxMath - Tux, do Comando da Matemática. Ensino e diversão a crianças.

Teste de Performance de Rede com Iperf

DHCP - Guia Completo

Aula #14 - Os sistemas de arquivos ext2/ext3/ext4

OPNsense - Firewall Open Source

Ophcrack: Descubra todas as senhas do Windows

SSD no linux

Administração de sistema e Deploys: Ansible, Chef, Fabric, Puppet ou Salt?

Brískola - aprenda a jogar !!