Skip to main content

Gerenciamento de pacotes no Linux (rpm, yum, apt-get, dpkg)

No Linux, programas são bem mais do que simples executáveis. Eles são compostos por diversos arquivos, incluindo bibliotecas, traduções, documentaç...
Gerenciamento de pacotes no Linux (rpm, yum, apt-get, dpkg)

No Linux, programas são bem mais do que simples executáveis. Eles são compostos por diversos arquivos, incluindo bibliotecas, traduções, documentação, etc. E como a instalação e remoção de cada um desses arquivos se tornaria uma tarefa muito complicada e trabalhosa, os programas acabam sendo organizados em pacotes: "arquivões" que contêm não apenas os componentes necessários para executar o programa, mas também scripts e metadados para a correta instalação e categorização deles.

Apesar de facilitar muito a vida de administradores de sistemas, os pacotes sozinhos também geram uma certa complicação. Muitos pacotes possuem dependências, ou seja, precisam que outros pacotes sejam instalados ou removidos antes deles. E para não termos que resolver todos esses conflitos manualmente existem os gerenciadores de pacotes.

A diferença básica das distribuições linux reside no gerenciador de pacotes que ela usa.

Lembre-se que existe 6 principais vertentes de distribuições linux e, cada uma delas, possui seus próprios gerenciadores de pacotes nativos:

Distribuição

Gerenciadores de pacotes

Tipo de pacote padrão

Debian

apt | dpkg

.deb

Ubuntu

apt | dpkg

.deb

Zorin OS

apt | dpkg

.deb

RedHat

yum | rpm

.rpm

Fedora

yum | rpm

.rpm

CentOS

yum | rpm

.rpm

Suse

yast | zypp

.rpm

Existem ainda alguns outros gerenciadores de pacotes não nativos que você pode usar: dnf, pacman, snap... Mas isto é assunto para outro momento.

O gerenciamento de pacotes é uma excelente maneira de distribuir, instalar e desinstalar software.

Um pacote é um arquivo que contém informações e arquivos (executáveis, binários, de configuração) necessários para que o gerenciador de pacotes possa manter os programas como também os demais arquivos necessários de um determinado aplicativo. Em outras palavras, um pacote é um programa compilado.

Vejamos agora os gerenciadores de pacotes mais importantes.


dpkg

Usado no Debian / Ubuntu

 
# dpkg [opções] nome_do_pacote.deb

É o utilitário responsável pelo gerenciamento de pacotes em sistemas Debian e seus derivados. Ele mantém as informações dos pacotes instalados basicamente nos arquivos /var/lib/dpkg/available e /var/lib/dpkg/status. Estes arquivos contém a lista de pacotes disponíveis e status, respectivamente.

Opções mais frequentes:

Opção

Descrição

-c pacote

(content) Lista os arquivos contidos no pacote.deb

-i pacote

Instala um pacote novo ou atualiza um pacote já instalado.

-l

Lista todos os pacotes instalados no sistema

-l pacote

Procura um pacote instalado com o nome desejado

-L pacote

Mostra o local dos arquivos instalados por um pacote

--p pacote

Mostra detalhes sobre o pacote (versão, dependências, arquitetura).

--purge pacode

remove todo o pacote em questão, inclusive configurações

-r pacote

remove todos os arquivos do pacote, exceto configurações

-s pacote

mostra o status de um pacote instalado

-S arquivo

procura (Search) por um arquivo nos pacotes instalados

--unpack pacote

desempacota um pacote, mas não instala

--configure pacote

configura um pacote não instalado

dpkg-reconfigure pacote

instalar pacote como se fosse a primeira vez


apt

Usado no Debian / Ubuntu

 
# apt-get [opções] ou [comando] [nome do pacote]

O comando apt-get é um gerenciador avançado de pacotes. Ele pode utilizar arquivos locais ou remotos para realizar instalação ou atualização de pacotes. Desta maneira é possível atualizar todo o sistema debian via ftp ou http. Este gerenciador também mantém informações do pacotes e suas dependências.

As configurações do apt-get ficam em /etc/apt/apt.conf

O arquivo /etc/apt/sources.list contém os locais onde o apt-get encontrará os pacotes, a distro verificada (stable, testing, unstable, woody, sarge) e a seção que será copiada (mais, non-free, contrib, non-US)

O apt-get utiliza uma lista de pacotes para verificar se os pacotes existentes no sistema precisam ou não ser atualizados. A lista mais nova de pacotes é copiada através do comando apt-get update

As opções mais frequentes do apt-get são:

Opção Descrição
-d

baixa os arquivos mas não instala. É util para baixar grande volumes de pacotes para posterior instalação

-s

simula a instalação dos pacotes, mas não realiza modificações

-y

responde afirmativamente por todas as perguntas feitas durante o processo de instalação/remoção

O comandos mais frequentes usadas com o apt são:

Comando

Descrição

update

atualiza a lista todos os pacotes disponíveis

install pacote

instala determinado pacote pelo nome

remove pacote

desinstala determinado pacote pelo nome

remove --purge pacote

desinstala e remove completamente o pacote

upgrade

atualização segura do sistema (remove versões antigas do kernel)

Vejamos alguns exemplos:

Antes de mais nada, é importante rodar :

 

# apt-get update

Este comando não atualiza a versão do seu linux, apenas lista os softwares e versão de kernel.

Para atualizar a VERSÃO do seu linux :

 

# apt dist-upgrade

Exemplo: mostrar informações completas sobre pacote específico :

 

# apt show nome-pacote

Exemplo: procurar pacotes a partir de parte do nome :

 

# apt-cache search nome-pacote

Exemplo: mostrar detalhes mais minuciosos sobre pacote:

 

# apt-cache showpkg nome-pacote

Exemplo: mostrar as dependências necessárias para instalar pacote:

 

# apt-cache depends nome-pacote

apt-cache não faz alterações no sistema, mas provê resultados interessantes para o administrador tomar decisões referente ao gerenciamento de pacotes.


yum

Usado no RedHat / Fedora / Centos

 

# yum [opções] pacote

Ferramenta utilizada para gerenciar pacotes em distros que utilizam RPM, é similar ao apt. Ele necessita que seja feita configuração dos repositórios de pacotes no arquivo de configuração yum.conf

Além de trabalhar com repositórios remotos, também serve para instalar, remover e manter pacotes (RPM). Comandos mais comuns:

Comando

Finalidade

list

lista todos os pacotes disponíveis (posso usar junto com greep)

check-update ou list updates

verificar se há pacotes disponíveis para update

update

faz o update do seu SO, incluindo kernel e grub

upgrade

mesmo que updade, mas remove pacs marcados como obsoletos

install pacote

instala o pacote e suas dependências

info pacote

apresenta informações básicas de um determinado pacote

whatprovides nome-comando

verifica qual pacote possui determinado comando

remove pacote

remove pacote específico, mas mantém configurações

autoremove pacote

remove completamente o pacote, inclusive configurações

yumdownloader pacote

baixa sem instalar

Vejamos exemplo simples de uso do yum:

Arquivo / diretório

Descrição

/etc/yum.confg

configurações principais

/var/cache/yum

onde arquivos são baixados

/var/log/yum.log

log de instalação realizadas

/etc/yum.repos.d

arquivos .repo que mostram os repositórios do yum

o YUM geralmente NÃO FAZ atualização de versão DISTRO .

rpm

Usado no RedHat / Fedora / Centos

Verificar se programa chamado zip está instalado. Se retornar Available Packages é porque não está instalado. Se retornar Installed Packages é porque está instalado.

 
# yum list zip
Last metadata expiration check: 0:16:36 ago on Mon 27 May 2019 08:20:55
Available Packages
zip.x86_64 3.0-24.fc30 fedora

 

Vamos então instalar o pacote zip:

 

 
# yum install zip
Last metadata expiration check: 0:20:53 ago on Mon 27 May 2019 08:20:55 AM EDT.
Dependencies resolved.
===================================================================================
Package Architecture Version Repository Size
===================================================================================
Installing:
zip x86_64 3.0-24.fc30 fedora 264 k

Transaction Summary
===================================================================================
Install 1 Package

Total download size: 264 k
Installed size: 885 k
Is this ok [y/N]: y
Downloading Packages:
zip-3.0-24.fc30.x86_64.rpm 2.4 MB/s | 264 kB 00:00
-----------------------------------------------------------------------------------
Total 49 kB/s | 264 kB 00:05
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : zip-3.0-24.fc30.x86_64 1/1
Running scriptlet: zip-3.0-24.fc30.x86_64 1/1
Verifying : zip-3.0-24.fc30.x86_64 1/1

Installed:
zip-3.0-24.fc30.x86_64

Complete!

Repare que agora, ao rodar a opção list, o programa vai aparecer como instalado no sistema:

 

# yum list zip

Last metadata expiration check: 0:21:17 ago on Mon 27 May 2019 08:20:55 AM

Installed Packages

zip.x86_64 3.0-24.fc30 @fedora


​Trabalhando com repositórios no yum:

 
# rpm [modo] [opções] [pacotes]

Vejamos as ações mais comuns de instalação, atualização e remoção de pacotes:

» Instalar novo pacote:

 

# rpm -i nome_do_pacote

» Atualizar um pacote :

 

# rpm -U nome_do_pacote

» Remover um pacote :

 

# rpm -e nome_do_pacote

Para refazer o banco de dados RPM:

 

# rpm --initdb

# rpm --rebuilddb

As opções de consulta de pacotes mais frequentes:

Opção

Descrição

-a

lista todos os pacotes instalados no sistema

-f arquivo

lista o nome do pacote que contém o arquivo procurado

-p pacote

mostra se um determinado pacote está instalado

-q pacote

consulta se pacote está instalado

-i pacote

mostra informações extras sobre um determinado pacote

-l pacote

mostra lista dos arquivo que um pacote contém

-R pacote

mostra lista de dependências que um pacote necessita para ser instalado

 

As opções adicionais de instalação e atualização de pacotes mais frequentes são:

 

Argumento

Descrição

--force

força a instalação de um pacote e seus arquivos, mesmo se ele já estiver instalado.

-h

mostra o progresso da instalação

--nodeps

desabilita a checagem de dependências para a instalação de um pacote

-v

mostra informações extras durante a instalação e atualização dos pacotes (verbose)

-vv

mostra muito mais informações durante a instalação e atualização dos pacotes. Geralmente utilizada por desenvolvedores.

 

RPM é bem menos usado, pois as dependências precisam ser baixadas manualmente, por exemplo .