Pesquisa de site

Como instalar e usar ‘yum-utils’ para manter o Yum e aumentar seu desempenho


Independentemente do Fedora começar a adotar o dnf como o novo gerenciador de pacotes e biblioteca padrão de gerenciamento de pacotes, ele não substituirá o bom e velho gerenciador de pacotes yum em outras distribuições derivadas (como o Red Hat Enterprise Linux (RHEL) e CentOS) até que tenha provado ser tão confiável quanto o yum e mais sólido (de acordo com o wiki do Projeto Fedora, a partir de 15 de novembro, 2015, dnf ainda está em estado testável). Assim, suas habilidades de gerenciamento de yum lhe serão úteis por ainda algum tempo.

Por esse motivo, neste guia apresentaremos o yum-utils, uma coleção de utilitários que se integram ao yum para estender seus recursos nativos de diversas maneiras, tornando-o mais poderoso e fácil de usar.

Instalando yum-utils no RHEL/CentOS

Yum-utils está incluído no repositório base (que é habilitado por padrão), então instalá-lo em qualquer distribuição baseada no Fedora é tão fácil quanto fazer:

yum update && yum install yum-utils

Todos os utilitários fornecidos pelo yum-utils são instalados automaticamente com o pacote principal, que descreveremos na próxima seção.

Explore os utilitários fornecidos pelo pacote yum-utils

As ferramentas fornecidas por yum-utils estão listadas em sua página de manual:

man yum-utils

Aqui estão 10 desses utilitários yum que achamos que você estaria interessado:

1. Depure um pacote

debuginfo-install instala os pacotes debuginfo (e suas dependências) necessários para depurar em caso de falha ou ao desenvolver aplicativos que usam um determinado pacote.

Para depurar um pacote (ou qualquer outro executável), também precisaremos instalar o gdb (o depurador GNU) e usá-lo para iniciar um programa em modo de depuração.

Por exemplo:

gdb $(which postfix)

O comando acima iniciará um shell gdb onde podemos digitar as ações a serem executadas. Por exemplo, run (como mostrado na imagem abaixo) iniciará o programa, enquanto bt (não mostrado) exibirá o rastreamento de pilha (também conhecido como backtrace ) do programa, que fornecerá uma lista de chamadas de função que levaram a um determinado ponto na execução do programa (usando essas informações, tanto os desenvolvedores quanto os administradores do sistema podem descobrir o que deu errado em caso de falha).

Outras ações disponíveis e seus resultados esperados estão listados em man gdb.

2. Encontre o repositório de pacotes instalados

O comando a seguir mostra de qual repositório os pacotes atualmente instalados foram instalados:

find-repos-of-install httpd postfix dovecot

Se executado sem argumentos, find-repos-of-install retornará a lista completa de pacotes atualmente instalados.

3. Remova pacotes duplicados ou órfãos

package-cleanup gerencia a limpeza de pacotes, duplicatas, pacotes órfãos (programas instalados de uma fonte diferente dos repositórios atualmente configurados) e outras inconsistências de dependências, incluindo a remoção de kernels antigos, conforme mostrado no exemplo a seguir:

package-cleanup --orphans
package-cleanup --oldkernels

Você não precisa se preocupar com o último comando danificando seu kernel. Isso afetará apenas pacotes de kernel antigos (versões mais antigas que a atualmente em execução) que não são mais necessários.

4. Descubra a lista de dependências de pacotes

repo-graph retorna uma lista completa de dependências de pacotes no formato ponto para todos os pacotes que estão disponíveis nos repositórios configurados. Alternativamente, repo-graph pode retornar as mesmas informações por repositório se usado com a opção --repoid=.

Por exemplo, vamos ver as dependências de cada pacote no repositório de atualizações:

repo-graph --repoid=updates | less

No comando acima estamos enviando a saída do repo-graph para less para facilitar a visualização, mas você pode alternativamente redirecioná-lo para um arquivo local para inspeção posterior:

repo-graph --repoid=updates > updates-dependencies.txt

Em ambos os casos, podemos ver que o pacote iputils depende de systemd e openssl-libs.

5. Lista de verificação de dependências não resolvidas

repoclosure lê os metadados dos repositórios configurados, verifica as dependências dos pacotes incluídos neles e exibe uma lista de dependências não resolvidas para cada pacote:

repoclosure

6. Como verificar os pacotes mais recentes ou mais antigos em um diretório

repomanage consulta um diretório com pacotes rpm e retorna uma lista dos pacotes mais novos ou mais antigos em um diretório. Esta ferramenta pode ser útil se você tiver um diretório onde armazena vários pacotes .rpm de programas diferentes.

Quando executado sem argumentos, repomanage retorna os pacotes mais recentes. Se executado com a flag --old, ele retornará os pacotes mais antigos:

ls -l
cd rpms
ls -l rpms
repomanage rpms

Observe que alterar o nome dos pacotes rpm NÃO afetará o funcionamento do repomanage.

7. Consulte os repositórios Yum para obter informações sobre o pacote

repoquery consulta os repositórios yum e obtém informações adicionais sobre os pacotes, estejam eles instalados ou não (dependências, arquivos incluídos no pacote e muito mais).

Por exemplo, htop (Linux Process Monitoring) não está instalado atualmente neste sistema, como você pode ver abaixo:

which htop
rpm -qa | grep htop

Agora suponha que queiramos listar as dependências do htop, junto com os arquivos que estão incluídos em uma instalação padrão. Para fazer isso, execute os dois comandos a seguir, respectivamente:

repoquery --requires htop
repoquery --list htop

8. Despeje todos os pacotes RPM instalados em um arquivo Zip

yum-debug-dump permite que você despeje uma lista completa de todos os pacotes que você instalou, todos os pacotes disponíveis em qualquer repositório, configurações importantes e informações do sistema em um arquivo compactado.

Isso pode ser útil caso você queira depurar um problema que ocorreu. Para nossa conveniência, yum-debug-dump nomeia o arquivo como yum_debug_dump--, o que nos permite rastrear as alterações ao longo do tempo .

yum-debug-dump

Como acontece com qualquer arquivo de texto compactado, podemos visualizar seu conteúdo usando o comando zless:

zless yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

Caso precise restaurar as informações de configuração fornecidas por yum-debug-dump, você pode usar yum-debug-restore para fazer isso:

yum-debug-restore yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

9. Baixando RPMs de origem dos repositórios Yum

yumdownloader baixa arquivos RPM de origem dos repositórios, incluindo suas dependências. Útil para criar um repositório de rede para ser acessado de outras máquinas com acesso restrito à Internet.

Yumdownloader permite que você baixe não apenas os RPMs binários, mas também os de origem (se usado com a opção --source).

Por exemplo, vamos criar um diretório chamado htop-files onde armazenaremos os RPM(s) necessários para instalar o programa usando rpm. Para fazer isso, precisamos usar a opção --resolve junto com o yumdownloader:

mkdir htop-files
cd htop-files
yumdownloader --resolve htop
rpm -Uvh 

10. Sincronize um repositório Yum remoto com um diretório local

reposync está intimamente relacionado ao yumdownloader (na verdade, eles suportam quase as mesmas opções), mas oferece uma vantagem considerável. Em vez de baixar arquivos RPM binários ou de origem, ele sincroniza um repositório remoto com um diretório local.

Vamos sincronizar o conhecido repositório EPEL com um subdiretório chamado epel-local dentro do diretório de trabalho atual:

man reposync
mkdir epel-local
reposync --repoid=epel --download_path=epel-local

Observe que este processo demorará um pouco, pois está baixando os pacotes 8867:

Assim que a sincronização for concluída, vamos verificar a quantidade de espaço em disco usado pelo nosso espelho recém-criado do repositório EPEL usando o comando du:

du -sch epel-local/*

Agora cabe a você decidir se deseja manter este espelho EPEL ou usá-lo para instalar pacotes em vez de usar um espelho remoto. No primeiro caso, lembre-se de que você precisará modificar /etc/yum.repos.d/epel.repo adequadamente.

11. Corrigir transações Yum inacabadas ou abortadas

yum-complete-transaction é uma parte do programa yum-utils que captura transações yum inacabadas ou abortadas em um sistema e tenta completá-las.

Por exemplo, quando atualizamos os servidores Linux através do gerenciador de pacotes yum, às vezes ele lança uma mensagem de aviso que diz o seguinte:

Existem transações inacabadas restantes. Você pode considerar executar yum-complete-transaction primeiro para finalizá-los.

Para corrigir essas mensagens de aviso e resolver esse problema, o comando yum-complete-transaction entra em cena para completar as transações inacabadas, ele encontra aquelas transações yum incompletas ou abortadas em transaction-all* arquivos e transaction-done* que podem ser encontrados no diretório /var/lib/yum.

Execute o comando yum-complete-transaction para finalizar transações yum incompletas:


yum-complete-transaction --cleanup-only

Agora os comandos yum serão executados sem os avisos de transação incompleta.


yum update

Nota: Esta dica é sugerida por um de nossos leitores regulares, o Sr. Tomas na seção de comentários aqui.

Resumo

Neste artigo cobrimos alguns dos utilitários mais úteis fornecidos pelo yum-utils. Para obter uma lista completa, você pode consultar a página de manual (man yum-utils).

Além disso, cada uma dessas ferramentas tem uma página de manual separada (veja man reposync, por exemplo), que é a principal fonte de documentação que você deve consultar se quiser saber mais sobre elas.

Se você reservar um minuto para verificar a página de manual do yum-utils, talvez você encontre outra ferramenta que gostaria que abordássemos com mais detalhes em um artigo separado. Em caso afirmativo, ou se você tiver dúvidas, comentários ou sugestões sobre este artigo, sinta-se à vontade para nos informar qual deles, enviando-nos uma mensagem usando o formulário de comentários abaixo.