Resumo de termos utilizados nesse post:
Termo | Descrição | Exemplo de Uso |
---|---|---|
rpm | RPM Package Manager, ferramenta para gerenciar pacotes de software. | rpm -ivh nome_do_pacote.rpm para instalar um pacote. |
rpm2cpio | Ferramenta que converte arquivos RPM em arquivos CPIO, facilitando a extração de conteúdo. CPIO (Copy In, Copy Out) é uma ferramenta de arquivamento de arquivos em sistemas Unix e semelhantes, como o Linux. Ele é usado para criar arquivos que contêm múltiplos arquivos e diretórios. O formato CPIO é frequentemente usado em conjunto com outras ferramentas de compressão, como gzip ou bzip2 , para criar arquivos compactados. | `rpm2cpio nome_do_pacote.rpm |
/etc/yum.conf | Arquivo de configuração principal do YUM, gerenciador de pacotes. | Configurações como cachedir , keepcache , e gpgcheck . |
/etc/yum.repos.d/ | Diretório que contém arquivos de configuração de repositórios do YUM. | Arquivos como CentOS-Base.repo que definem repositórios de pacotes. |
yum | Yellowdog Updater, Modified (YUM), um gerenciador de pacotes para sistemas baseados em RPM. | yum install nome_do_pacote para instalar um pacote. |
zypper | Gerenciador de pacotes para distribuições openSUSE e SUSE Linux Enterprise. | zypper install nome_do_pacote para instalar um pacote. |
Nos tempos antigos, a maneira mais comum de distribuir software era um arquivo comprimido geralmente um arquivo .tar.gz; nesse formato, o usuário precisava descomprimir e compilar.
Para facilitar, futuramente foi criado software pré-compilado, um modo mais fácil de obter e instalar os programas. Sabemos que compilar bem sempre é fácil e pode moderar bastante tempo. Assim, os primeiros gerenciadores de pacotes nasceram.
A empresa Red Hat desenvolveu o gerenciador de pacotes RPM Package Manager. Esse gerenciador é bastante utilizado não somente na distro (Red Hat Enterprise Linux ou RHEL) da Red Hat, mas também em seus derivados, como o Fedora, CentOS e Oracle Linux. E, até mesmo, em outros sistemas operacionais, como o AIX da IBM.
Outras ferramentas de gerenciamento de pacotes populares nas distribuições compatíveis com o Red Hat são,
- yum (YellowDog Updater Modified),
- dnf (Dandified YUM),
- zypper.
Nesse post iremos ver os gerenciadores de pacotes rpm, o yum, o dnf e o zypper para obter, instalar, gerenciar e remover software em um sistema Linux.
O RPM Package Manager (rpm)
INSTALAR UM PACOTE RPM
Para instalar um pacote RPM, você pode usar o comando rpm -ivh
:
rpm -ivh nome_do_pacote.rpm
-i
: Instala o pacote.-v
: Modo verboso, mostra detalhes da instalação.-h
: Mostra uma barra de progresso.
REMOVER UM PACOTE RPM
Para remover um pacote RPM, você pode usar o comando rpm -e
:
rpm -e nome_do_pacote
-e
: Remove o pacote.
ATUALIZAR UM PACOTE RPM
Para atualizar um pacote RPM, você pode usar o comando rpm -Uvh
:
rpm -Uvh nome_do_pacote.rpm
-U
: Atualiza o pacote.-v
: Modo verboso.-h
: Mostra uma barra de progresso.
LISTAR PACOTES INSTALADOS
Para listar todos os pacotes RPM instalados, você pode usar o comando rpm -qa
:
rpm -qa
-q
: Consulta o banco de dados RPM.-a
: Lista todos os pacotes instalados.
CONSULTAR INFORMAÇÕES SOBRE UM PACOTE INSTALADO
Para obter informações detalhadas sobre um pacote instalado, você pode usar o comando rpm -qi
:
rpm -qi nome_do_pacote
-q
: Consulta o banco de dados RPM.-i
: Mostra informações sobre o pacote.
LISTAR ARQUIVOS DE UM PACOTE INSTALADO
Para listar todos os arquivos de um pacote instalado, você pode usar o comando rpm -ql
:
rpm -ql nome_do_pacote
-q
: Consulta o banco de dados RPM.-l
: Lista os arquivos do pacote.
VERIFICAR A INTEGRIDADE DE UM PACOTE INSTALADO
Para verificar a integridade de um pacote instalado, você pode usar o comando rpm -V
:
rpm -V nome_do_pacote
-V
: Verifica a integridade do pacote.
LISTA DE ARQUIVOS DE PACOTE NÃO ISTALADO
Para obter informações ou uma lista de arquivos de um pacote que ainda não foi instalado, basta usar rpm -qip
rpm -qip atom.x86_64.rpm
ou
rpm -qlp atom.x86_64.rpm
VENDO QUAL PACOTE POSSUI UM ARQUIVO ESPECÍFICO
Para descobrir qual pacote instalado possui um arquivo, use o -qf (ou seja, “query file”)
rpm -qf /usr/bin/unzip
Se um pacote instalado depender do pacote que está sendo removido, aparecerá uma mensagem
de erro:
# rpm -e unzip
error: Failed dependencies:
/usr/bin/unzip is needed by (installed) file-roller-3.28.1-2.el7.x86_64
Para concluir a operação, primeiro é necessário remover os pacotes que dependem daquele que se deseja remover (no exemplo acima, file-roller).
Para facilitar, veja uma lista do significado de cada abreviação as opções do rpm:
- -i: Install (Instalar) um pacote.
- -v: Verbose (Verboso), mostra detalhes da operação.
- -h: Hash (Hash), mostra uma barra de progresso.
- -e: Erase (Remover) um pacote.
- -U: Upgrade (Atualizar) um pacote.
- -F: Freshen (Atualizar apenas os arquivos alterados ou ausentes).
- -q: Query (Consultar) o banco de dados RPM.
- -qa: Query All (Consultar todos), lista todos os pacotes instalados.
- -qi: Query Info (Consultar informações), mostra informações sobre um pacote.
- -ql: Query List (Consultar lista), lista os arquivos de um pacote.
- -qf: Query File (Consultar arquivo), encontra a qual pacote pertence um arquivo.
- -V: Verify (Verificar) a integridade de um pacote.
Gerenciando dependências
Uma dependência é um pacote ou componente que outro pacote precisa para funcionar corretamente. Quando você instala um pacote, ele pode precisar de outros pacotes para funcionar. Esses outros pacotes são chamados de dependências.
Diferentemente de yum
, apt
, ou zypper
, que automaticamente identificam e instalam as dependências necessárias, o rpm é mais básico, se a dependência não estiver instalada o rpm não instalará o pacote. Nesse caso, o rpm lista os pacotes faltantes.
# rpm -i gimp-2.8.22-1.el7.x86_64.rpm
libgimpcolor-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
libgimpconfig-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
libgimpmath-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
libgimpmodule-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
libgimpthumb-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
libgimpui-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
libgimpwidgets-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
YellowDog Updater Modified (YUM)
YUM é um gerenciador de pacotes de alto nível (amigável e com mais funcionalidades) usado principalmente em distribuições baseadas em Red Hat, como Red Hat Enterprise Linux (RHEL), CentOS e Fedora. Foi originalmente desenvolvido como Yellow Dog Updater (YUP), um gerenciamento de pacotes na distribuição Linux Yellow Dog. Após algum tempo ficou compatível para gerenciar pacotes RPM.
Ele é responsável por gerenciar pacotes .rpm
, incluindo a instalação, atualização, remoção e consulta de pacotes. Por ser de alto nível, o YUM resolve automaticamente as dependências dos pacotes, garantindo que todos os componentes necessários sejam instalados.
Segue um resumo de uso do yum:
- Instalar um Pacote:
yum install nome_do_pacote
- Atualizar um Pacote:
yum update nome_do_pacote
- Atualizar Todo o Sistema:
yum update
- Remover um Pacote:
yum remove nome_do_pacote
- Listar Pacotes Instalados:
yum list installed
- Pesquisar Pacotes:
yum search nome_do_pacote
- Verificar Atualizações Disponíveis:
yum check-update
#1 buscar por pacotes.
Para instalar um pacote, temos de saber o nome dele. O resultado é uma lista de pacotes cujo nome ou resumo contém o padrão de pesquisa especificado. Abaixo usamos padrões como 7zip, mysql…
# yum search 7zip
yum search mysql
yum search libssl.so
yum search curl
yum search "web server"
#2 para instalar um pacote usarmos yum install nome_pacote.
yum install p7zip
Para instalar os pacotes vim
e git
ao mesmo tempo
yum install vim git
yum install mysql-server
Para instalar o pacote php
do repositório epel
yum --enablerepo=epel install php
yum install python3
#3 para atualizar um pacote use yum update nome_pacote.
Use apenas yum update para atualizar todos os pacotes no sistema para os quais exista uma atualização disponível.
yum update
yum update wget
yum --enablerepo=epel update php
yum update mysql-server
#4 verificar se existe atualização
Para todos os pacotes
yum update
para um pacote
yum check-update wget
#5 encontrar o pacote que fornece um arquivo específico
o rpm mostra quais arquivos estão faltando, mas não lista o nome dos pacotes que os fornecem. Podemos usar yum whatprovides nome_pacote
yum whatprovides libgimpui-2.0.so.0
Ao encontrar o pacote na resposta poderemos instalá-lo usando yum install.
Isso funciona tanto para arquivos já existentes no sistema:
yum whatprovides /etc/hosts
#6 obter informações de pacote
Use yum info nome_pacote
yum info firefox
Gerenciando repositórios do yum
Dentro de /etc/yum.repos.d/ ficam os repositórios do yum. Cada arquivo .repo representa um diretório, exemplo CentOS-Base.repo. Se quiser adicionar um repositório basta incluir dentro dessa pasta um arquivo terminado em .repo ou no final do arquivo /etc/yum.conf.
podemos também usar comando yum-config-manager –add-repo
yum-config-manager --add-repo https://rpms.remirepo.net/enterprise/remi.repo
Para obter uma lista de todos os repositórios disponíveis, use yum repolist all
yum repolist all
Podemos desabilitar alguns repositórios com yum-config-manager –disable updates. Os repositórios disabled (desabilitados) serão ignorados ao instalar ou atualizar o software. Usamos apenas a parte anterior ao primeiro /, de forma que o id do repositório CentOS-7 Updates é updates, e não updates/7/x86_64.
yum-config-manager --disable updates
O comando acima desabilita o repositório updates. Para reativá-lo, use:
yum-config-manager --enable updates
CACHE LOCAL DO YUM
dentro de /var/cache/yum é onde o Yum armazena os pacotes baixados e os metadados associados. Esse diretório de cache pode ficar bem grande, use yum clean nome_opcao para limpar. nome_opcao pode ser:
yum clean all
: Remove todos os arquivos de cache, incluindo pacotes, cabeçalhos e metadados.yum clean packages
: Remove apenas os arquivos de pacotes do cache.yum clean headers
: Remove apenas os arquivos de cabeçalhos do cache.yum clean metadata
: Remove apenas os arquivos de metadados do cache.yum clean dbcache
: Remove o cache de banco de dados SQLite.yum clean expire-cache
: Remove os arquivos de cache que estão desatualizados.yum clean rpmdb
: Remove o cache do banco de dados RPM.yum clean plugins
: Remove o cache de plugins.
DNF
DNF é o sucessor do gerenciador de pacotes yum
e foi desenvolvido para melhorar a performance e adicionar novas funcionalidades em comparação ao yum
. É um fork do yum. Ele resolve automaticamente as dependências dos pacotes, garantindo que todos os componentes necessários sejam instalados.
Vejamos um resumo:
- Instalar um Pacote:
dnf install nome_do_pacote
- Atualizar um Pacote:
dnf update nome_do_pacote
- Atualizar Todo o Sistema:
dnf update
- Remover um Pacote:
dnf remove nome_do_pacote
- Listar Pacotes Instalados:
dnf list --installed
- Pesquisar Pacotes:
dnf search nome_do_pacote
- Verificar Atualizações Disponíveis:
dnf check-update
- Limpar Cache:
dnf clean all
- Obter informações sobre um pacote: dnf info
nome_do_pacote
- Descobrir qual pacote fornece um arquivo específico: dnf provides nome_arquivo
- Listar o conteúdo de um pacote: dnf repoquery -l
nome_do_pacote
ADMINISTRANDO REPOSITÓRIOS POR SOFTWARE
o dnf também trabalha com repositórios de software (repos).
Para obter uma lista de todos os repositórios disponíveis, use dnf repolist.
dnf repolist
para adicionar um repositório. Substitua URL pelo caminho completo do repositório
dnf config-manager --add_repo URL
Para habilitar um repositório
dnf config-manager --set -enabled REPO_ID
para desativar um repositório
dnf config-manager --set-disabled REPO_ID
DNF usa também o diretório o /etc/yum.repos.d/
Zypper
Zypper é o gerenciador de pacotes padrão para a distribuição Linux openSUSE. É usado para gerenciar pacotes .rpm
, incluindo a instalação, atualização, remoção e consulta de pacotes.
zypper
é uma interface de linha de comando para o sistema de gerenciamento de pacotes libzypp
, que é responsável por resolver dependências e gerenciar repositórios de pacotes.
Comandos comuns:
- Atualizando o índice do pacote: zypper refresh
- Obtendo informações sobre um pacote: zypper info gimp
- listar pacotes instalados: zypper se -i ou zypper search -i
- Para ver se um pacote específico está instalado: zypper se -i firefox. Para pesquisar apenas nos pacotes não-instalados, adicione o parâmetro -u ao operador se.
- Instalar um Pacote:
zypper install nome_do_pacote
ouzypper in nome_do_pacote
- Instalar pacote RPM: zypper in /home/john/newpackage.rpm
- Atualizar um Pacote:
zypper update nome_do_pacote
- Atualizar Todo o Sistema:
zypper update
- Remover um Pacote:
zypper remove nome_do_pacote
ouzypper rm nome_do_pacote
Lembre-se de que a remoção de um pacote também remove outros pacotes que dependem dele - Listar Pacotes Instalados:
zypper packages --installed-only
- Pesquisar Pacotes: zypper se gnumeric ou
zypper search nome_do_pacote
ou zypper se -i firefox - Verificar Atualizações Disponíveis:
zypper list-updates
- Limpar Cache:
zypper clean
- Adicionar um Repositório:
zypper addrepo nome_do_repositório url_do_repositório
- Remover um Repositório:
zypper removerepo nome_do_repositório
- quais pacotes possuem um arquivo específico: zypper se –provides /usr/lib64/libgimpmodule-2.0.so.0
Administrando os repositórios de software
Visualizar lista de repositórios
Ver todos os repositórios atualmente registrados no seu sistema, use zypper repos:
zypper repos
Ativar ou desativar repositórios
Na coluna Enabled vemos que alguns repositórios estão ativados e outros não. Para alterar usamos modifyrepo, seguido pelo parâmetro -e (enable) ou -d (disable) e pelo alias do repositório
# zypper modifyrepo -d repo-non-oss
Repository 'repo-non-oss' has been successfully disabled.
# zypper modifyrepo -e repo-non-oss
Repository 'repo-non-oss' has been successfully enabled.
Atualização automática
zypper possui um recurso de atualização automática. Esse processo pode ser controlado com os parâmetros -f e -F do operador modifyrepo:
# zypper modifyrepo -F repo-non-oss
Autorefresh has been disabled for repository 'repo-non-oss'.
# zypper modifyrepo -f repo-non-oss
Autorefresh has been enabled for repository 'repo-non-oss'.
Adicionando e removendo repositórios
Usamos addrepo para para adicionar um novo repositório de software para o zypper.
# zypper addrepo http://packman.inode.at/suse/openSUSE_Leap_15.1/ packman
Ao adicionar um repositório, podemos ativar as atualizações automáticas com o parâmetro -f.
Também, podemos adicionar o repostirório com status de desativado o parâmetro -d
Para remover um repositório usamos o operador removerepo
# zypper removerepo packman