Destruindo jargões Linux: O que é um gerenciador de pacotes no Linux? Como funciona?

Um dos principais pontos em que as distribuições Linux diferem umas das outras é o gerenciamento de pacotes.

Destruindo jargões Linux: O que é um gerenciador de pacotes no Linux? Como funciona?

Um dos principais pontos em que as distribuições Linux diferem umas das outras é o gerenciamento de pacotes. Nesta parte da série "Destruindo jargões Linux", você aprenderá sobre empacotamento e gerenciadores de pacotes no Linux. Você aprenderá o que são pacotes, o que são gerenciadores de pacotes e como eles funcionam, e que tipo de gerenciadores de pacotes disponíveis.

O que é um gerenciador de pacotes no Linux?

Falando de maneira simples simples, um gerenciador de pacotes é uma ferramenta que permite aos usuários instalar, remover, atualizar, configurar e gerenciar pacotes de software em um sistema operacional. O gerenciador de pacotes pode ser um aplicativo gráfico como um centro de software ou uma ferramenta de linha de comando como apt-get ou pacman.

Você costuma encontrar aqui o termo 'pacote', em tutoriais e artigos. Para entender o gerenciador de pacotes, você deve entender o que é um pacote.

O que é um pacote?

Um pacote geralmente é chamado de aplicativo, mas pode ser um aplicativo com interface gráfica, uma ferramenta de linha de comando ou uma biblioteca de software (exigida por outros programas de software). Um pacote é essencialmente um arquivo compactado que contém o executável binário, o arquivo de configuração e às vezes informações sobre as dependências.

Antigamente, o software costumava ser instalado a partir de seu código-fonte. Você deve consultar um arquivo (geralmente denominado readme) e ver quais componentes de software ele precisa e a localização dos binários. Um script de configuração ou makefile geralmente é incluído. Você terá que compilar o software por conta própria, além de lidar com todas as dependências (alguns softwares exigem a instalação de outro) por conta própria.

Para se livrar dessa complexidade, as distribuições Linux criaram seu próprio formato de pacotes para fornecer aos usuários finais arquivos binários prontos para uso (software pré-compilado) para instalação de software junto com alguns metadados (número da versão, descrição) e dependências.

Compilação versus empacotamento, é como fazer um bolo e comprar um bolo

É como fazer um bolo em vez de comprar um bolo.

Por volta de meados dos anos 90, o Debian criou o formato de empacotamento .deb ou DEB e o Red Hat Linux criou o sistema de empacotamento .rpm ou RPM (abreviação de Red Hat Package Manager). Ainda podemos compilar o código-fonte, mas agora é opcional.

Para interagir ou usar os sistemas de empacotamento, você precisa de um gerenciador de pacotes.

Como funciona o gerenciador de pacotes?

Lembre-se de que o gerenciador de pacotes é um conceito genérico e não é exclusivo do Linux. Você freqüentemente encontrará gerenciador de pacotes para diferentes softwares ou linguagens de programação. Existe um gerenciador de pacotes PIP apenas para pacotes Python. Até o editor Atom tem seu próprio gerenciador de pacotes.

Como o foco deste artigo é o Linux, vou considerar as coisas da perspectiva do Linux. No entanto, a maior parte da explicação aqui pode ser aplicada ao gerenciador de pacotes em geral também.

Eu criei este diagrama (baseado na Wiki do SUSE) para que você possa entender facilmente como funciona um gerenciador de pacotes.

Diagrama mostrando como funciona o sistema de empacotamento no Linux

Quase todas as distribuições do Linux têm repositórios de software que são basicamente uma coleção de pacotes de software. Sim, pode haver mais de um repositório. Os repositórios contêm pacotes de software de diferentes tipos.

Os repositórios também têm arquivos de metadados que contêm informações sobre os pacotes, como o nome do pacote, número da versão, descrição do pacote e o nome do repositório, etc. Isso é o que você verá se usar o comando apt show no Ubuntu / Debian.

O gerenciador de pacotes do seu sistema primeiro interage com os metadados. O gerenciador de pacotes cria um cache local de metadados em seu sistema. Quando você executa a opção de atualização do gerenciador de pacotes (por exemplo, apt update), ele atualiza esse cache local de metadados referindo-se aos metadados do repositório.

Quando você executa o comando de instalação do seu gerenciador de pacotes (por exemplo apt install nome_do_pacote), o gerenciador de pacotes se refere a este cache. Se encontrar as informações do pacote no cache, ele usa a conexão com a Internet para se conectar ao repositório apropriado e baixa o pacote antes de instalá-lo em seu sistema.

Um pacote pode ter dependências. O que significa que pode exigir que outros pacotes sejam instalados. O gerenciador de pacotes geralmente cuida das dependências e o instala automaticamente junto com o pacote que você está instalando.

Gerenciando pacotes gerenciando dependências no Linux

Da mesma forma, quando você remove um pacote usando o gerenciador de pacotes, ele remove ou informa automaticamente que seu sistema possui pacotes não usados que podem ser limpos.

Além das tarefas óbvias de instalação e remoção, você pode usar o gerenciador de pacotes para configurar os pacotes e gerenciá-los conforme sua necessidade. Por exemplo, você pode impedir a atualização de uma versão do pacote das atualizações regulares do sistema. Existem muitas outras coisas que seu gerenciador de pacotes pode ser capaz.

Diferentes tipos de gerenciadores de pacotes

Os gerenciadores de pacotes diferem com base no sistema de empacotamento, mas o mesmo sistema de empacotamento pode ter mais de um gerenciador de pacotes.

Por exemplo, RPM tem gerenciadores de pacotes Yum e DNF. Para DEB, você tem gerenciadores de pacotes baseados em linha de comando apt-get e aptitude.

Gerenciador de pacotes Synaptic

Os gerenciadores de pacotes não são necessariamente baseados em linha de comando. Você tem ferramentas gráficas de gerenciamento de pacotes como o Synaptic. O centro de software de sua distribuição também é um gerenciador de pacotes, mesmo que execute apt-get ou DNF por baixo.

Conclusão

Não quero entrar em mais detalhes neste tópico porque posso continuar indefinidamente. Mas isso se desviará do objetivo do tópico, que é fornecer uma compreensão básica do gerenciador de pacotes no Linux.

Omiti os novos formatos de embalagem universal, como Snap e Flatpak, por enquanto.

Espero que você compreenda um pouco melhor o sistema de gerenciamento de pacotes no Linux. Se você ainda está confuso ou se tem alguma dúvida sobre este tópico, por favor, use os comentários. Vou tentar responder às suas perguntas e, se necessário, atualizar este artigo com novos pontos.

Última atualização deste artigo: 4 de october de 2020