Ir para o conteúdoIr para navegação de página: página anterior [tecla de acesso p]/próxima página [tecla de acesso n]
documentation.suse.com / Documentação do SUSE Linux Enterprise Desktop / Guia de Administração / Tarefas comuns / Gerenciando software com ferramentas de linha de comando
Aplica-se a SUSE Linux Enterprise Desktop 15 SP6

9 Gerenciando software com ferramentas de linha de comando

Este capítulo descreve o Zypper e o RPM, duas ferramentas de linha de comando para gerenciar software. Para obter a definição da terminologia usada neste contexto (por exemplo, repository, patch ou update) consulte a Seção 8.1, “Definição de termos”.

9.1 Usando o zypper

Zypper é um gerenciador de pacotes de linha de comando para instalação, atualização e remoção de pacotes. Ele também gerencia repositórios. Ele é especialmente útil para realizar tarefas de gerenciamento remoto de software ou gerenciar software de scripts de shell.

9.1.1 Uso geral

A sintaxe geral do zypper é:

zypper [--global-options] COMMAND  [--command-options] [arguments]

Os componentes entre colchetes não são obrigatórios. Consulte zypper help para obter uma lista de opções gerais e todos os comandos. Para obter ajuda sobre determinado comando, digite zypper help COMMAND.

Comandos do Zypper

A maneira mais simples de executar o zypper é digitar seu nome seguido de um comando. Por exemplo, para aplicar todos os patches necessários ao sistema, use:

> sudo zypper patch
Opções globais

Você também pode escolher dentre uma ou mais opções globais, digitando-as logo antes do comando:

> sudo zypper --non-interactive patch

No exemplo acima, a opção --non-interactive significa que o comando é executado sem perguntar nada (aplicando as respostas padrão automaticamente).

Opções específicas do comando

Para usar as opções específicas de determinado comando, digite-as logo após o comando:

> sudo zypper patch --auto-agree-with-licenses

No exemplo acima, a opção --auto-agree-with-licenses é usada para aplicar todos os patches necessários a um sistema sem que você precise confirmar todas as licenças. Em vez disso, as licenças são aceitas automaticamente.

Argumentos

Alguns comandos requerem um ou mais argumentos. Por exemplo, ao usar o comando install, você precisa especificar qual pacote (ou pacotes) deseja instalar:

> sudo zypper install mplayer

Algumas opções também requerem um único argumento. O comando a seguir lista todos os padrões conhecidos:

> zypper search -t pattern

Você pode combinar todos os anteriores. Por exemplo, o comando a seguir instala os pacotes mc e vim do repositório factory durante o modo verboso:

> sudo zypper -v install --from factory mc vim

A opção --from mantém todos os repositórios habilitados (para resolução de dependências) enquanto solicita o pacote do repositório especificado. --repo é um álias para --from, e você pode usar qualquer um dos dois.

Quase todos os comandos zypper possuem uma opção dry-run que simula o comando indicado. Ela pode ser usada para fins de teste.

> sudo zypper remove --dry-run MozillaFirefox

O Zypper suporta a opção global --userdata STRING. É possível especificar uma string com essa opção, que é gravada nos arquivos de registro e plug-ins do Zypper (como o plug-in Btrfs). Ela pode ser usada para marcar e identificar transações nos arquivos de registro.

> sudo zypper --userdata STRING patch

9.1.2 Usando os subcomandos do Zypper

Os subcomandos do Zypper são executáveis armazenados no diretório especificado pela opção de configuração zypper_execdir. Por padrão, ele é /usr/lib/zypper/commands. Se um subcomando não for encontrado nesse local, o Zypper pesquisará por ele automaticamente no restante dos locais $PATH. Isso permite criar as próprias extensões locais e armazená-las no espaço do usuário.

A execução de subcomandos no shell do Zypper e o uso das opções globais do Zypper não são suportados.

Listar os subcomandos disponíveis:

> zypper help subcommand
[...]
Available zypper subcommands in '/usr/lib/zypper/commands'

  appstream-cache
  lifecycle
  migration
  search-packages

Zypper subcommands available from elsewhere on your $PATH

  log                   Zypper logfile reader
                            (/usr/sbin/zypper-log)

Exibir a tela de Ajuda de um subcomando:

> zypper help appstream-cache

9.1.3 Instalando e removendo software com o Zypper

Para instalar ou remover pacotes, use os seguintes comandos:

> sudo zypper install PACKAGE_NAME
> sudo zypper remove PACKAGE_NAME
Atenção
Atenção: Não remova os pacotes obrigatórios do sistema

Não remova pacotes obrigatórios do sistema, como glibc, zypper e kernel. Se eles forem removidos, o sistema poderá ficar instável ou parar de funcionar completamente.

9.1.3.1 Selecionando os pacotes para instalar ou remover

Há várias maneiras de administrar pacotes com os comandos zypper install e zypper remove.

Pelo nome exato do pacote
> sudo zypper install MozillaFirefox
Pelo nome exato do pacote e número da versão
> sudo zypper install MozillaFirefox-52.2
Pelo álias do repositório e nome do pacote
> sudo zypper install mozilla:MozillaFirefox

onde mozilla é o álias do repositório do qual instalar.

Pelo nome do pacote usando curingas

Você pode selecionar todos os pacotes que tenham nomes iniciando ou terminando com determinada string. Use os curingas com cuidado, principalmente ao remover pacotes. O comando a seguir instala todos os pacotes que começam com Moz:

> sudo zypper install 'Moz*'
Dica
Dica: Removendo todos os pacotes -debuginfo

Ao depurar um problema, às vezes você precisa instalar temporariamente muitos pacotes -debuginfo, que apresentam mais informações sobre a execução dos processos. Depois que a sessão de depuração termina, e você precisa limpar o ambiente, execute o seguinte:

> sudo zypper remove '*-debuginfo'
Por recurso

Por exemplo, para instalar um pacote sem saber o nome dele, há recursos que são úteis. O comando a seguir instalará o pacote MozillaFirefox:

> sudo zypper install firefox
Por recurso, arquitetura de hardware ou versão

Juntamente com um recurso, você pode especificar uma arquitetura de hardware e uma versão:

  • O nome da arquitetura de hardware desejada é anexado ao recurso após um ponto final. Por exemplo, para especificar as arquiteturas AMD64/Intel 64 (que no Zypper é denominada x86_64), use:

    > sudo zypper install 'firefox.x86_64'
  • As versões devem ser anexadas ao fim da string e precedidas por um operador: < (menor do que), <= (menor do que ou igual a), = (igual), >= (maior do que ou igual a), > (maior do que).

    > sudo zypper install 'firefox>=74.2'
  • Você também pode combinar um requisito de versão e arquitetura de hardware:

    > sudo zypper install 'firefox.x86_64>=74.2'
Por caminho para o arquivo RPM

Você também pode especificar um local ou caminho remoto para um pacote:

> sudo zypper install /tmp/install/MozillaFirefox.rpm
> sudo zypper install http://download.example.com/MozillaFirefox.rpm

9.1.3.2 Combinando a instalação e remoção de pacotes

Para instalar e remover pacotes simultaneamente, use os modificadores +/-. Para instalar o emacs e remover o vim simultaneamente, use:

> sudo zypper install emacs -vim

Para remover o emacs e instalar o vim simultaneamente, use:

> sudo zypper remove emacs +vim

Para impedir que o nome do pacote que começa com - seja interpretado como uma opção de comando, use-o sempre como o segundo argumento. Se isso não for possível, preceda-o com --:

> sudo zypper install -emacs +vim       # Wrong
> sudo zypper install vim -emacs        # Correct
> sudo zypper install -- -emacs +vim    # Correct
> sudo zypper remove emacs +vim         # Correct

9.1.3.3 Limpando as dependências dos pacotes removidos

Para (com determinado pacote) remover automaticamente qualquer pacote desnecessário após remover o pacote especificado, use a opção --clean-deps:

> sudo zypper rm --clean-deps PACKAGE_NAME

9.1.3.4 Usando o Zypper em scripts

Por padrão, o zypper solicita uma confirmação antes de instalar ou remover um pacote selecionado, ou quando ocorre um problema. Você pode anular esse comportamento usando a opção --non-interactive. Essa opção deve ser inserida antes do comando real (install, remove e patch), conforme mostrado a seguir:

> sudo zypper --non-interactive install PACKAGE_NAME

Essa opção permite o uso do zypper em scripts e tarefas cron.

9.1.3.5 Instalando ou fazendo download dos pacotes de origem

Para instalar o pacote de origem correspondente de um pacote, use:

> zypper source-install PACKAGE_NAME

Quando executado como root, o local padrão para instalar pacotes de origem é /usr/src/packages/, e ~/rpmbuild quando executado como usuário. Esses valores podem ser mudados em sua configuração de rpm local.

Esse comando também instala as dependências de compilação do pacote especificado. Se não quiser isso, adicione o switch -D:

> sudo zypper source-install -D PACKAGE_NAME

Para instalar apenas as dependências de compilação, use -d.

> sudo zypper source-install -d PACKAGE_NAME

Naturalmente isso só funcionará se o repositório com os pacotes de origem estiver habilitado na sua lista de repositórios (ele é adicionado por padrão, mas não habilitado). Consulte a Seção 9.1.6, “Gerenciando repositórios com o Zypper” para obter os detalhes sobre o gerenciamento de repositórios.

Uma lista de todos os pacotes de origem disponíveis nos seus repositórios pode ser obtida com:

> zypper search -t srcpackage

É possível também fazer download dos pacotes de origem para todos os pacotes instalados em um diretório local. Para fazer download dos pacotes de origem, use:

> zypper source-download

O diretório de download padrão é /var/cache/zypper/source-download. Você pode mudá-lo usando a opção --directory. Para mostrar apenas os pacotes ausentes ou incorretos sem fazer download nem apagar nada, use a opção --status. Para apagar pacotes de fonte origem incorretos, use a opção --delete. Para desabilitar a exclusão, use a opção --no-delete.

9.1.3.6 Instalando pacotes de repositórios desabilitados

Normalmente, você apenas pode instalar ou atualizar pacotes de repositórios habilitados. A opção --plus-content TAG ajuda você a especificar os repositórios que devem ser atualizados, temporariamente habilitados durante a sessão atual do Zypper e desabilitados após sua conclusão.

Por exemplo, para habilitar os repositórios que podem fornecer pacotes -debuginfo ou -debugsource adicionais, use --plus-content debug. É possível especificar essa opção várias vezes.

Para habilitar temporariamente esses repositórios de "depuração" para instalar determinado pacote -debuginfo, use a opção da seguinte forma:

> sudo zypper --plus-content debug \
   install "debuginfo(build-id)=eb844a5c20c70a59fc693cd1061f851fb7d046f4"

A string build-id é informada pelo gdb a respeito dos pacotes debuginfo ausentes.

Nota
Nota: Mídia de instalação desabilitada

Os repositórios da mídia de instalação do SUSE Linux Enterprise Desktop ainda estão configurados, mas são desabilitados após a instalação bem-sucedida. Você pode usar a opção --plus-content para instalar pacotes da mídia de instalação, em vez dos repositórios online. Antes de chamar o zypper, verifique se a mídia está disponível, por exemplo, inserindo o DVD na unidade do computador.

9.1.3.7 Utilitários

Para verificar se todas as dependências ainda são atendidas e para reparar dependências ausentes, use:

> zypper verify

Além das dependências que precisam ser atendidas, alguns pacotes recomendam outros pacotes. Esses pacotes recomendados são instalados apenas quando estão realmente disponíveis e são instaláveis. Caso os pacotes recomendados fiquem disponíveis após a instalação do pacote que os recomendou (adicionando outros pacotes ou hardware), use o seguinte comando:

> sudo zypper install-new-recommends

Esse comando será muito útil após conectar uma webcam ou um dispositivo Wi-Fi. Ele instala drivers para o dispositivo e software relacionado, se disponíveis. Os drivers e o software relacionado serão instaláveis se determinadas dependências de hardware forem atendidas.

9.1.4 Atualizando software com o zypper

Existem três maneiras diferentes de atualizar o software usando o zypper: instalando patches, instalando uma versão nova de um pacote ou atualizando a distribuição inteira. Para a segunda opção, use o comando zypper dist-upgrade. O upgrade do SUSE Linux Enterprise Desktop é abordado no Chapter 2, Upgrade paths and methods.

9.1.4.1 Instalando todos os patches necessários

A aplicação de patches do SUSE Linux Enterprise Desktop é a maneira mais confiável de instalar novas versões de pacotes instalados. Ela garante que todos os pacotes necessários com as versões corretas sejam instalados e que as versões de pacote consideradas conflitantes sejam omitidas.

Para instalar todos os patches lançados oficialmente que se aplicam ao seu sistema, execute:

> sudo zypper patch

Todos os patches disponíveis dos repositórios configurados em seu computador são verificados quanto à relevância em sua instalação. Se forem relevantes (e não classificados como optional ou feature), eles serão instalados imediatamente. Se o zypper patch for bem-sucedido, nenhum pacote com versão vulnerável será instalado, a menos que você confirme a exceção. Observe que o repositório de atualização oficial apenas estará disponível após o registro de sua instalação do SUSE Linux Enterprise Desktop.

Se um patch que estiver prestes a ser instalado incluir mudanças que exijam reinicialização do sistema, você será avisado antes.

O comando zypper patch simples não se aplica a patches de repositórios de terceiros. Para atualizar também os repositórios de terceiros, use a opção de comando with-update da seguinte maneira:

> sudo zypper patch --with-update

Para instalar também os patches opcionais, use:

> sudo zypper patch --with-optional

Para instalar todos os patches referentes a um problema específico do Bugzilla, use:

> sudo zypper patch --bugzilla=NUMBER

Para instalar todos os patches referentes a uma entrada específica do banco de dados CVE, use:

> sudo zypper patch --cve=NUMBER

Por exemplo, para instalar um patch de segurança com o número do CVE CVE-2010-2713, execute:

> sudo zypper patch --cve=CVE-2010-2713

Para instalar apenas os patches que afetam o Zypper e o gerenciamento de pacote propriamente dito, use:

> sudo zypper patch --updatestack-only

Esteja ciente de que outras opções de comando que também atualizam outros repositórios serão descartadas se você usar a opção de comando updatestack-only.

9.1.4.2 Listando os patches

Para saber se há patches disponíveis, o Zypper permite ver as seguintes informações:

Número de patches necessários

Para listar o número de patches necessários (patches que se aplicam ao seu sistema, mas ainda não foram instalados), use patch-check:

> zypper patch-check
Loading repository data...
Reading installed packages...
5 patches needed (1 security patch)

Esse comando pode ser combinado com a opção --updatestack-only para listar apenas os patches que afetam o Zypper e o próprio gerenciamento de pacotes.

Lista de patches necessários

Para listar todos os patches necessários (patches que se aplicam ao seu sistema, mas ainda não foram instalados), use zypper list-patches.

Lista de todos os patches

Para listar todos os patches disponíveis para o SUSE Linux Enterprise Desktop, independentemente de já estarem instalados ou de se aplicarem à sua instalação, use zypper patches.

Também é possível listar e instalar todos os patches relevantes a problemas específicos. Para listar patches específicos, use o comando zypper list-patches com as seguintes opções:

Por problemas do Bugzilla

Para listar todos os patches necessários relacionados a problemas do Bugzilla, use a opção --bugzilla.

Para listar os patches referentes a um bug específico, você também pode informar o número do bug: --bugzilla=NUMBER. Para pesquisar patches relacionados a vários problemas do Bugzilla, adicione vírgulas entre os números de bug, por exemplo:

> zypper list-patches --bugzilla=972197,956917
Por número do CVE

Para listar todos os patches necessários relacionados a uma entrada no banco de dados CVE (Common Vulnerabilities and Exposures – Exposições e Vulnerabilidades Comuns), use a opção --cve.

Para listar os patches de uma entrada específica do banco de dados CVE, você também pode informar o número do CVE: --cve=NUMBER. Para pesquisar patches relacionados a várias entradas do banco de dados CVE, adicione vírgulas entre os números do CVE, por exemplo:

> zypper list-patches --cve=CVE-2016-2315,CVE-2016-2324
Listar patches recolhidos

No fluxo de código do SUSE Linux Enterprise 15, alguns patches são automaticamente recolhidos. As atualizações de manutenção são cuidadosamente testadas, pois existe o risco de uma atualização conter um bug novo. Se for comprovado que uma atualização contém um bug, uma nova atualização (com um número de versão maior) será gerada para reverter a atualização com bug, cuja instalação será bloqueada novamente. Você pode listar os patches recolhidos com o zypper:

> zypper lp --all |grep retracted
SLE-Module-Basesystem15-SP3-Updates | SUSE-SLE-Module-Basesystem-15-SP3-2021-1965
 | recommended | important | ---    | retracted  | Recommended update for multipath-tools
SLE-Module-Basesystem15-SP3-Updates | SUSE-SLE-Module-Basesystem-15-SP3-2021-2689
 | security    | important | ---    | retracted  | Security update for cpio
SLE-Module-Basesystem15-SP3-Updates | SUSE-SLE-Module-Basesystem-15-SP3-2021-3655
 | security    | important | reboot | retracted  | Security update for the Linux Kernel

Consulte as informações completas sobre um patch recolhido (ou qualquer outro):

> zypper patch-info SUSE-SLE-Product-SLES-15-2021-2689
Loading repository data...
Reading installed packages...

Information for patch SUSE-SLE-Product-SLES-15-2021-2689:
---------------------------------------------------------
Repository  : SLE-Product-SLES15-LTSS-Updates
Name        : SUSE-SLE-Product-SLES-15-2021-2689
Version     : 1
Arch        : noarch
Vendor      : maint-coord@suse.de
Status      : retracted
Category    : security
Severity    : important
Created On  : Mon 16 Aug 2021 03:44:00 AM PDT
Interactive : ---
Summary     : Security update for cpio
Description :
    This update for cpio fixes the following issues:

    It was possible to trigger Remote code execution due to a integer overflow
    (CVE-2021-38185, bsc#1189206)

    UPDATE:
    This update was buggy and could lead to hangs, so it has been retracted.
    There will be a follow up update.
    [...]
Patch com pacotes conflitantes
Information for patch openSUSE-SLE-15.3-2022-333:
-------------------------------------------------
Repository  : Update repository with updates from SUSE Linux Enterprise 15
Name        : openSUSE-SLE-15.3-2022-333
Version     : 1
Arch        : noarch
Vendor      : maint-coord@suse.de
Status      : needed
Category    : security
Severity    : important
Created On  : Fri Feb  4 09:30:32 2022
Interactive : reboot
Summary     : Security update for xen
Description :
    This update for xen fixes the following issues:

    - CVE-2022-23033: Fixed guest_physmap_remove_page not removing the p2m mappings. (XSA-393) (bsc#1194576)
    - CVE-2022-23034: Fixed possible DoS by a PV guest Xen while unmapping a grant. (XSA-394) (bsc#1194581)
    - CVE-2022-23035: Fixed insufficient cleanup of passed-through device IRQs. (XSA-395) (bsc#1194588)
Provides    : patch:openSUSE-SLE-15.3-2022-333 = 1
Conflicts   : [22]
    xen.src < 4.14.3_06-150300.3.18.2
    xen.noarch < 4.14.3_06-150300.3.18.2
    xen.x86_64 < 4.14.3_06-150300.3.18.2
    xen-devel.x86_64 < 4.14.3_06-150300.3.18.2
    xen-devel.noarch < 4.14.3_06-150300.3.18.2
[...]

O patch acima está em conflito com as versões afetadas ou vulneráveis de 22 pacotes. Se qualquer um desses pacotes afetados ou vulneráveis for instalado, ele acionará um conflito, e o patch será classificado como necessário. O zypper patch tenta instalar todos os patches disponíveis. Se ele encontrar problemas, ele os relatará, informando que nem todas as atualizações serão instaladas. É possível resolver o conflito atualizando ou removendo os pacotes afetados ou vulneráveis. Como os repositórios de atualização do SUSE também incluem pacotes fixos, a atualização é um método padrão de resolver conflitos. Se não for possível atualizar o pacote, por exemplo, devido a problemas de dependência ou bloqueios de pacote, ele será apagado após a aprovação do usuário.

Para listar todos os patches, independentemente de serem necessários, use também a opção --all. Por exemplo, para listar todos os patches com um número do CVE atribuído, use:

> zypper list-patches --all --cve
Issue | No.           | Patch             | Category    | Severity  | Status
------+---------------+-------------------+-------------+-----------+----------
cve   | CVE-2019-0287 | SUSE-SLE-Module.. | recommended | moderate  | needed
cve   | CVE-2019-3566 | SUSE-SLE-SERVER.. | recommended | moderate  | not needed
[...]

9.1.4.3 Instalando novas versões de pacotes

Se um repositório contém apenas pacotes novos, mas não fornece patches, zypper patch não surte nenhum efeito. Para atualizar todos os pacotes instalados com as versões mais recentes disponíveis, use o seguinte comando:

> sudo zypper update
Importante
Importante

zypper update ignora pacotes problemáticos. Por exemplo, se um pacote estiver bloqueado, o zypper update o omitirá, mesmo que uma versão superior dele esteja disponível. Por outro lado, o zypper patch relatará um conflito se o pacote for considerado vulnerável.

Para atualizar pacotes individuais, especifique o pacote com o comando update ou install:

> sudo zypper update PACKAGE_NAME
> sudo zypper install PACKAGE_NAME

Uma lista de todos os novos pacotes instaláveis pode ser obtida pelo comando:

> zypper list-updates

Observe que este comando apenas lista os pacotes correspondentes aos seguintes critérios:

  • têm os mesmo fornecedor que o pacote já instalado,

  • são fornecidos por repositórios com pelo menos a mesma prioridade que o pacote já instalado,

  • são instaláveis (todas as dependências foram atendidas).

Uma lista de todos os novos pacotes disponíveis (sejam instaláveis ou não) pode ser obtida com:

> sudo zypper list-updates --all

Para descobrir o motivo pelo qual um novo pacote não pode ser instalado, use o comando zypper install ou zypper update conforme descrito acima.

9.1.4.4 Identificando pacotes órfãos

Sempre que você remove um repositório do Zypper ou faz upgrade do sistema, alguns pacotes podem entrar no estado órfão. Esses pacotes órfãos não pertencem mais a nenhum repositório ativo. O comando a seguir fornece uma lista deles:

> sudo zypper packages --orphaned

Com essa lista, você pode decidir se um pacote ainda é necessário ou pode ser removido com segurança.

9.1.5 Identificando processos e serviços que usam arquivos apagados

Durante a aplicação de patches, atualização ou remoção de pacotes, pode haver processos em execução no sistema que continuam usando os arquivos que foram apagados pela atualização ou remoção. Use o zypper ps para listar os processos que usam arquivos apagados. Se o processo pertence a um serviço conhecido, o nome do serviço é listado para facilitar sua reinicialização. Por padrão, o zypper ps mostra uma tabela:

> zypper ps
PID   | PPID | UID | User  | Command      | Service      | Files
------+------+-----+-------+--------------+--------------+-------------------
814   | 1    | 481 | avahi | avahi-daemon | avahi-daemon | /lib64/ld-2.19.s->
      |      |     |       |              |              | /lib64/libdl-2.1->
      |      |     |       |              |              | /lib64/libpthrea->
      |      |     |       |              |              | /lib64/libc-2.19->
[...]
PID: ID do processo
PPID: ID do processo pai
UID: ID do usuário que está executando o processo
Login: Nome de login do usuário que está executando o processo
Comando: Comando usado para executar o processo
Serviço: Nome do serviço (apenas se o comando está associado a um serviço do sistema)
Arquivos: A lista de arquivos apagados

O formato de saída do zypper ps pode ser controlado da seguinte maneira:

zypper ps-s

Criar uma tabela resumida sem mostrar os arquivos apagados.

> zypper ps -s
PID   | PPID | UID  | User    | Command      | Service
------+------+------+---------+--------------+--------------
814   | 1    | 481  | avahi   | avahi-daemon | avahi-daemon
817   | 1    | 0    | root    | irqbalance   | irqbalance
1567  | 1    | 0    | root    | sshd         | sshd
1761  | 1    | 0    | root    | master       | postfix
1764  | 1761 | 51   | postfix | pickup       | postfix
1765  | 1761 | 51   | postfix | qmgr         | postfix
2031  | 2027 | 1000 | tux     | bash         |
zypper ps-ss

Mostrar apenas os processos associados a um serviço do sistema.

PID   | PPID | UID  | User    | Command      | Service
------+------+------+---------+--------------+--------------
814   | 1    | 481  | avahi   | avahi-daemon | avahi-daemon
817   | 1    | 0    | root    | irqbalance   | irqbalance
1567  | 1    | 0    | root    | sshd         | sshd
1761  | 1    | 0    | root    | master       | postfix
1764  | 1761 | 51   | postfix | pickup       | postfix
1765  | 1761 | 51   | postfix | qmgr         | postfix
zypper ps-sss

Mostrar apenas os serviços do sistema que usam os arquivos apagados.

avahi-daemon
irqbalance
postfix
sshd
zypper ps--print "systemctl status %s"

Mostrar os comandos para recuperar informações de status dos serviços que possam precisar de reinicialização.

systemctl status avahi-daemon
systemctl status irqbalance
systemctl status postfix
systemctl status sshd

Para obter mais informações sobre o gerenciamento de serviços, consulte o Capítulo 19, Daemon systemd.

9.1.6 Gerenciando repositórios com o Zypper

Todos os comandos de instalação ou patch do zipper dependem de uma lista de repositórios conhecidos. Para listar todos os repositórios conhecidos para o sistema, use o comando:

> zypper repos

O resultado parecerá com o seguinte:

Exemplo 9.1: Zypper: lista de repositórios conhecidos
> zypper repos
# | Alias        | Name          | Enabled | Refresh
--+--------------+---------------+---------+--------
1 | SLEHA-15-GEO | SLEHA-15-GEO  | Yes     | No
2 | SLEHA-15     | SLEHA-15      | Yes     | No
3 | SLES15       | SLES15        | Yes     | No

Na especificação de repositórios em vários comandos, é possível usar um álias, URI ou número de repositório da saída do comando zypper repos. O álias do repositório é uma versão abreviada do nome do repositório para uso em comandos de gerenciamento de repositórios. Observe que os números dos repositórios podem ser mudados após modificar a lista de repositórios. O álias nunca mudará sozinho.

Por padrão; detalhes, como o URI ou a prioridade do repositório, não são exibidos. Use o seguinte comando para listar todos os detalhes:

> zypper repos -d

9.1.6.1 Adicionando repositórios

Para adicionar um repositório, execute

> sudo zypper addrepo URI ALIAS

O URI pode ser um repositório da Internet, um recurso de rede, um diretório ou um CD ou DVD (consulte https://en.opensuse.org/openSUSE:Libzypp_URIs para obter os detalhes). O ALIAS é um identificador exclusivo e abreviado do repositório. Você tem livre escolha, com a única condição de que seja exclusivo. O zypper emitirá um aviso se você especificar um álias que já está em uso.

9.1.6.2 Atualizando repositórios

O zypper permite buscar mudanças nos pacotes de repositórios configurados. Para buscar as mudanças, execute:

> sudo zypper refresh
Nota
Nota: Comportamento padrão do zypper

Por padrão, alguns comandos executam o refresh automaticamente, portanto, não é necessário executá-lo explicitamente.

O comando refresh permite ver as mudanças também nos repositórios desabilitados usando a opção --plus-content:

> sudo zypper --plus-content refresh

Essa opção busca mudanças nos repositórios, mas mantém os repositórios desabilitados no mesmo estado: desabilitado.

9.1.6.3 Removendo repositórios

Para remover um repositório da lista, use o comando zypper removerepo juntamente com o álias ou o número do repositório que você deseja apagar. Por exemplo, para remover o repositório SLEHA-12-GEO do Exemplo 9.1, “Zypper: lista de repositórios conhecidos”, use um dos seguintes comandos:

> sudo zypper removerepo 1
> sudo zypper removerepo "SLEHA-12-GEO"

9.1.6.4 Modificando repositórios

Habilite ou desabilite os repositórios com zypper modifyrepo. Você também pode alterar as propriedades do repositório (por exemplo, atualizar o comportamento, o nome ou a prioridade) com esse comando. O seguinte comando habilita o repositório chamado updates, ativa a atualização automática e define sua prioridade como 20:

> sudo zypper modifyrepo -er -p 20 'updates'

A modificação de repositórios não se limita a um único repositório, você também pode operar em grupos:

-a: todos os repositórios
-l: repositórios locais
-t: repositórios remotos
-m TYPE: repositórios de um determinado tipo (em que TYPE pode ser um destes: http, https, ftp, cd, dvd, dir, file, cifs, smb, nfs, hd e iso)

Para renomear o álias de um repositório, use o comando renamerepo. O exemplo a seguir muda o álias de Mozilla Firefox para firefox:

> sudo zypper renamerepo 'Mozilla Firefox' firefox

9.1.7 Consultando repositórios e pacotes com o Zypper

O zypper oferece vários métodos de consulta a repositórios ou pacotes. Para obter as listas de todos os produtos, padrões, pacotes ou patches disponíveis, use os seguintes comandos:

> zypper products
> zypper patterns
> zypper packages
> zypper patches

Para consultar todos os repositórios para determinados pacotes, use search. Para obter informações sobre pacotes específicos, use o comando info.

9.1.7.2 Pesquisando pacotes em todos os módulos do SLE

Para pesquisar pacotes tanto dentro quanto fora dos módulos atualmente habilitados do SLE, use o subcomando search-packages. Esse comando contata o SUSE Customer Center e pesquisa os pacotes correspondentes em todos os módulos, por exemplo:

> zypper search-packages package1 package2

zypper search-packages oferece as seguintes opções:

  • Procurar uma correspondência exata da sua string de pesquisa: -x, --match-exact

  • Agrupar os resultados por módulo (padrão: agrupar por pacote): -g, --group-by-module

  • Exibir informações mais detalhadas sobre os pacotes: -d, --details

  • Retornar os resultados da pesquisa em XML: --xmlout

9.1.7.3 Pesquisando um recurso específico

Para procurar pacotes que oferecem um recurso específico, use o comando what-provides. Por exemplo, para saber qual pacote inclui o módulo Perl SVN::Core, use o seguinte comando:

> zypper what-provides 'perl(SVN::Core)'

O what-provides PACKAGE_NAME é semelhante ao rpm -q --whatprovides PACKAGE_NAME, mas o RPM é capaz apenas de consultar o banco de dados RPM (que é o banco de dados de todos os pacotes instalados). O zypper, por outro lado, o informará sobre fornecedores do recurso a partir de qualquer repositório, não apenas aqueles que estão instalados.

9.1.7.4 Mostrando as informações do pacote

Para consultar pacotes únicos, use info com um nome exato de pacote como argumento. Esse recurso exibe informações detalhadas sobre um pacote. Caso o nome do pacote não corresponda a nenhum nome de pacote dos repositórios, o comando exibirá informações detalhadas sobre as correspondências que não são de pacote. Se você solicitar um tipo específico (usando a opção -t) e o tipo não existir, o comando exibirá outras correspondências disponíveis, mas sem informações detalhadas.

Se você especificar um pacote de origem, o comando exibirá pacotes binários criados com base no pacote de origem. Se você especificar um pacote binário, o comando exibirá os pacotes de origem usados para criar o pacote de binário.

Para mostrar também o que é exigido/recomendado pelo pacote, use as opções --requires e --recommends:

> zypper info --requires MozillaFirefox

9.1.8 Mostrando as informações de ciclo de vida

Normalmente, os produtos SUSE são suportados por 10 anos. Muitas vezes, você pode estender esse ciclo de vida padrão usando as ofertas de suporte estendido da SUSE, que adicionam três anos de suporte. Dependendo do produto, você encontra o ciclo de vida de suporte exato em https://www.suse.com/lifecycle.

Para verificar o ciclo de vida do seu produto e o pacote suportado, use o comando zypper lifecycle conforme mostrado a seguir:

# zypper lifecycle
    Product end of support
Codestream: SUSE Linux Enterprise Server 15             2028-07-31
    Product: SUSE Linux Enterprise Server 15 SP3        n/a*

Module end of support
Basesystem Module                                       n/a*
Desktop Applications Module                             n/a*
Server Applications Module                              n/a*

Package end of support if different from product:
autofs                                   Now, installed 5.1.3-7.3.1, update available 5.1.3-7.6.1

9.1.9 Configurando o Zypper

O Zypper agora vem com um arquivo de configuração que permite mudar permanentemente o comportamento do Zypper (de todo o sistema ou de um usuário específico). Para mudanças de todo o sistema, edite /etc/zypp/zypper.conf. Para mudanças específicas do usuário, edite ~/.zypper.conf. Se ~/.zypper.conf ainda não existir, você poderá usar o /etc/zypp/zypper.conf como gabarito: copie-o para ~/.zypper.conf e ajuste-o como desejar. Consulte os comentários no arquivo para obter ajuda sobre as opções disponíveis.

9.1.10 Solução de problemas

Se você tiver problemas para acessar os pacotes dos repositórios configurados (por exemplo, o Zypper não encontra determinado pacote mesmo que você saiba que ele existe em um dos repositórios), a atualização dos repositórios poderá ajudar:

> sudo zypper refresh

Se isso não ajudar, tente

> sudo zypper refresh -fdb

Isso força uma atualização completa e a reconstrução do banco de dados, incluindo um download forçado dos metadados iniciais.

9.1.11 Recurso de rollback do Zypper no sistema de arquivos Btrfs

Se o sistema de arquivos Btrfs for usado na partição raiz e o snapper estiver instalado, o Zypper chamará automaticamente o snapper ao confirmar as mudanças no sistema de arquivos para criar os instantâneos apropriados do sistema de arquivos. É possível usar esses instantâneos para reverter as mudanças feitas pelo Zypper. Consulte o Capítulo 10, Recuperação de sistema e gerenciamento de instantâneos com o Snapper para obter mais informações.

9.1.12 Mais informações

Para obter mais informações sobre gerenciamento de software da linha de comando, digite zypper help, zypper help  COMMAND ou consulte a página de manual do zypper(8). Para acessar uma referência completa e detalhada dos comandos, os cheat sheets com os comandos mais importantes e as informações sobre como usar o Zypper em scripts e aplicativos, visite https://en.opensuse.org/SDB:Zypper_usage. Você encontra uma lista das mudanças de software da versão mais recente do SUSE Linux Enterprise Desktop em https://en.opensuse.org/openSUSE:Zypper_versions.

9.2 RPM: gerenciador de pacotes

O RPM (gerenciador de pacotes RPM) é usado para gerenciar pacotes de software. Seus principais comandos são rpm e rpmbuild. O banco de dados RPM avançado pode ser consultado pelos usuários, administradores de sistema e construtores de pacotes para obtenção de informações detalhadas sobre o software instalado.

O rpm tem cinco modos: instalação, desinstalação (ou atualização) de pacotes de software, reconstrução do banco de dados RPM, consulta de bancos RPM ou de arquivos RPM individuais, verificação de integridade dos pacotes e assinatura de pacotes. O rpmbuild pode ser usado para construir pacotes instaláveis de fontes originais.

Os arquivos RPM instaláveis são compactados em um formato binário especial. Eles consistem em arquivos de programa para instalação e determinadas metainformações usadas durante a instalação pelo comando rpm para configurar o pacote de software ou são armazenados no banco de dados RPM para fins de documentação. Normalmente, os arquivos têm a extensão .rpm.

Dica
Dica: Pacotes de desenvolvimento de software

Para vários pacotes, os componentes necessários para o desenvolvimento de software (bibliotecas, cabeçalhos, arquivos de inclusões etc.) foram colocados em pacotes separados. Esses pacotes de desenvolvimento só são necessários quando você deseja compilar software por conta própria (por exemplo, os pacotes do GNOME mais recentes). É possível identificá-los pela extensão do nome -devel, como os pacotes alsa-devel e gimp-devel.

9.2.1 Verificando a autenticidade do pacote

Os pacotes RPM têm uma assinatura GPG. Para verificar a assinatura de um pacote RPM, use o comando rpm --checksig  PACKAGE-1.2.3.rpm para determinar se o pacote vem do SUSE ou de outro recurso confiável. Isso é especialmente recomendado para pacotes de atualização da Internet.

Ao corrigir problemas no sistema operacional, talvez seja necessário instalar uma PTF (Problem Temporary Fix – Correção Temporária do Problema) no sistema de produção. Os pacotes oferecidos pelo SUSE são assinados com uma chave PTF especial. No entanto, diferentemente do SUSE Linux Enterprise 11, essa chave não é importada nos sistemas SUSE Linux Enterprise 12 por padrão. Para importar a chave manualmente, use o seguinte comando:

> sudo rpm --import \
/usr/share/doc/packages/suse-build-key/suse_ptf_key.asc

Após importar a chave, você poderá instalar os pacotes PTF no sistema.

9.2.2 Gerenciando pacotes: instalar, atualizar e desinstalar

Normalmente, a instalação de um arquivo RPM é bem simples: rpm -i PACKAGE.rpm. Com esse comando, o pacote é instalado, mas apenas quando suas dependências são atendidas e quando não há conflitos com outros pacotes. Com uma mensagem de erro, o rpm solicita os pacotes que devem ser instalados para atender a requisitos de dependência. No segundo plano, o banco de dados RPM garante que não haja conflitos, pois um arquivo específico pode pertencer somente a um pacote. Ao escolher opções diferentes, você pode forçar o rpm a ignorar esses padrões, mas isso é somente para especialistas. Do contrário, você se arrisca a comprometer a integridade do sistema e, possivelmente, ameaça a capacidade de atualização do sistema.

As opções -U ou --upgrade e -F ou --freshen podem ser usadas para atualizar um pacote (por exemplo, rpm -F PACKAGE.rpm). Esse comando remove os arquivos da versão antiga e instala os novos arquivos imediatamente. A diferença entre as duas versões é que o -U instala pacotes que ainda não existiam no sistema, enquanto -F apenas atualiza os pacotes já instalados. Durante a atualização, o rpm atualiza arquivos de configuração cuidadosamente com a seguinte estratégia:

  • Se um arquivo de configuração não tiver sido modificado pelo administrador de sistema, o rpm instalará a nova versão do arquivo apropriado. O administrador de sistema não precisa adotar nenhuma ação.

  • Se um arquivo de configuração foi mudado pelo administrador do sistema antes da atualização, o rpm gravará o arquivo modificado com a extensão .rpmorig ou .rpmsave (arquivo de backup) e instalará a versão do novo pacote. Isso apenas será feito se o arquivo instalado originalmente e a versão mais recente forem diferentes. Se esse for o caso, compare o arquivo de backup (.rpmorig ou .rpmsave) com o arquivo recém-instalado e faça novamente as modificações no novo arquivo. Depois disso, apague todos os arquivos .rpmorig e .rpmsave para evitar problemas com atualizações futuras.

  • Arquivos .rpmnew serão exibidos se o arquivo de configuração já existir e se o rótulo noreplace tiver sido especificado no arquivo .spec.

Após uma atualização, os arquivos .rpmsave e .rpmnew deverão ser removidos depois de comparados, para que não impeçam atualizações futuras. A extensão .rpmorig será atribuída se o arquivo não tiver sido previamente reconhecido pelo banco de dados RPM.

Do contrário, o .rpmsave será usado. Em outras palavras, o .rpmorig resulta da atualização de um formato diferente para o RPM. O .rpmsave. resulta da atualização de um RPM mais antigo para um RPM mais novo. O .rpmnew não revela nenhuma informação indicando se o administrador do sistema fez modificações no arquivo de configuração. Uma lista destes arquivos está disponível em /var/adm/rpmconfigcheck. Alguns arquivos de configuração (como /etc/httpd/httpd.conf) não são sobregravados para permitir uma operação continuada.

O switch -U não é apenas um equivalente à desinstalação com a opção -e e à instalação com a opção -i. Use -U sempre que possível.

Para remover um pacote, digite rpm -e PACKAGE. Este comando só apaga o pacote quando não há dependências não resolvidas. É teoricamente impossível apagar Tcl/Tk, por exemplo, enquanto outro aplicativo exigir sua existência. Mesmo nesse caso, o RPM pede ajuda do banco de dados. Se, por qualquer motivo, a exclusão for impossível (mesmo que não exista nenhuma dependência adicional), talvez seja útil reconstruir o banco de dados RPM usando a opção --rebuilddb.

9.2.3 Pacotes RPM Delta

Os pacotes RPM Delta possuem uma diferença entre uma versão nova e antiga de um pacote RPM. Aplicar um RPM delta a um RPM antigo resulta em um RPM completamente novo. Não é necessário ter uma cópia do RPM antigo, pois um RPM delta também pode funcionar com um RPM instalado. Os pacotes RPM delta têm tamanho ainda menor que os RPMs com patch, o que é uma vantagem durante a transferência de pacotes de atualização na Internet. A desvantagem é que operações de atualização que envolvem RPMs delta consomem consideravelmente mais ciclos de CPU do que as operações com RPMs com patch ou simples.

Os binários makedeltarpm e applydelta integram a suíte de RPM delta (pacote deltarpm) e ajudam na criação e aplicação de pacotes RPM delta. Com os seguintes comandos, crie um RPM delta chamado new.delta.rpm. O comando a seguir pressupõe que old.rpm e new.rpm estejam presentes:

> sudo makedeltarpm old.rpm new.rpm new.delta.rpm

Usando applydeltarpm, você poderá reconstruir o novo RPM do arquivo de sistema, se o pacote antigo já estiver instalado:

> sudo applydeltarpm new.delta.rpm new.rpm

Para derivá-lo do RPM antigo sem acessar o sistema de arquivos, use a opção -r:

> sudo applydeltarpm -r old.rpm new.delta.rpm new.rpm

Consulte o /usr/share/doc/packages/deltarpm/README para ver os detalhes técnicos.

9.2.4 RPMconsultas

Com a opção -q, o rpm inicia consultas, permitindo a inspeção de um arquivo RPM (adicionando a opção -p) e a consulta ao banco de dados RPM dos pacotes instalados. Vários switches estão disponíveis para especificar o tipo de informação necessária. Consulte a Tabela 9.1, “Opções de consulta de RPM essenciais”.

Tabela 9.1: Opções de consulta de RPM essenciais

-i

Informações de pacote

-l

Lista de arquivos

-f FILE

Consulte o pacote que contém o arquivo FILE (o caminho completo deve ser especificado com FILE)

-s

Lista de arquivos com informações de status (requer -l)

-d

Lista somente arquivos de documentação (requer -l)

-c

Lista somente arquivos de configuração (requer -l)

--dump

Lista de arquivos com detalhes completos (a ser usada com -l, -c ou -d)

--provides

Lista recursos do pacote que outro pacote pode solicitar com --requires

--requires, -R

Recursos exigidos pelo pacote

--scripts

Scripts de instalação (pré-instalação, pós-instalação, desinstalação)

Por exemplo, o comando rpm -q -i wget exibe as informações mostradas no Exemplo 9.2, “rpm -q -i wget.

Exemplo 9.2: rpm -q -i wget
Name        : wget
Version     : 1.14
Release     : 17.1
Architecture: x86_64
Install Date: Mon 30 Jan 2017 14:01:29 CET
Group       : Productivity/Networking/Web/Utilities
Size        : 2046483
License     : GPL-3.0+
Signature   : RSA/SHA256, Thu 08 Dec 2016 07:48:44 CET, Key ID 70af9e8139db7c82
Source RPM  : wget-1.14-17.1.src.rpm
Build Date  : Thu 08 Dec 2016 07:48:34 CET
Build Host  : sheep09
Relocations : (not relocatable)
Packager    : https://www.suse.com/
Vendor      : SUSE LLC <https://www.suse.com/>
URL         : http://www.gnu.org/software/wget/
Summary     : A Tool for Mirroring FTP and HTTP Servers
Description :
Wget enables you to retrieve WWW documents or FTP files from a server.
This can be done in script files or via the command line.
Distribution: SUSE Linux Enterprise 15

A opção -f funcionará somente se você especificar o nome e o caminho completos do arquivo. Insira quantos nomes de arquivo desejar. Por exemplo:

> rpm -q -f /bin/rpm /usr/bin/wget
rpm-4.14.1-lp151.13.10.x86_64
wget-1.19.5-lp151.4.1.x86_64

Se apenas parte do nome de arquivo for conhecida, use um script de shell conforme mostrado no Exemplo 9.3, “Script para pesquisar pacotes”. Passe o nome de arquivo parcial para o script mostrado como um parâmetro ao executá-lo.

O comando rpm -q --changelog PACKAGE exibe uma lista detalhada de informações de mudança sobre um pacote específico, classificadas por data.

Com o banco de dados RPM instalado, é possível realizar verificações. Inicie as verificações com -V ou --verify. Com essa opção, o rpm mostra todos os arquivos em um pacote que foram modificados desde a instalação. O rpm usa oito símbolos de caracteres para apresentar algumas dicas sobre as seguintes mudanças:

Tabela 9.2: Opções de verificação do RPM

5

Resumo de verificação MD5

S

Tamanho do arquivo

L

Link simbólico

T

Tempo de modificação

D

Números de dispositivo principais e auxiliares

U

Proprietário

G

Grupo

M

Modo (tipo de arquivo e permissões)

No caso de arquivos de configuração, a letra c é impressa. Por exemplo, para modificações no pacote /etc/wgetrc (wget):

> rpm -V wget
S.5....T c /etc/wgetrc

Os arquivos do banco de dados RPM são colocados em /var/lib/rpm. Se a partição /usr tiver o tamanho de 1 GB, esse banco de dados poderá ocupar quase 30 MB, principalmente após uma atualização completa. Se o banco de dados for maior do que o esperado, será útil reconstruir o banco de dados com a opção --rebuilddb. Antes disso, faça um backup do banco de dados antigo. O script cron.daily do cron faz cópias diárias do banco de dados (compactadas com gzip) e as armazena em /var/adm/backup/rpmdb. O número de cópias é controlado pela variável MAX_RPMDB_BACKUPS (padrão: 5) em /etc/sysconfig/backup. O tamanho de um único backup é de aproximadamente 1 MB para 1 GB em /usr.

9.2.5 Instalando e compilando pacotes de fontes

Todos os pacotes de fontes têm uma extensão .src.rpm ( (RPM de fonte).

Nota
Nota: Pacotes de fontes instalados

Pacotes de fonte podem ser copiados da mídia de instalação para o disco rígido e descompactados com o YaST. Porém, eles não são marcados como instalados ([i]) no gerenciador de pacotes. Isso ocorre porque os pacotes de fontes não são inseridos no banco de dados RPM. Somente o software do sistema operacional instalado está listado no banco de dados RPM. Quando você instalar um pacote de fontes, somente o código-fonte será adicionado ao sistema.

Os diretórios a seguir devem estar disponíveis para rpm e rpmbuild em /usr/src/packages (a menos que você tenha especificado configurações personalizadas em um arquivo como /etc/rpmrc):

SOURCES

para as fontes originais (arquivos .tar.bz2 ou .tar.gz etc.) e para ajustes específicos de distribuição (principalmente, os arquivos .diff ou .patch)

SPECS

para os arquivos .spec, similares a um metaMakefile, que controlam o processo de construção

BUILD

diretório em que todas as fontes são descompactadas, corrigidas e compiladas

RPMS

local em que os pacotes binários concluídos são armazenados

SRPMS

local em que estão os RPMs de fonte

Quando você instala um pacote de fontes com o YaST, todos os componentes necessários são instalados em /usr/src/packages: as fontes e os ajustes em SOURCES, e o arquivo .spec relevante em SPECS.

Atenção
Atenção: Integridade do sistema

Não faça experiências com os componentes do sistema (glibc, rpm etc.), pois isso arrisca a estabilidade do sistema.

O exemplo a seguir usa o pacote wget.src.rpm. Após instalar o pacote de origem, você deverá ter arquivos semelhantes aos da seguinte lista:

/usr/src/packages/SOURCES/wget-1.19.5.tar.bz2
/usr/src/packages/SOURCES/wgetrc.patch
/usr/src/packages/SPECS/wget.spec

rpmbuild -bX /usr/src/packages/SPECS/wget.spec inicia a compilação. X é um curinga para vários estágios do processo de construção (consulte a saída de --help ou a documentação do RPM para obter os detalhes). Veja a seguir uma breve explicação:

-bp

Preparar as fontes em /usr/src/packages/BUILD: unpack e patch.

-bc

Fazer o mesmo que -bp, mas com compilação adicional.

-bi

Fazer o mesmo que -bp, mas com instalação adicional do software criado. Cuidado: se o pacote não aceitar o recurso BuildRoot, talvez você sobregrave os arquivos de configuração.

-bb

Fazer o mesmo que -bi, mas com criação adicional do pacote binário. Se a compilação tiver sido bem-sucedida, o binário deverá estar em /usr/src/packages/RPMS.

-ba

Fazer o mesmo que -bb, mas com criação adicional do RPM de fonte. Se a compilação tiver sido bem-sucedida, o binário deverá estar em /usr/src/packages/SRPMS.

--short-circuit

Ignora algumas etapas.

O RPM binário criado agora pode ser instalado com rpm -i ou, de preferência, com rpm -U. A instalação com rpm faz com que ele apareça no banco de dados RPM.

Lembre-se de que a diretiva BuildRoot no arquivo de especificação foi descontinuada. Se você ainda precisa desse recurso, use a opção --buildroot como uma solução alternativa.

9.2.6 Compilando pacotes RPM com build

O perigo de vários pacotes é que arquivos indesejados são adicionados ao sistema em execução durante o processo de construção. Para evitar isso, use build, que cria um ambiente definido para construção do pacote. Para estabelecer esse ambiente chroot, o script build deve ser fornecido com uma árvore de pacote completa. Essa árvore pode ser disponibilizada no disco rígido, por meio do NFS ou DVD. Defina a posição com build --rpms DIRECTORY. Ao contrário do rpm, o comando build procura o arquivo .spec no diretório de fontes. Para construir o wget (como no exemplo acima) com o DVD montado no sistema em /media/dvd, use os seguintes comandos como root:

# cd /usr/src/packages/SOURCES/
# mv ../SPECS/wget.spec .
# build --rpms /media/dvd/suse/ wget.spec

Depois disso, um ambiente mínimo é estabelecido em /var/tmp/build-root. O pacote é criado nesse ambiente. Após a conclusão, os pacotes resultantes estarão localizados em /var/tmp/build-root/usr/src/packages/RPMS.

O script build oferece várias opções adicionais. Por exemplo, fazer com que o script prefira seus próprios RPMs, omitir a inicialização do ambiente de construção ou limitar o comando rpm a um dos estágios mencionados acima. Use o comando build --help e leia a página de manual de build para acessar informações adicionais.

9.2.7 Ferramentas para arquivos e banco de dados RPM

O Midnight Commander (mc) pode exibir o conteúdo de arquivos RPM e copiar partes deles. Ele representa arquivos como sistemas de arquivos virtuais, oferecendo todas as opções de menu usuais do Midnight Commander. Exiba o HEADER com F3. Exiba a estrutura de arquivos com as teclas de cursor e Enter. Copie componentes de arquivos com F5.

Um gerenciador de pacote completo está disponível como um módulo do YaST. Para obter os detalhes, consulte o Capítulo 8, Instalando ou removendo software.