Gestão de pacotes na CLI do openSUSE

Instalar programas, atualizar o sistema, remover pacotes de softwares desnecessários, deixar o sistema enxuto — enfim, gerenciamento de pacotes.
Neste texto, vou mostrar como estas atividades podem ser realizadas na CLI (Command Line Interface) ou interface da linha de comando — ou, simplesmente, o bom e eficiente terminal.
Escrevo sob a ótica de um usuário Debian/Ubuntu, de longa data, obrigado a usar um notebook openSUSE por alguns dias (ei! Estou gostando!) — e mantenho o hábito de resolver meus problemas com a flexibilidade e agilidade que só a CLI proporciona.
Se você tiver dificuldade para entender algum conceito, dê uma olhada no glossário, ao final do texto.

Mesmo em inglês o termo CLI não tem homogeneidade no seu significado, podendo ser também Command Language/Line Interpreter (Interpretador de Linguagem/Linha de Comando).
Outros termos se aplicam, como CUIConsole User Interface (Interface de Usuário no Console) ou Character User Interface (Interface ao Usuário em Caracteres).

Métodos tradicionais de instalação

A grande maioria dos usuários Linux sempre instalou seus softwares no computador, da mesma forma como, hoje, instala no smartphone — escolhendo de uma central de programas (comumente chamada “loja” ou store).
Há outros métodos, contudo, que existiam antes e ainda vão existir por muito tempo, em função de oferecer maior flexibilidade de uso, como veremos no decorrer deste texto.

Se você está vindo da “terra do Windows”, saiba que seus dias de ficar procurando programas de origem duvidosa, de sites duvidosos, acabaram. Ninguém faz isto no Linux, desde a década de 90!

Baixar e compilar os fontes de um software é o método mais tradicional, que merece um post só para ele — e que tem diversas vantagens em cima dos outros.
A preocupação de possibilitar aos usuários finais de seus softwares instalar, não somente, o programa principal, mas ter todo o ‘ecossistema’ de bibliotecas necessárias ao seu funcionamento, acompanha os desenvolvedores Linux desde os primórdios.
Um “pacote de softwares”, portanto, contém o programa que você quer, junto com algumas bibliotecas de necessidade imediata e informações sobre outras bibliotecas e softwares, cuja instalação é necessária ou sugerida.
O sistema de gestão de pacotes do Linux é capaz de baixar e instalar o programa do pacote, junto com as suas bibliotecas e — mais importante! — verificar se o sistema já tem todos os outros softwares necessários para o funcionamento do aplicativo que você deseja. Se não estiverem presentes, o gestor sugere sua instalação e informa, por exemplo, o tamanho que toda a instalação irá ocupar ao final.
Pacotes de softwares costumam vir comprimidos dentro de arquivos RPM e podem ter o mesmo problema de baixar softwares para Windows (se você não tiver certeza da idoneidade do site de onde você o pegou).
opensuse oficial logo

Gestão de pacotes com o zypper

O ZYpp (ou libzypp) é um mecanismo de gestão de pacotes que move aplicações Linux, como o YaST, Zypper e as implementações de Packagekit para o openSUSE e o SUSE Linux Enterprise.
Trata-se de uma ferramenta desenvolvida nos laboratórios da Novell e é distribuída sob a GPL v2.0.
O Zypper é o frontend para CLI do gestor de pacotes ZYpp.
Pode ser usado para instalar, remover pacotes, atualizar o sistema e exibir informações sobre pacotes de softwares locais ou remotos.

O Zypper também faz parte do sistema de gerenciamento de pacotes de distribuições Linux voltadas para equipamentos móveis, como o MeeGo, Sailfish OS e o Tizen (da Samsung).

Vejamos alguns exemplos de uso.
Para atualizar as informações do seu sistema em relação aos repositórios do openSUSE, use o comando refresh:

sudo zypper refresh
root's password:
O repositório 'openSUSE-13.2-Non-Oss' está atualizado.
Obtendo os metadados do repositório 'openSUSE-13.2-Oss' ---------------------[\]
Construindo o cache do repositório 'openSUSE-13.2-Oss' ..............[concluído]
Obtendo os metadados do repositório 'openSUSE-13.2-Update' ------------------

...

Se você pretende adotar a CLI para remover, instalar e atualizar seus softwares no openSUSE, é recomendável executar o refresh sempre, antes de começar.
Este processo serve para baixar e sincronizar os metadados dos pacotes entre o repositório remoto (ou em uma mídia) e o repositório local — construindo o solv cache, localizado em /var/cache/zypp/solv.
Depois do refresh, você pode tentar localizar o pacote ou pattern (padrão, perfil de instalação) desejado, com o comando search:

zypper search games

Veja o resultado dividido por colunas:

  1. coluna indicativa do status ou estado atual do pacote ou padrão. ‘i’ quer dizer que está instalado.
  2. nome do pacote ou padrão.
  3. descrição do pacote ou padrão.
  4. especificação da entidade.

Abaixo, segue o meu resultado — que mostra que o pattern ‘games’ já se encontra instalado:

Carregando os dados do repositório...
Lendo os pacotes instalados...

S | Nome                          | Resumo                        | Tipo        
--+-------------------------------+-------------------------------+-------------
  | bsd-games                     | Several Text-Mode Games       | pacote      
i | games                         | Games                         | padrão      
  | gnome-games                   | Games for GNOME -- meta pac-> | pacote      
  | gnome-games-extra-data        | Extra data files for GNOME -> | pacote      
i | gnome-games-recommended       | Recommended Games for GNOME   | pacote      
  | gnome-games-scripts           | Build helpers for gnome gam-> | pacote      
  | kdeaddons3-games              | Additional Modules for Atla-> | pacote      
  | kdegames3                     | Games for KDE                 | pacote      
  | kdegames3-arcade              | Arcade games for KDE          | pacote      
  | kdegames3-board               | KDE board games               | pacote      
  | kdegames3-card                | Card games for KDE            | pacote      
  | kdegames3-devel               | Games for KDE: Build Enviro-> | pacote      
  | kdegames3-tactic              | Tactic and logic games for -> | pacote      
  | kdegames4-carddecks-default   | Default Card Decks for KDE -> | pacote      
  | kdegames4-carddecks-other     | Further Card Decks for KDE -> | pacote      
  | libkdegames                   | General Data for KDE Games    | pacote      
  | libkdegames                   | General Data for KDE Games    | pacote fonte
  | libkdegames-devel             | Library for KDE Games: Buil-> | pacote      
  | libkdegames6                  | Library for KDE Games         | pacote      
  | opengl-games-utils            | Utilities to check proper 3-> | pacote      
i | patterns-openSUSE-games       | Games                         | pacote      
i | patterns-openSUSE-gnome_games | GNOME Games                   | pacote      
  | patterns-openSUSE-kde4_games  | KDE4 Games                    | pacote      
  | racket-games                  | Sample games from Racket Sc-> | pacote      
  | texlive-collection-games      | Games typesetting             | pacote      
  | texlive-context-games         | Package context-games         | pacote      
  | texlive-context-games-doc     | Documentation for texlive-c-> | pacote      

Como é possível observar, na figura abaixo, o padrão games, que já vem incluído na instalação “padrão”, não é muito extenso.
padrões de jogos no opensuse
É possível reduzir o tamanho da saída do comando search com a opção ‘–uninstalled-only’, que vai mostrar apenas os pacotes/padrões que já se encontram instalados no seu sistema. O contrário desta opção é ‘–installed-only’.
Veja um exemplo:

zypper search --installed-only games
Carregando os dados do repositório...
Lendo os pacotes instalados...

S | Nome                          | Resumo                      | Tipo  
--+-------------------------------+-----------------------------+-------
i | games                         | Games                       | padrão
i | gnome-games-recommended       | Recommended Games for GNOME | pacote
i | patterns-openSUSE-games       | Games                       | pacote
i | patterns-openSUSE-gnome_games | GNOME Games                 | pacote

Se quiser obter informações sobre um dos pacotes (na primeira lista), uso o comando info:

zypper info opengl-games-utils
Carregando os dados do repositório...
Lendo os pacotes instalados...


Informação para pacote opengl-games-utils:
------------------------------------------
Repositório: openSUSE-13.2-Oss
Nome: opengl-games-utils
Versão: 0.1-8.1.2
Arquitetura: noarch
Fornecedor: openSUSE
Instalado: Não
Status: não instalado
Tamanho após instalado: 2,4 KiB
Resumo: Utilities to check proper 3d support before launching 3d games
Descrição: 
  This package contains various shell scripts which are intended for use by
  3D games packages. These shell scripts can be used to check if direct
  rendering
  is available before launching an OpenGL game. This package is intended for use
  by other packages and is not intended for direct end user use!

De acordo com as informações, acima, é possível estabelecer que os softwares dentro do pacote, após a instalação, ocuparão 2,4 KiB.
Pela descrição, depreende-se que se trata de uma “dependência”, ou seja, este software não será executado diretamente pelo usuário final, mas pelos programas de jogos que necessitam testar o suporte aos gráficos 3d.
Para instalar um pacote, use o comando install, do zypper:

sudo zypper install opengl-games-utils
root's password:
Carregando os dados do repositório...
Lendo os pacotes instalados...
Resolvendo as dependências de pacote...

O seguinte pacote NOVO será instalado:
  opengl-games-utils 

1 novo pacote a ser instalado.
Tamanho total do download: 5,2 KiB. Já baixado: 0 B  Após a operação, 2,4 KiB 
adicionais serão utilizados.
Continuar? [s/n/? exibe todas as opções] (s): 

Note que, para atualizar (refresh), instalar e remover pacotes, já é necessário ter privilégios de superusuário.

Se quiser desinstalar o pacote, mais pra frente, use o comando remove:

sudo zypper remove opengl-games-utils
Carregando os dados do repositório...
Lendo os pacotes instalados...
Resolvendo as dependências de pacote...

O seguinte pacote será REMOVIDO:
  opengl-games-utils 

1 pacote para remover.
Após a operação, 2,4 KiB será liberado.
Continuar? [s/n/? exibe todas as opções] (s): 

Como última dica, caso você não se lembre do complemento exato do comando que deseja, use a tecla TAB, para obter uma lista de possibilidades na linha de comando, sem precisar abortar a atual linha:

zypper [pressione a tecla TAB]
Display all 108 possibilities? (y or n)
?
addlock
addrepo
addservice
al
ar
as
--cache-dir
cl
clean
cleanlocks
--config
--disable-repositories
--disable-system-resolvables
dist-upgrade
download
dup
--gpg-auto-import-keys
help
--help
if
--ignore-unknown
in
--More--

Glossário da gestão de pacotes no openSUSE


  • Repositório — é um diretório local ou remoto, contendo pacotes de softwares, além de informações adicionais acerca destes pacotes (meta-dados dos pacotes)
  • Pattern ou padrão — é um grupo de pacotes instalável e dedicado a certo propósito.
    Por exemplo, o grupo Laptop pattern contém todos os pacotes necessários para constituir um ambiente de computação móvel.
    O conceito é semelhante ao do Tasksel, no Debian.
    Os patterns definem as dependências de cada pacote componente do grupo e vem com uma pre-seleção de itens marcados para a instalação.
    Desta forma, ele garante que todos os pacotes de aplicativos necessários para aquele tipo de perfil de uso estarão presentes no equipamento de instalação.
  • Pacotes — são arquivos comprimidos, em formato RPM, contendo os arquivos referentes a uma aplicativo
  • Patch — consiste de um ou mais pacotes e podem conter dependências de outros pacotes que ainda não estejam instalados.
  • Dependências — são softwares ou bibliotecas de softwares dos(as) quais outros aplicativos dependem para serem instalados e/ou funcionar.
    Se você vai instalar um pacote de softwares e este necessita de outros pacotes para poder ser instalado e usado, estes outros pacotes complementares são chamados “dependências”.

Se você já conhece o sistema de gerenciamento de pacotes do Debian e Ubuntu, tenho certeza de que tudo isto lhe é muito familiar.

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), desenvolvedor web e geek, nos mais diversos assuntos. Entusiasta de software livre e hacker de LEGO, acredito em repassar meu conhecimento e ajudar as pessoas sempre que for possível.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *