Linux Professional Institute Learning Logo.
Ir para o conteúdo principal
  • Home
    • Todos os recursos
    • LPI Materiais Didáticos
    • Colabore Conosco
    • Publishing Partners
    • Seja um Publishing Partner
    • Quem Somos
    • FAQ
    • Colaboradores
    • Contato
  • LPI.org
102.5 Lição 1
Tópico 101: Arquitetura de Sistema
101.1 Identificar e editar configurações de hardware
  • 101.1 Lição 1
101.2 Início (boot) do sistema
  • 101.2 Lição 1
101.3 Alternar runlevels/boot targets, desligar e reiniciar o sistema
  • 101.3 Lição 1
Tópico 102: Instalação do Linux e administração de Pacotes
102.1 Dimensionar partições de disco
  • 102.1 Lição 1
102.2 Instalar o gerenciador de inicialização
  • 102.2 Lição 1
102.3 Controle de bibliotecas compartilhadas
  • 102.3 Lição 1
102.4 Utilização do sistema de pacotes Debian
  • 102.4 Lição 1
102.5 Utilização do sistema de pacotes RPM e YUM
  • 102.5 Lição 1
102.6 Linux virtualizado
  • 102.6 Lição 1
Tópico 103: Comandos GNU e Unix
103.1 Trabalhar na linha de comando
  • 103.1 Lição 1
  • 103.1 Lição 2
103.2 Processar fluxos de texto usando filtros
  • 103.2 Lição 1
103.3 Gerenciamento básico de arquivos
  • 103.3 Lição 1
  • 103.3 Lição 2
103.4 Fluxos, pipes (canalização) e redirecionamentos de saída
  • 103.4 Lição 1
  • 103.4 Lição 2
103.5 Criar, monitorar e finalizar processos
  • 103.5 Lição 1
  • 103.5 Lição 2
103.6 Modificar a prioridade de execução de um processo
  • 103.6 Lição 1
103.7 Procurar em arquivos de texto usando expressões regulares
  • 103.7 Lição 1
  • 103.7 Lição 2
103.8 Edição básica de arquivos com o vi
  • 103.8 Lição 1
Tópico 104: Dispositivos, sistemas de arquivos Linux e padrão FHS
104.1 Criar partições e sistemas de arquivos
  • 104.1 Lição 1
104.2 Manutenção da integridade de sistemas de arquivos
  • 104.2 Lição 1
104.3 Controle da montagem e desmontagem dos sistemas de arquivos
  • 104.3 Lição 1
104.5 Controlar permissões e propriedades de arquivos
  • 104.5 Lição 1
104.6 Criar e alterar links simbólicos e hardlinks
  • 104.6 Lição 1
104.7 Encontrar arquivos de sistema e conhecer sua localização correta
  • 104.7 Lição 1
How to get certified
  1. Tópico 102: Instalação do Linux e administração de Pacotes
  2. 102.5 Utilização do sistema de pacotes RPM e YUM
  3. 102.5 Lição 1

102.5 Lição 1

Certificação:

LPIC-1

Versão:

5.0

Tópico:

102 Instalação do Linux e gerenciamento de pacotes

Objetivo:

102.5 Uso e gerenciamento de pacotes com RPM e YUM

Lição:

1 de 1

Introdução

Há muito tempo, quando o Linux ainda estava em sua primeira infância, a maneira mais comum de distribuir software era um arquivo comprimido (geralmente um arquivo .tar.gz) com código-fonte que o usuário precisava descomprimir e compilar.

No entanto, à medida que aumentava a quantidade e a complexidade do software, ficou clara a necessidade de uma maneira de distribuir software pré-compilado. Afinal, nem todos dispunham dos recursos necessários, tanto de tempo quanto de poder de computação, para compilar projetos grandes como o kernel do Linux ou um X Server.

Nasceu assim uma busca para padronizar uma maneira de distribuir esses “pacotes”' de software, e os primeiros gerenciadores de pacotes nasceram. Essas ferramentas facilitaram muito a tarefa de instalar, configurar ou remover software de um sistema.

Um deles era o RPM Package Manager e sua ferramenta de pacote (rpm), desenvolvida pela Red Hat. Hoje, eles são amplamente utilizados não somente no próprio Red Hat Enterprise Linux (RHEL), mas também em seus descendentes, como o Fedora, CentOS e Oracle Linux, outras distribuições como o openSUSE e até mesmo outros sistemas operacionais, como o AIX da IBM.

Outras ferramentas de gerenciamento de pacotes populares nas distribuições compatíveis com o Red Hat são o yum (YellowDog Updater Modified), o dnf (Dandified YUM) e o zypper, capazes de otimizar muitos dos aspectos da instalação, manutenção e remoção de pacotes, facilitando bastante o gerenciamento deles.

Nesta lição, você aprenderá a usar o rpm, o yum, o dnf e o zypper para obter, instalar, gerenciar e remover software em um sistema Linux.

Note

Apesar de usar o mesmo formato de pacote, existem diferenças internas entre as distribuições, de modo que um pacote feito especificamente para o openSUSE pode não funcionar em um sistema RHEL e vice-versa. Ao procurar por pacotes, verifique sempre a compatibilidade e, se possível, tente encontrar um que seja personalizado para sua distribuição específica.

O RPM Package Manager (rpm)

O RPM Package Manager (rpm) é a ferramenta essencial para gerenciar pacotes de software em sistemas baseados (ou derivados) no Red Hat.

Instalando, atualizando e removendo pacotes

A operação mais básica é a instalação de um pacote, o que pode ser feito com:

# rpm -i PACKAGENAME

Onde PACKAGENAME é o nome do pacote .rpm que se deseja instalar.

Se existir uma versão anterior de um pacote no sistema, será possível atualizar para uma versão mais recente usando o parâmetro -U:

# rpm -U PACKAGENAME

Se não houver uma versão anterior do PACKAGENAME, uma nova cópia será instalada. Para evitar isso e apenas atualizar um pacote que esteja instalado, use a opção -F.

Em ambas as operações, o parâmetro -v permite obter uma saída detalhada (mais informações são mostradas durante a instalação) e -h permite exibir símbolos de hash (#) como ajuda visual para acompanhar o progresso da instalação. Vários parâmetros podem ser combinados em um; portanto, rpm -i -v -h é o mesmo que rpm -ivh. Para remover um pacote instalado, passe o parâmetro -e (como em “erase”, apagar) para o rpm, seguido pelo nome do pacote que se deseja remover:

# rpm -e wget

Se um pacote instalado depender do pacote que está sendo removido, aparecerá uma mensagem de erro:

# rpm -e unzip
error: Failed dependencies:
	/usr/bin/unzip is needed by (installed) file-roller-3.28.1-2.el7.x86_64

Para concluir a operação, primeiro é necessário remover os pacotes que dependem daquele que se deseja remover (no exemplo acima, file-roller). Podemos passar vários nomes de pacotes para o rpm -e para remover vários pacotes de uma só vez.

Como gerenciar as dependências

Muitas vezes, um pacote pode depender de outros para funcionar como pretendido. Por exemplo, um editor de imagens pode precisar de bibliotecas para abrir arquivos JPG, ou um utilitário pode precisar de um kit de ferramentas de widget como o Qt ou o GTK para sua interface de usuário.

O rpm verifica se essas dependências estão instaladas em seu sistema; se não estiverem, ele não conseguirá instalar o pacote. Nesse caso, o rpm lista os pacotes faltantes. No entanto, ele não pode resolver dependências sozinho.

No exemplo abaixo, o usuário tentou instalar o pacote do editor de imagens GIMP, mas algumas dependências estavam ausentes:

# rpm -i gimp-2.8.22-1.el7.x86_64.rpm
error: Failed dependencies:
	babl(x86-64) >= 0.1.10 is needed by gimp-2:2.8.22-1.el7.x86_64
	gegl(x86-64) >= 0.2.0 is needed by gimp-2:2.8.22-1.el7.x86_64
	gimp-libs(x86-64) = 2:2.8.22-1.el7 is needed by gimp-2:2.8.22-1.el7.x86_64
	libbabl-0.1.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
	libgegl-0.2.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
	libgimp-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
	libgimpbase-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
	libgimpcolor-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
	libgimpconfig-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
	libgimpmath-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
	libgimpmodule-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
	libgimpthumb-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
	libgimpui-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
	libgimpwidgets-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
	libmng.so.1()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
	libwmf-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
	libwmflite-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64

Cabe ao usuário encontrar os pacotes .rpm com as dependências correspondentes e instalá-los. Os gerenciadores de pacotes como o yum, zypper e dnf têm ferramentas que informam qual pacote fornece um arquivo específico. Falaremos deles mais adiante nesta lição.

Listando os pacotes instalados

Para obter uma lista de todos os pacotes instalados em seu sistema, use rpm -qa (o nome vem de “query all”).

# rpm -qa
selinux-policy-3.13.1-229.el7.noarch
pciutils-libs-3.5.1-3.el7.x86_64
redhat-menus-12.0.2-8.el7.noarch
grubby-8.28-25.el7.x86_64
hunspell-en-0.20121024-6.el7.noarch
dejavu-fonts-common-2.33-6.el7.noarch
xorg-x11-drv-dummy-0.3.7-1.el7.1.x86_64
libevdev-1.5.6-1.el7.x86_64
[...]

Obtendo informações sobre um pacote

Para obter informações sobre um pacote instalado, como o número de versão, arquitetura, data de instalação, empacotador, resumo etc., use rpm com os parâmetros -qi (o nome vem de “query info”), seguido pelo nome do pacote. Por exemplo:

# rpm -qi unzip
Name        : unzip
Version     : 6.0
Release     : 19.el7
Architecture: x86_64
Install Date: Sun 25 Aug 2019 05:14:39 PM EDT
Group       : Applications/Archiving
Size        : 373986
License     : BSD
Signature   : RSA/SHA256, Wed 25 Apr 2018 07:50:02 AM EDT, Key ID 24c6a8a7f4a80eb5
Source RPM  : unzip-6.0-19.el7.src.rpm
Build Date  : Wed 11 Apr 2018 01:24:53 AM EDT
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.info-zip.org/UnZip.html
Summary     : A utility for unpacking zip files
Description :
The unzip utility is used to list, test, or extract files from a zip
archive. Zip archives are commonly found on MS-DOS systems. The zip
utility, included in the zip package, creates zip archives. Zip and
unzip are both compatible with archives created by PKWARE(R)'s PKZIP
for MS-DOS, but the programs' options and default behaviors do differ
in some respects.

Instale o pacote unzip se precisar listar, testar ou extrair arquivos de um arquivo zip.

Para ver uma lista dos arquivos que estão dentro de um pacote instalado, use os parâmetros -ql (ou seja, “query list”) seguido pelo nome do pacote:

# rpm -ql unzip
/usr/bin/funzip
/usr/bin/unzip
/usr/bin/unzipsfx
/usr/bin/zipgrep
/usr/bin/zipinfo
/usr/share/doc/unzip-6.0
/usr/share/doc/unzip-6.0/BUGS
/usr/share/doc/unzip-6.0/LICENSE
/usr/share/doc/unzip-6.0/README
/usr/share/man/man1/funzip.1.gz
/usr/share/man/man1/unzip.1.gz
/usr/share/man/man1/unzipsfx.1.gz
/usr/share/man/man1/zipgrep.1.gz
/usr/share/man/man1/zipinfo.1.gz

Se quiser informações ou uma lista de arquivos de um pacote que ainda não foi instalado, basta adicionar o parâmetro -p aos comandos acima, seguido pelo nome do arquivo RPM (FILENAME). Assim, rpm -qi PACKAGENAME se torna rpm -qip FILENAME, e rpm -ql PACKAGENAME se torna rpm -qlp FILENAME, como mostrado abaixo.

# rpm -qip atom.x86_64.rpm
Name        : atom
Version     : 1.40.0
Release     : 0.1
Architecture: x86_64
Install Date: (not installed)
Group       : Unspecified
Size        : 570783704
License     : MIT
Signature   : (none)
Source RPM  : atom-1.40.0-0.1.src.rpm
Build Date  : sex 09 ago 2019 12:36:31 -03
Build Host  : b01bbeaf3a88
Relocations : /usr
URL         : https://atom.io/
Summary     : A hackable text editor for the 21st Century.
Description :
A hackable text editor for the 21st Century.
# rpm -qlp atom.x86_64.rpm
/usr/bin/apm
/usr/bin/atom
/usr/share/applications/atom.desktop
/usr/share/atom
/usr/share/atom/LICENSE
/usr/share/atom/LICENSES.chromium.html
/usr/share/atom/atom
/usr/share/atom/atom.png
/usr/share/atom/blink_image_resources_200_percent.pak
/usr/share/atom/content_resources_200_percent.pak
/usr/share/atom/content_shell.pak

(listing goes on)

Descobrindo qual pacote possui um arquivo específico

Para descobrir qual pacote instalado possui um arquivo, use o -qf (ou seja, “query file”) seguido pelo caminho completo para o arquivo:

# rpm -qf /usr/bin/unzip
unzip-6.0-19.el7.x86_64

No exemplo acima, o arquivo /usr/bin/unzip pertence ao pacote unzip-6.0-19.el7.x86_64.

YellowDog Updater Modified (YUM)

O yum foi originalmente desenvolvido como Yellow Dog Updater (YUP), uma ferramenta para gerenciamento de pacotes na distribuição Linux Yellow Dog. Com o tempo, evoluiu para gerenciar pacotes em outros sistemas baseados em RPM, como Fedora, CentOS, Red Hat Enterprise Linux e Oracle Linux.

Em termos de funcionalidade, ele é semelhante ao utilitário apt dos sistemas baseados em Debian, sendo capaz de buscar, instalar, atualizar e remover pacotes, além de gerir automaticamente as dependências. O yum pode ser usado para instalar um único pacote ou para atualizar um sistema inteiro de uma vez só.

Buscando pacotes

Para instalar um pacote, temos de saber o nome dele. Para isso, podemos realizar uma pesquisa com yum search PATTERN, onde PATTERN é o nome do pacote que se está procurando. O resultado é uma lista de pacotes cujo nome ou resumo contém o padrão de pesquisa especificado. Por exemplo, se você precisar de um utilitário para lidar com arquivos compactados 7Zip (com a extensão .7z), poderia usar:

# yum search 7zip
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.ufscar.br
 * epel: mirror.globo.com
 * extras: mirror.ufscar.br
 * updates: mirror.ufscar.br
=========================== N/S matchyutr54ed: 7zip ============================
p7zip-plugins.x86_64 : Additional plugins for p7zip
p7zip.x86_64 : Very high compression ratio file archiver
p7zip-doc.noarch : Manual documentation and contrib directory
p7zip-gui.x86_64 : 7zG - 7-Zip GUI version

  Name and summary matches only, use "search all" for everything.

Instalando, atualizando e removendo pacotes

Para instalar um pacote usando o yum, use o comando yum install PACKAGENAME, onde PACKAGENAME é o nome do pacote. O yum busca o pacote e as dependências correspondentes em um repositório online e instala tudo no sistema.

# yum install p7zip
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.ufscar.br
 * epel: mirror.globo.com
 * extras: mirror.ufscar.br
 * updates: mirror.ufscar.br
Resolving Dependencies
--> Running transaction check
---> Package p7zip.x86_64 0:16.02-10.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================
 Package        Arch            Version               Repository     Size
==========================================================================
Installing:
 p7zip          x86_64          16.02-10.el7          epel          604 k

Transaction Summary
==========================================================================
Install  1 Package

Total download size: 604 k
Installed size: 1.7 M
Is this ok [y/d/N]:

Para atualizar um pacote instalado, use yum update PACKAGENAME, onde PACKAGENAME é o nome do pacote que se deseja atualizar. Por exemplo:

# yum update wget
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.ufscar.br
 * epel: mirror.globo.com
 * extras: mirror.ufscar.br
 * updates: mirror.ufscar.br
Resolving Dependencies
--> Running transaction check
---> Package wget.x86_64 0:1.14-18.el7 will be updated
---> Package wget.x86_64 0:1.14-18.el7_6.1 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================
 Package     Arch          Version                   Repository      Size
==========================================================================
Updating:
 wget        x86_64        1.14-18.el7_6.1           updates        547 k

Transaction Summary
==========================================================================
Upgrade  1 Package

Total download size: 547 k
Is this ok [y/d/N]:

Se você omitir o nome de um pacote, poderá atualizar todos os pacotes no sistema para os quais exista uma atualização disponível.

Para verificar se há uma atualização disponível para um pacote específico, use yum check-update PACKAGENAME. Como antes, se você omitir o nome do pacote, o yum procurará atualizações para todos os pacotes instalados no sistema.

Para remover um pacote instalado, use yum remove PACKAGENAME, onde PACKAGENAME é o nome do pacote que se deseja remover.

Como encontrar o pacote que fornece um arquivo específico

Em um exemplo anterior, mostramos uma tentativa de instalar o editor de imagens gimp, que falhou devido a dependências não atendidas. No entanto, o rpm mostra quais arquivos estão faltando, mas não lista o nome dos pacotes que os fornecem.

Por exemplo, uma das dependências ausentes era libgimpui-2.0.so.0. Para ver qual pacote o fornece, usamos yum whatprovides, seguido pelo nome do arquivo que estamos procurando:

# yum whatprovides libgimpui-2.0.so.0
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.ufscar.br
 * epel: mirror.globo.com
 * extras: mirror.ufscar.br
 * updates: mirror.ufscar.br
2:gimp-libs-2.8.22-1.el7.i686 : GIMP libraries
Repo        : base
Matched from:
Provides    : libgimpui-2.0.so.0

A resposta é gimp-libs-2.8.22-1.el7.i686. Em seguida podemos instalar o pacote com o comando yum install gimp-libs.

Isso também funciona para arquivos já existentes no seu sistema. Por exemplo, para saber de onde o arquivo /etc/hosts veio, você pode usar:

# yum whatprovides /etc/hosts
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.ufscar.br
 * epel: mirror.globo.com
 * extras: mirror.ufscar.br
 * updates: mirror.ufscar.br
setup-2.8.71-10.el7.noarch : A set of system configuration and setup files
Repo        : base
Matched from:
Filename    : /etc/hosts

A resposta é setup-2.8.71-10.el7.noarch.

Obtendo informações sobre um pacote

Para obter informações sobre um pacote, como versão, arquitetura, descrição, tamanho e mais, use yum info PACKAGENAME, onde PACKAGENAME é o nome do pacote sobre o qual você deseja informações:

# yum info firefox
Last metadata expiration check: 0:24:16 ago on Sat 21 Sep 2019 02:39:43 PM -03.
Installed Packages
Name         : firefox
Version      : 69.0.1
Release      : 3.fc30
Architecture : x86_64
Size         : 268 M
Source       : firefox-69.0.1-3.fc30.src.rpm
Repository   : @System
From repo    : updates
Summary      : Mozilla Firefox Web browser
URL          : https://www.mozilla.org/firefox/
License      : MPLv1.1 or GPLv2+ or LGPLv2+
Description  : Mozilla Firefox is an open-source web browser, designed
             : for standards compliance, performance and portability.

Administrando os repositórios de software

Para o yum, os “repos” estão listados no diretório /etc/yum.repos.d/. Cada repositório é representado por um arquivo .repo, como CentOS-Base.repo.

Repositórios adicionais podem ser incluídos pelo usuário acrescentando um arquivo .repo no diretório mencionado acima, ou no final de /etc/yum.conf. No entanto, a maneira recomendada de adicionar ou gerenciar repositórios é usar a ferramenta yum-config-manager.

Para adicionar um repositório, use o parâmetro --add-repo, seguido da URL para um arquivo .repo.

# yum-config-manager --add-repo https://rpms.remirepo.net/enterprise/remi.repo
Loaded plugins: fastestmirror, langpacks
adding repo from: https://rpms.remirepo.net/enterprise/remi.repo
grabbing file https://rpms.remirepo.net/enterprise/remi.repo to /etc/yum.repos.d/remi.repo
repo saved to /etc/yum.repos.d/remi.repo

Para obter uma lista de todos os repositórios disponíveis, use yum repolist all. A saída obtida será semelhante a esta:

# yum repolist all
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.ufscar.br
 * epel: mirror.globo.com
 * extras: mirror.ufscar.br
 * updates: mirror.ufscar.br
repo id                       repo name                    status
updates/7/x86_64              CentOS-7 - Updates           enabled:  2,500
updates-source/7              CentOS-7 - Updates Sources   disabled

Os repositórios disabled (desabilitados) serão ignorados ao instalar ou atualizar o software. Para habilitar ou desabilitar um repositório, use o utilitário yum-config-manager, seguido pelo ID do repositório.

Na saída acima, a identidade do repositório é mostrada na primeira coluna (repo id) de cada linha. Usamos apenas a parte anterior ao primeiro /, de forma que o id do repositório CentOS-7 - Updates é updates, e não updates/7/x86_64.

# yum-config-manager --disable updates

O comando acima desabilita o repositório updates. Para reativá-lo, use:

# yum-config-manager --enable updates
Note

O Yum armazena os pacotes baixados e os metadados associados em um diretório de cache (geralmente /var/cache/yum). À medida que o sistema é atualizado e novos pacotes são instalados, essa cache pode ficar bem grande. Para limpar a cache e recuperar o espaço em disco, podemos usar o comando yum clean, seguido pelo que deve ser removido. Os parâmetros mais úteis são packages (yum clean packages) para excluir pacotes baixados e metadata (yum clean metadata) para excluir os metadados associados. Consulte a página de manual do yum (digite man yum) para obter mais informações.

DNF

O dnf, a ferramenta de gerenciamento de pacotes usada no Fedora, é um fork do yum. Como tal, muitos dos comandos e parâmetros são semelhantes. Esta seção oferece apenas uma visão geral rápida do dnf.

Busca de pacotes

dnf search PATTERN, onde PATTERN é aquilo que você está buscando. Por exemplo, dnf search unzip mostra todos os pacotes que contêm a palavra unzip no nome ou descrição.

Obter informações sobre um pacote

dnf info PACKAGENAME

Instalar pacotes

dnf install PACKAGENAME, onde PACKAGENAME é o nome do pacote que se deseja instalar. Para encontrar o nome, faça uma busca.

Remover pacotes

dnf remove PACKAGENAME

Atualizar pacotes

dnf upgrade PACKAGENAME para atualizar um só pacote. Omita o nome do pacote para atualizar todos os pacotes do sistema.

Descobrir qual pacote fornece um arquivo específico

dnf provides FILENAME

Obter uma lista de todos os pacotes instalados no sistema

dnf list --installed

Listar o conteúdo de um pacote

dnf repoquery -l PACKAGENAME

Note

O dnf tem um sistema de ajuda embutido que mostra mais informações (como parâmetros extras) para cada comando. Para usá-lo, digite dnf help seguido pelo comando, como dnf help install.

Administrando os repositórios de software

Como no caso do yum e do zypper, o dnf trabalha com repositórios de software (repos). Cada distribuição tem uma lista de repositórios padrão e os administradores podem adicionar ou remover repositórios conforme necessário.

Para obter uma lista de todos os repositórios disponíveis, use dnf repolist. Para listar apenas os repositórios ativados, adicione a opção --enabled e, para listar apenas os repositórios desativados, adicione a opção --disabled.

# dnf repolist
Last metadata expiration check: 0:20:09 ago on Sat 21 Sep 2019 02:39:43 PM -03.
repo id                    repo name                                      status
*fedora                    Fedora 30 - x86_64                             56,582
*fedora-modular            Fedora Modular 30 - x86_64                        135
*updates                   Fedora 30 - x86_64 - Updates                   12,774
*updates-modular           Fedora Modular 30 - x86_64 - Updates              145

Para adicionar um repositório, use dnf config-manager --add_repo URL, onde URL é a URL completa do repositório. Para habilitar um repositório, use dnf config-manager --set-enabled REPO_ID.

Da mesma forma, para desativar um repositório, use dnf config-manager --set-disabled REPO_ID. Nos dois casos, REPO_ID é o ID exclusivo do repositório, que pode ser obtido com dnf repolist. Os repositórios adicionados são ativados por padrão. Os repositórios são armazenados em arquivos .repo no diretório /etc/yum.repos.d/, com exatamente a mesma sintaxe usada para o yum.

Zypper

O zypper é a ferramenta de gerenciamento de pacotes usada no SUSE Linux e OpenSUSE. Em termos de recursos, é semelhante ao apt e ao yum, sendo capaz de instalar, atualizar e remover pacotes de um sistema, com resolução automática de dependências.

Atualizando o índice do pacote

A exemplo de outras ferramentas de gerenciamento de pacotes, o zypper trabalha com repositórios que contêm pacotes e metadados. Esses metadados precisam ser atualizados periodicamente para que o utilitário fique a par dos pacotes mais recentes disponíveis. Para fazer uma atualização, basta digitar:

# zypper refresh
Repository 'Non-OSS Repository' is up to date.
Repository 'Main Repository' is up to date.
Repository 'Main Update Repository' is up to date.
Repository 'Update Repository (Non-Oss)' is up to date.
All repositories have been refreshed.

O zypper possui um recurso de atualização automática que pode ser ativado caso a caso, ou seja, alguns repositórios poderão ser atualizados automaticamente antes de uma consulta ou da instalação de um pacote, e outros poderão precisar ser atualizados manualmente. Vamos ensinar a controlar esse recurso em breve.

Buscando pacotes

Para procurar um pacote, use o operador search (ou se), seguido pelo nome do pacote:

# zypper se gnumeric
Loading repository data...
Reading installed packages...

S | Name           | Summary                           | Type
--+----------------+-----------------------------------+--------
  | gnumeric       | Spreadsheet Application           | package
  | gnumeric-devel | Spreadsheet Application           | package
  | gnumeric-doc   | Documentation files for Gnumeric  | package
  | gnumeric-lang  | Translations for package gnumeric | package

O operador de pesquisa também serve para obter uma lista de todos os pacotes instalados no sistema. Para isso, use o parâmetro -i sem o nome do pacote, como em zypper se -i.

Para ver se um pacote específico está instalado, adicione o nome do pacote ao comando acima. Por exemplo, o seguinte comando buscará dentre os pacotes instalados por um que contenha “firefox” no nome:

# zypper se -i firefox
Loading repository data...
Reading installed packages...

S | Name                               | Summary                 | Type
--+------------------------------------+-------------------------+--------
i | MozillaFirefox                     | Mozilla Firefox Web B-> | package
i | MozillaFirefox-branding-openSUSE   | openSUSE branding of -> | package
i | MozillaFirefox-translations-common | Common translations f-> | package

Para pesquisar apenas nos pacotes não-instalados, adicione o parâmetro -u ao operador se.

Instalando, atualizando e removendo pacotes

Para instalar um pacote de software, use o operador install (ou in), seguido pelo nome do pacote. Desta maneira:

# zypper in unrar
zypper in unrar
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
  unrar

1 new package to install.
Overall download size: 141.2 KiB. Already cached: 0 B. After the operation, additional 301.6 KiB will be used.
Continue? [y/n/v/...? shows all options] (y): y
Retrieving package unrar-5.7.5-lp151.1.1.x86_64
                                     (1/1), 141.2 KiB (301.6 KiB unpacked)
Retrieving: unrar-5.7.5-lp151.1.1.x86_64.rpm .......................[done]
Checking for file conflicts: .......................................[done]
(1/1) Installing: unrar-5.7.5-lp151.1.1.x86_64 .....................[done]

O zypper também pode ser usado para instalar um pacote RPM no disco enquanto tenta atender às dependências usando pacotes dos repositórios. Para isso, basta fornecer o caminho completo para o pacote em vez de apenas um nome de pacote, como em zypper in /home/john/newpackage.rpm.

Para atualizar os pacotes instalados no sistema, use zypper update. Como no caso do processo de instalação, aparece uma lista de pacotes a serem instalados/atualizados e o gerenciador pergunta se você deseja continuar.

Se quiser listar apenas as atualizações disponíveis, sem instalar nada, use zypper list-updates.

Para remover um pacote, use o operador remove (ou rm), seguido pelo nome do pacote:

# zypper rm unrar
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following package is going to be REMOVED:
  unrar

1 package to remove.
After the operation, 301.6 KiB will be freed.
Continue? [y/n/v/...? shows all options] (y): y
(1/1) Removing unrar-5.7.5-lp151.1.1.x86_64 ........................[done]

Lembre-se de que a remoção de um pacote também remove outros pacotes que dependem dele. Por exemplo:

# zypper rm libgimp-2_0-0
Loading repository data...
Warning: No repositories defined. Operating only with the installed resolvables. Nothing can be installed.
Reading installed packages...
Resolving package dependencies...

The following 6 packages are going to be REMOVED:
  gimp gimp-help gimp-lang gimp-plugins-python libgimp-2_0-0
  libgimpui-2_0-0

6 packages to remove.
After the operation, 98.0 MiB will be freed.
Continue? [y/n/v/...? shows all options] (y):

Descobrindo quais pacotes possuem um arquivo específico

Para ver quais pacotes contêm um arquivo específico, use o operador de pesquisa seguido pelo parâmetro --provides e o nome do arquivo (ou o caminho completo para ele). Por exemplo, para saber quais pacotes contêm o arquivo libgimpmodule-2.0.so.0 em `/usr/lib64/, usaríamos:

# zypper se --provides /usr/lib64/libgimpmodule-2.0.so.0
Loading repository data...
Reading installed packages...

S | Name          | Summary                                      | Type
--+---------------+----------------------------------------------+--------
i | libgimp-2_0-0 | The GNU Image Manipulation Program - Libra-> | package

Obtendo informações sobre um pacote

Para ver os metadados associados a um pacote, use o operador info seguido pelo nome do pacote. Serão exibidos o repositório de origem, nome do pacote, versão, arquitetura, fornecedor, tamanho instalado, se está instalado ou não, status (se está atualizado), o pacote de origem e uma descrição.

# zypper info gimp
Loading repository data...
Reading installed packages...

Information for package gimp:
 -----------------------------
Repository     : Main Repository
Name           : gimp
Version        : 2.8.22-lp151.4.6
Arch           : x86_64
Vendor         : openSUSE
Installed Size : 29.1 MiB
Installed      : Yes (automatically)
Status         : up-to-date
Source package : gimp-2.8.22-lp151.4.6.src
Summary        : The GNU Image Manipulation Program
Description    :
    The GIMP is an image composition and editing program, which can be
    used for creating logos and other graphics for Web pages. The GIMP
    offers many tools and filters, and provides a large image
    manipulation toolbox, including channel operations and layers,
    effects, subpixel imaging and antialiasing, and conversions, together
    with multilevel undo. The GIMP offers a scripting facility, but many
    of the included scripts rely on fonts that we cannot distribute.

Administrando os repositórios de software

O zypper também pode ser usado para gerenciar repositórios de software. Para ver uma lista de todos os repositórios atualmente registrados no seu sistema, use zypper repos:

# zypper repos
Repository priorities are without effect. All enabled repositories share the same priority.

#  | Alias                     | Name                               | Enabled | GPG Check | Refresh
---+---------------------------+------------------------------------+---------+-----------+--------
 1 | openSUSE-Leap-15.1-1      | openSUSE-Leap-15.1-1               | No      | ----      | ----
 2 | repo-debug                | Debug Repository                   | No      | ----      | ----
 3 | repo-debug-non-oss        | Debug Repository (Non-OSS)         | No      | ----      | ----
 4 | repo-debug-update         | Update Repository (Debug)          | No      | ----      | ----
 5 | repo-debug-update-non-oss | Update Repository (Debug, Non-OSS) | No      | ----      | ----
 6 | repo-non-oss              | Non-OSS Repository                 | Yes     | (r ) Yes  | Yes
 7 | repo-oss                  | Main Repository                    | Yes     | (r ) Yes  | Yes
 8 | repo-source               | Source Repository                  | No      | ----      | ----
 9 | repo-source-non-oss       | Source Repository (Non-OSS)        | No      | ----      | ----
10 | repo-update               | Main Update Repository             | Yes     | (r ) Yes  | Yes
11 | repo-update-non-oss       | Update Repository (Non-Oss)        | Yes     | (r ) Yes  | Yes

Na coluna Enabled vemos que alguns repositórios estão ativados e outros não. Para mudar isso, use o operador modifyrepo, seguido pelo parâmetro -e (enable) ou -d (disable) e pelo alias do repositório (a segunda coluna na saída acima).

# zypper modifyrepo -d repo-non-oss
Repository 'repo-non-oss' has been successfully disabled.

# zypper modifyrepo -e repo-non-oss
Repository 'repo-non-oss' has been successfully enabled.

Mencionamos anteriormente que o zypper possui um recurso de atualização automática que pode ser ativado caso a caso nos repositórios. Quando ativado, esse sinalizador faz com que o zypper execute uma operação de atualização (como se executássemos zypper refresh) antes de trabalhar com o repositório especificado. O processo pode ser controlado com os parâmetros -f e -F do operador modifyrepo:

# zypper modifyrepo -F repo-non-oss
Autorefresh has been disabled for repository 'repo-non-oss'.

# zypper modifyrepo -f repo-non-oss
Autorefresh has been enabled for repository 'repo-non-oss'.
Adicionando e removendo repositórios

Para adicionar um novo repositório de software para o zypper, use o operador addrepo seguido da URL e do nome do repositório, como abaixo:

# zypper addrepo http://packman.inode.at/suse/openSUSE_Leap_15.1/ packman
Adding repository 'packman' ........................................[done]
Repository 'packman' successfully added

URI         : http://packman.inode.at/suse/openSUSE_Leap_15.1/
Enabled     : Yes
GPG Check   : Yes
Autorefresh : No
Priority    : 99 (default priority)

Repository priorities are without effect. All enabled repositories share the same priority.

Ao adicionar um repositório, podemos ativar as atualizações automáticas com o parâmetro -f. Os repositórios adicionados são ativados por padrão, mas também é possível adicionar e desativar um repositório ao mesmo tempo usando o parâmetro -d. Para remover um repositório, use o operador removerepo seguido pelo nome do repositório (Alias). Para remover o repositório adicionado no exemplo acima, o comando seria:

# zypper removerepo packman
Removing repository 'packman' ......................................[done]
Repository 'packman' has been removed.

Exercícios Guiados

  1. Usando o rpm em um sistema Red Hat Enterprise Linux, como você instalaria o pacote file-roller-3.28.1-2.el7.x86_64.rpm de maneira a exibir uma barra de progresso durante a instalação?

  2. Usando o rpm, descubra qual pacote contém o arquivo /etc/redhat-release.

  3. Como você usaria o yum para procurar atualizações para todos os pacotes do sistema?

  4. Usando o zypper, como desabilitaríamos um repositório chamado repo-extras?

  5. Se tivermos um arquivo .repo descrevendo um novo repositório, onde esse arquivo deve ser colocado para poder ser reconhecido pelo DNF?

Exercícios Exploratórios

  1. Como usar o zypper para descobrir qual pacote possui o arquivo /usr/sbin/swapon?

  2. Como obter uma lista de todos os pacotes instalados no sistema usando o dnf?

  3. Usando o dnf, qual o comando para adicionar um repositório localizado em https://www.example.url/home:reponame.repo ao sistema?

  4. Como podemos usar o zypper para conferir se o pacote unzip está instalado?

  5. Usando o yum, descubra qual pacote fornece o arquivo /bin/wget.

Resumo

Nesta lição, você aprendeu:

  • Como usar o rpm para instalar, atualizar e remover pacotes.

  • Como usar o yum, o zypper e o dnf.

  • Como obter informações sobre um pacote.

  • Como obter uma lista do conteúdo do pacote.

  • Como descobrir de qual pacote veio um arquivo.

  • Como listar, adicionar, remover, habilitar ou desabilitar repositórios de software.

Os seguintes comandos foram abordados:

  • rpm

  • yum

  • dnf

  • zypper

Respostas aos Exercícios Guiados

  1. Usando o rpm em um sistema Red Hat Enterprise Linux, como você instalaria o pacote file-roller-3.28.1-2.el7.x86_64.rpm de maneira a exibir uma barra de progresso durante a instalação?

    Use o parâmetro -i para instalar um pacote e a opção -h para habilitar os “sinais de hash” mostrando o progresso da instalação. Assim, a resposta é: rpm -ih file-roller-3.28.1-2.el7.x86_64.rpm.

  2. Usando o rpm, descubra qual pacote contém o arquivo /etc/redhat-release.

    Estamos solicitando informações sobre um arquivo, por isso usamos o parâmetro -qf: rpm -qf /etc/redhat-release.

  3. Como você usaria o yum para procurar atualizações para todos os pacotes do sistema?

    Use a operação check-update sem um nome de pacote: yum check-update.

  4. Usando o zypper, como desabilitaríamos um repositório chamado repo-extras?

    Use a operação modifyrepo para alterar os parâmetros de um repositório, e o parâmetro -d para desabilitá-lo: zypper modifyrepo -d repo-extras.

  5. Se tivermos um arquivo .repo descrevendo um novo repositório, onde esse arquivo deve ser colocado para poder ser reconhecido pelo DNF?

    Os arquivos .repo para o DNF devem ser postos no mesmo local usado pelo YUM, dentro de /etc/yum.repos.d/.

Respostas aos Exercícios Exploratórios

  1. Como usar o zypper para descobrir qual pacote possui o arquivo /usr/sbin/swapon?

    Use o operador se (search) e o parâmetro --provides: zypper se --provides /usr/sbin/swapon.

  2. Como obter uma lista de todos os pacotes instalados no sistema usando o dnf?

    Use o operador list, seguido pelo parâmetro --installed: dnf list --installed.

  3. Usando o dnf, qual o comando para adicionar um repositório localizado em https://www.example.url/home:reponame.repo ao sistema?

    O trabalho com repositórios é uma “mudança de configurações”, por isso use o config-manager e o parâmetro --add_repo: dnf config-manager --add_repo https://www.example.url/home:reponame.repo.

  4. Como podemos usar o zypper para conferir se o pacote unzip está instalado?

    Precisamos fazer uma busca (se) nos pacotes instalados (-i): zypper se -i unzip.

  5. Usando o yum, descubra qual pacote fornece o arquivo /bin/wget.

    Para descobrir quem fornece um arquivo, use whatprovides e o nome do arquivo: yum whatprovides /bin/wget.

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

Próxima Lição

102.6 Linux virtualizado (102.6 Lição 1)

Ir para a próxima lição

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

A LPI é uma organização sem fins lucrativos.

© 2023 O Linux Professional Institute (LPI) é um organismo de apoio aos profissionais de Open Source e referência mundial em certificação. Com mais de 200.000 pessoas certificadas, somos o principal organismo de certificação independente para Linux e Open Source do mundo. O LPI certificou profissionais de mais de 180 países, oferece exames em diversos idiomas e tem centenas de parcerias de formação em todo o globo.

Nossa missão é proporcionar oportunidades econômicas e criativas para todos, tornando universalmente acessível a certificação de conhecimentos e competências em matéria de Open Source.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Entre em Contato
  • Política de Privacidade e Cookies

Encontrou um erro ou quer ajudar a aprimorar esta página? Escreva pra nós.

© 1999–2023 The Linux Professional Institute Inc. Todos os direitos reservados.