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 pacote 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 patchNo 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-licensesNo 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 mplayerAlgumas 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. Esse procedimento permite criar suas 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
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 resolver 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 pelo nome do pacote
>
sudo
zypper install mozilla:MozillaFirefoxonde
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: 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 a),>=
(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 a 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 executados como root
, o local padrão para instalar os pacotes de fonte de instalação é /usr/src/packages/
e ~/rpmbuild
, quando executados 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.
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 é 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 dos pacotes 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 eles forem relevantes (e não classificados como optional
ou feature
), 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 gerenciamento de pacote propriamente dito.- 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), 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á emitida para reverter a atualização com bug, que é impedida de ser instalada 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 KernelConsulte 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
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:
>
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
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 comando a seguir 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.1 Pesquisando um software #
O comando zypper search
funciona em nomes de pacotes ou, opcionalmente, em descrições e resumos de pacotes. Uma string entre /
é interpretada como expressão regular. Por padrão, a pesquisa não diferencia maiúsculas de minúsculas.
- Pesquisa simples de nome de pacote que inclua
fire
>
zypper search "fire"- Pesquisa simples do pacote exato
MozillaFirefox
>
zypper search --match-exact "MozillaFirefox"- Pesquisar também em descrições e resumos de pacotes
>
zypper search -d fire- Exibir apenas pacotes ainda não instalados
>
zypper search -u fire- Exibir pacotes que tenham a string
fir
, não seguida pore
>
zypper se "/fir[^e]/"
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 consultar 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 /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. Esses são arquivos de programa para instalação e determinadas metainformações usadas durante a instalação pelo comando rpm
para configurar o pacote de softwares. Também são armazenados no banco de dados RPM com o objetivo de documentação. Normalmente, os arquivos têm a extensão .rpm
.
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
grava o arquivo modificado com a extensão.rpmorig
ou.rpmsave
(arquivo de backup) e instala a versão do novo pacote. Isso apenas será feito se o arquivo instalado originalmente e a versão mais recente forem diferentes. Nesse 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.Os arquivos
.rpmnew
serão exibidos se o arquivo de configuração já existir e se o rótulonoreplace
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”.
|
Informações de pacote |
|
Lista de arquivos |
|
Consulte o pacote que contém o arquivo FILE (o caminho completo deve ser especificado com FILE) |
|
Lista de arquivos com informações de status (requer |
|
Lista somente arquivos de documentação (requer |
|
Lista somente arquivos de configuração (requer |
|
Lista de arquivos com detalhes completos (a ser usada com |
|
Lista recursos do pacote que outro pacote pode solicitar com |
|
Recursos exigidos pelo pacote |
|
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
”.
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.
#! /bin/sh for i in $(rpm -q -a -l | grep $1); do echo "\"$i\" is in package:" rpm -q -f $i echo "" done
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:
|
Resumo de verificação MD5 |
|
Tamanho do arquivo |
|
Link simbólico |
|
Tempo de modificação |
|
Números de dispositivo principais e auxiliares |
|
Proprietário |
|
Grupo |
|
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
cron.daily
faz cópias diárias do banco de dados (compactado 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).
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 (geralmente arquivos.diff
ou.patch
)SPECS
para os arquivos
.spec
, similares a um metaMakefile, que controlam o processo de construçãoBUILD
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 fonte com o YaST, todos os componentes necessários são instalados em /usr/src/packages
: as origens e os ajustes em SOURCES
e o arquivo .spec
relevante em SPECS
.
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
: descompactar e corrigir.-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. Acesse informações adicionais com build
--help
e a leitura da página de manual do build
.
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.