Resumo
Este capítulo descreve o Zypper e o RPM, duas ferramentas de linha de comando para gerenciar software.
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).
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
Para instalar ou remover pacotes, use os seguintes comandos:
zypper installpackagezypper removepackage
O zypper conhece várias maneiras de tratar pacotes para os comandos install e remove:
zypper in MozillaFirefox
zypper in mozilla:MozillaFirefox
onde mozilla é o álias do repositório a partir do qual instalar.
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*
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)'
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'
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-interactiveinstallpackage_name
Essa opção permite o uso do zypper em scripts e tarefas cron.
![]() | não remova pacotes de sistema obrigatórios |
|---|---|
Não remova pacotes como | |
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 -dpackage_name# source package only zypper source-install -Dpackage_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
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
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).
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:
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)
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
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
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 updatepackagezypper installpackage
Uma lista de todos os novos pacotes disponíveis pode ser obtida com o comando:
zypper list-updates
![]() | 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:
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. | |||||
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:
Para adicionar um repositório, execute
zypper addrepoURIAlias
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.
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
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 : 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
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 é semelhante ao rpm -q --whatprovides packagepackage, 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.