Gerenciando software com ferramentas de linha de comando

Sumário

5.1. Usando o zypper
5.2. RPM — o gerenciador de pacotes

Resumo

Este capítulo descreve o Zypper e o RPM, duas ferramentas de linha de comando para gerenciar software.

Usando o zypper

O zypper é um gerenciador de pacotes de linha de comando para instalar, atualizar e remover pacotes, bem como para gerenciar repositórios. A sintaxe do zypper é semelhante à do rug. Ao contrário do rug, o zypper não requer que o daemon zmd seja executado nos bastidores. Para obter mais informações sobre compatibilidade com o rug, consulte man zypper, seção COMPATIBILIDADE COM O RUG. Ele é especialmente útil para realizar tarefas de gerenciamento remoto de software ou gerenciar software de scripts de shell.

Para obter mais informações sobre gerenciamento de software a partir da linha de comando, digite zypper help ou zypper help comando ou consulte a página de manual zypper(8).

Uso geral

A sintaxe geral do zypper é:

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

Os componentes entre colchetes não são obrigatórios. 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, digite:

zypper patch

Além disso, você pode escolher dentre uma ou mais opções globais, digitando-as antes do comando. Por exemplo, --non-interactive significa executar o comando sem perguntar nada (aplicando as respostas padrão automaticamente):

zypper --non-interactive patch

Para usar as opções específicas de um comando em particular, digite-as logo após o comando. Por exemplo, --auto-agree-with-licenses significa aplicar todos os patches necessários ao sistema sem solicitar confirmação de nenhuma licença (eles serão aceitos automaticamente):

zypper patch --auto-agree-with-licenses

Alguns comandos requerem um ou mais argumentos. Ao usar o comando install, por exemplo, é preciso especificar o(s) pacotes(s) a instalar:

zypper install mplayer

Algumas opções também requerem um 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 instalará os pacotes mplayer e amarok usando apenas o repositório factory e de modo verboso:

zypper -v install --repo factory mplayer amarok

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

zypper remove --dry-run MozillaFirefox

Instalando e removendo software com o zypper

Para instalar ou remover pacotes, use os seguintes comandos:

zypper install package
zypper remove package

O zypper conhece várias maneiras de tratar pacotes para os comandos install e remove:

pelo nome exato do pacote
zypper in MozillaFirefox
pelo álias do repositório e pelo nome do pacote
zypper in mozilla:MozillaFirefox

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

pelo nome do pacote usando curingas

O comando a seguir instalará todos os pacotes cujos nomes começam com Moz. Use-o com cuidado, principalmente ao remover pacotes.

zypper in Moz*
por recurso

Se você, por exemplo, desejar instalar um módulo perl sem saber o nome do pacote, os recursos vêm a calhar:

zypper in 'perl(Time::ParseDate)'
por recurso e/ou arquitetura e/ou versão

Juntamente com um recurso, você pode especificar uma arquitetura (como i586 ou x86_64) e/ou uma versão. A versão deve ser precedida por um operador: < (menor que), <= (menor que ou igual a), = (igual a), >= (maior que ou igual a), > (maior que).

zypper in 'firefox.x86_64'
zypper in 'firefox>=3.5.3'
zypper in 'firefox.x86_64>=3.5.3'
pelo caminho

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

zypper in /tmp/install/MozillaFirefox.rpm
zypper in http://download.opensuse.org/repositories/mozilla/SUSE_Factory/x86_64/MozillaFirefox-3.5.3-1.3.x86_64.rpm

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

zypper install emacs -vim

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

zypper remove emacs +vim

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

zypper install -emacs +vim       # Wrong
zypper install vim -emacs        # Correct
zypper install -- -emacs +vim    # same as above
zypper remove emacs +vim         # same as above

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 fornecida antes do comando real (instalar, remover e patch), como em

zypper --non-interactive install package_name

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

[Warning]não remova pacotes de sistema obrigatórios

Não remova pacotes como glibc, zypper, kernel ou similares. Esses pacotes são obrigatórios para o sistema e, se removidos, podem fazer o sistema ficar instável ou parar de funcionar de vez.

Instalando pacotes de fonte

Se desejar instalar o pacote de origem de um pacote, use:

zypper source-install package_name
   

Esse comando também instalará as dependências de compilação do pacote especificado. Se não quiser isso, adicione o switch -D. Para instalar apenas as dependências de compilação, use -d.

zypper source-install -d package_name # source package only
    zypper source-install -D package_name # build dependencies only

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 5.1.4, “Gerenciando repositórios com o zypper” para obter 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

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 somente são instalados se estiverem disponíveis de fato. Caso os pacotes recomendados sejam disponibilizados após a instalação do pacote que fez a recomendação (pela adição de pacotes adicionais), use o seguinte comando:

zypper install-new-recommends

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 executar a última maneira, usa-se o comando zypper dist-upgrade, abordado na Seção “Distribution Upgrade with zypper” (Capítulo 4, Updating SUSE Linux Enterprise, ↑Guia de Implantação).

Instalando patches

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

zypper patch

Nesse caso, todos os patches disponíveis em seus repositórios são verificados quanto à sua relevância e instalados, se necessário. Após o registro de sua instalação do SUSE Linux Enterprise Desktop, um repositório de atualização oficial contendo tais patches será adicionado ao seu sistema. O comando acima é tudo o que você deve digitar para aplicá-los quando necessário.

O zypper conhece três comandos diferentes para consultar a disponibilidade dos patches:

zypper patch-check

Lista o número de patches necessários (patches que se aplicam ao seu sistema e ainda não estão instalados)

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

Lista todos os patches necessários (patches que se aplicam ao seu sistema e ainda não estão instalados)


~ # zypper list-updates
Loading repository data...
Reading installed packages...
S | Repository | Name                          | Current | Available  | Arch
--+------------+-------------------------------+---------+------------+-------
v | Updates    | update-test-interactive       | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-optional          | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-reboot-needed     | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-relogin-suggested | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-security          | 0-2.35  | 0-9999.1.2 | noarch
zypper patches

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

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:

-b

Lista todos os patches necessários para problemas do Bugzilla.

--bugzilla[=número]

Lista os patches necessários para o problema do Bugzilla referente ao número especificado.

Para instalar um patch para um problema específico, use o comando:

zypper patch --bugzilla=number
  

Instalando atualizações

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 versões disponíveis mais novas, use:

zypper update

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

zypper update package
zypper install package

Uma lista de todos os novos pacotes disponíveis pode ser obtida com o comando:

zypper list-updates
[Note]diferenças entre zypper update e zypper dist-upgrade

Escolha zypper update para atualizar os pacotes com as versões mais recentes disponíveis para a sua versão do produto e manter a integridade do sistema. zypper update obedecerá às seguintes regras:

nenhuma mudança de fornecedor
nenhuma mudança de arquitetura
nenhum downgrade
manter pacotes instalados

Para fazer upgrade da sua instalação para uma versão nova do produto, use zypper dist-upgrade com os repositórios obrigatórios (consulte a Seção 5.1.4, “Gerenciando repositórios com o zypper” para obter detalhes). Esse comando garante que todos os pacotes serão instalados a partir dos repositórios atualmente habilitados. Como essa regra tem uso obrigatório assegurado, os pacotes podem mudar de fornecedor ou arquitetura ou até sofrer downgrade. Todos os pacotes com dependências não atendidas após o upgrade serão desinstalados.

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:



# | Alias                             | Name                              | Enabled | Refresh
--+-----------------------------------+-----------------------------------+---------+--------
1 | SUSE-Linux-Enterprise-Server 11-0 | SUSE-Linux-Enterprise-Server 11-0 | Yes     | No
2 | SLES-11-Updates                   | SLES 11 Online Updates            | Yes     | Yes
3 | broadcomdrv                       | Broadcom Drivers                  | Yes     | No      

Na especificação de repositórios em vários comandos, é possível usar um álias, URI ou número de repositório a partir da saída do comando zypper repos. Note, porém, que os números podem mudar após a modificação da 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:

Adicionando repositórios

Para adicionar um repositório, execute

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 http://en.opensuse.org/Libzypp/URI para obter detalhes). O Álias é um identificador exclusivo e abreviado do repositório. Pode ser escolhido livremente, com a única condição de que seja exclusivo. O zypper emitirá um aviso se você especificar um álias que já está em uso. Para tornar o trabalho com repositórios mais conveniente, use álias curtos e fáceis de lembrar.

Removendo repositórios

Se você deseja remover um repositório da lista, use o comando zypper removerepo junto com o álias ou o número do repositório que você deseja apagar. Para remover a terceira entrada do exemplo, use o seguinte comando:

zypper removerepo 3

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 habilitará o nome de repositório atualizações, ativar a atualização automática e definir sua prioridade como 20:

zypper mr -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 TIPO: repositórios de determinado tipo (TIPO pode ser um dos seguintes: http, https, ftp, cd, dvd, dir, file, cifs, smb, nfs, hd, iso)

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

zypper renamerepo 'Mozilla Firefox' firefox

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. Ele funciona para nomes de pacotes, recursos ou, opcionalmente, para resumos e descrições de pacotes. O uso dos curingas * e ? com o termo da pesquisa é permitido. Por padrão, a pesquisa não diferencia maiúsculas de minúsculas.

zypper se firefox       # simple search for "firefox"
zypper se *fire*        # using wildcards
zypper se -d fire       # also search in package descriptions and summaries
zypper se -u firefix    # only display packages not already installed

Para procurar pacotes que oferecem um recurso específico, use o comando what-provides. Se você, por exemplo, desejar saber qual pacote fornece o módulo perl SVN::Core, use o seguinte comando:

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

Para consultar pacotes únicos, use info com um nome exato de pacote como argumento. Ele exibe informações detalhadas sobre um pacote. Use as opções --requires e --recommends para mostrar também o que é requerido/recomendado pelo pacote:

zypper info --requires MozillaFirefox

O what-provides package é semelhante ao rpm -q --whatprovides package, 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.