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 |
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
, ondePATTERN
é aquilo que você está buscando. Por exemplo,dnf search unzip
mostra todos os pacotes que contêm a palavraunzip
no nome ou descrição. - Obter informações sobre um pacote
-
dnf info PACKAGENAME
- Instalar pacotes
-
dnf install PACKAGENAME
, ondePACKAGENAME
é 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 |
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
-
Usando o
rpm
em um sistema Red Hat Enterprise Linux, como você instalaria o pacotefile-roller-3.28.1-2.el7.x86_64.rpm
de maneira a exibir uma barra de progresso durante a instalação? -
Usando o
rpm
, descubra qual pacote contém o arquivo/etc/redhat-release
. -
Como você usaria o
yum
para procurar atualizações para todos os pacotes do sistema? -
Usando o
zypper
, como desabilitaríamos um repositório chamado repo-extras? -
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
-
Como usar o
zypper
para descobrir qual pacote possui o arquivo/usr/sbin/swapon
? -
Como obter uma lista de todos os pacotes instalados no sistema usando o
dnf
? -
Usando o
dnf
, qual o comando para adicionar um repositório localizado emhttps://www.example.url/home:reponame.repo
ao sistema? -
Como podemos usar o
zypper
para conferir se o pacoteunzip
está instalado? -
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
, ozypper
e odnf
. -
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
-
Usando o
rpm
em um sistema Red Hat Enterprise Linux, como você instalaria o pacotefile-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
. -
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
. -
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
. -
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
. -
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
-
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
. -
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
. -
Usando o
dnf
, qual o comando para adicionar um repositório localizado emhttps://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
. -
Como podemos usar o
zypper
para conferir se o pacoteunzip
está instalado?Precisamos fazer uma busca (
se
) nos pacotes instalados (-i
):zypper se -i unzip
. -
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
.