Atualizado: 24/10/2024

Introdução aos Pacotes - Linux

No Linux, programas e outros softwares geralmente são distribuídos em forma de pacotes. Por padrão, uma distribuição Linux pode conter muitos pacotes, representando diferentes aplicações ou bibliotecas. Alguns pacotes podem precisar ser instalados manualmente.

Existem principalmente dois formatos de pacotes no mundo Linux: rpm e deb. O RPM (Red Hat Package Manager) foi criado pela Red Hat e atualmente é utilizado por várias distribuições, como Red Hat e derivados (por exemplo, Fedora) e também SUSE. O RPM utiliza pacotes com a extensão .rpm. Os nomes desses pacotes geralmente incluem o nome, a versão e a arquitetura do software. Por exemplo, o navegador Google Chrome para tais distribuições Linux é distribuído como o arquivo google-chrome-stable_current_x86_64.rpm.

Outro formato popular de pacote é o .deb, originalmente desenvolvido para o Debian Linux, mas agora também é o formato padrão para outras distribuições, das quais Ubuntu é a mais popular. Considerando que o Ubuntu é a plataforma baseada no Linux mais popular, vamos focar principalmente no gerenciamento de pacotes .deb.

Os pacotes contendo programas e bibliotecas podem ser distribuídos separadamente. Por exemplo, podemos visitar o site de uma empresa que fornece software para Linux e baixar o pacote necessário. O Google, por exemplo, oferece o navegador Google Chrome nos formatos .deb (para Debian/Ubuntu) e .rpm (para Fedora/openSUSE). Podemos baixar o pacote desejado e instalá-lo. No entanto, para simplificar a busca e o gerenciamento de pacotes, são utilizados repositórios, que podem ser vistos como depósitos de pacotes. Geralmente, as distribuições Linux fornecem software especial para o gerenciamento de pacotes: os gerenciadores de pacotes. Eles permitem, de forma conveniente, instalar ou remover o pacote necessário com apenas alguns comandos ou até mesmo com alguns cliques em uma interface gráfica.

Gerenciamento de Pacotes .deb

No sistema Ubuntu, a lista de todos os repositórios de pacotes é armazenada no arquivo /etc/apt/sources.list. Embora os repositórios de software mais importantes sejam adicionados automaticamente a este arquivo, às vezes pode ser necessário adicionar outros repositórios de software.

É importante diferenciar as várias categorias de pacotes usadas pelo Ubuntu, o que pode indicar o status atual do pacote, como se é considerado seguro ou se sua licença não atende aos padrões comuns de software de código aberto. As categorias de pacotes incluem:

  • Main: software oficialmente suportado pela Canonical (desenvolvedora do Ubuntu). Geralmente, esse é o software mais estável e suportado.

  • Restricted: principalmente software suportado que possui algumas restrições de licença e, consequentemente, de uso. Por exemplo, drivers para certos componentes de hardware que usam um acordo de licença específico, ou software que precisa ser comprado.

  • Universe: software gratuito que não é oficialmente suportado. Você pode usá-lo, e ele provavelmente funcionará sem problemas, mas você não receberá suporte da Canonical para os componentes de software desta categoria.

  • Multiverse: software não suportado que está sujeito a restrições de licença e não é considerado gratuito.

  • Backports: software mais recente que pode ser instável.

Por exemplo, o arquivo /etc/apt/sources.list no Ubuntu 23.10 pode parecer assim:

programicio@Programicio:~$ cat /etc/apt/sources.list
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://pt.archive.ubuntu.com/ubuntu/ mantic main restricted
# deb-src http://pt.archive.ubuntu.com/ubuntu/ mantic main restricted
...

Todas as linhas do arquivo sources.list usam o mesmo formato. O primeiro campo nessas linhas define o formato do pacote usado. Por padrão, são usados dois formatos diferentes de pacotes: deb para pacotes binários (arquivos de programa) e deb-src para pacotes com código fonte.

A seguir, é mencionado o URI, que geralmente é o URL do repositório. Depois, vem o nome da distribuição, por exemplo, mantic (geralmente, essa parte especifica a versão atual da distribuição). No final de cada linha, são indicadas as categorias de pacotes.

Se for necessário usar outros repositórios não listados no arquivo sources.list, eles podem ser adicionados no final do arquivo, em um formato semelhante.

Para o gerenciamento de pacotes deb em Debian, pode ser usada a ferramenta dpkg. No entanto, atualmente em Ubuntu (e também em Debian), o conjunto de ferramentas Advanced Packaging Tools ou apt é principalmente usado para gerenciar pacotes. O apt usa um banco de dados armazenado em /var/lib/apt. Cada vez que um pacote é instalado, uma lista de todos os arquivos instalados é adicionada ao banco de dados do pacote. Usando este banco de dados, o gerenciador de pacotes pode até verificar se arquivos de configuração específicos foram modificados.

A ferramenta apt aceita um comando como argumento, que indica a ação a ser realizada. Os comandos mais comuns são:

  • list: exibe pacotes com base no nome do pacote.

  • search: busca um pacote por expressão regular.

  • show: mostra informações sobre o pacote.

  • update: atualiza a lista de pacotes disponíveis para instalação. Este comando pode ser usado para garantir que você tenha a versão mais recente de um pacote.

  • upgrade: atualiza os pacotes para a última versão.

  • install: instala pacotes.

  • remove: remove pacotes.

Consultando Informações sobre Pacotes

Comando search

O comando search permite encontrar pacotes de acordo com um padrão específico. Por exemplo, vamos procurar todos os pacotes relacionados com a linguagem Python e sua versão 3.12:

programicio@Programicio:~$ sudo apt search python3.12
Sorting... Done
Full Text Search... Done
idle-python3.12/mantic 3.12.0-1 all
  IDE for Python (v3.12) using Tkinter

libpython3.12/mantic 3.12.0-1 amd64
  Shared Python runtime library (version 3.12)

# e mais resultados...

Essa busca retorna vários pacotes associados à versão 3.12 do Python, incluindo bibliotecas, ferramentas de desenvolvimento, e a própria instalação do Python.

Comando show

O comando show exibe informações detalhadas sobre um pacote específico. Vejamos as informações do pacote "python3.12":

programicio@Programicio:~$ sudo apt show python3.12
Package: python3.12
Architecture: amd64
Version: 3.12.0-1
Multi-Arch: allowed
Priority: optional
Section: universe/python
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Matthias Klose <doko@debian.org>
Depends: python3.12-minimal (= 3.12.0-1), libpython3.12-stdlib (= 3.12.0-1), media-types | mime-support, tzdata
...

Essa informação é crucial para entender as dependências do pacote, sua origem, e outros metadados importantes.

Verificando pacotes instalados

Para ver todos os pacotes instalados no sistema, usamos o comando dpkg -l:

programicio@Programicio:~$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                           Version
+++-==============================================-============================
ii  accountsservice                                23.13.9-2ubuntu2
ii  acl                                            2.3.1-3
...

Esta lista mostra todos os pacotes juntamente com seu status de instalação, o que é útil para gerenciamento de sistema e resolução de problemas.

Instalando e Removendo Pacotes

Antes de instalar qualquer pacote, é recomendável usar o comando update para garantir que o sistema esteja ciente das versões mais recentes dos pacotes e para atualizar o cache local com a lista dos pacotes mais recentes:

programicio@Programicio:~$ sudo apt update
# Saída do comando com a atualização das listas de pacotes

Para instalar pacotes, utilizamos o comando install, passando a lista de pacotes a serem instalados, separados por espaço. Por exemplo, para instalar o pacote "python3.12":

programicio@Programicio:~$ sudo apt install python3.12
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  python3.12
0 upgraded, 1 newly installed, 0 to remove and 13 not upgraded.
Need to get 629 kB of archives.
After this operation, 730 kB of additional disk space will be used.
...

Para remover pacotes, usamos o comando remove, também passando a lista de pacotes a serem removidos, separados por espaço. Por exemplo, para remover o pacote "python3.12":

sudo apt remove python3.12
# Saída do comando indicando a remoção do pacote
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com