Linux Professional Institute Learning Logo.
Ir para o conteúdo principal
  • Home
    • Todos os recursos
    • LPI Materiais Didáticos
    • Colabore Conosco
    • Publishing Partners
    • Seja um Publishing Partner
    • Quem Somos
    • FAQ
    • Colaboradores
    • Contato
  • LPI.org
102.4 Lição 1
Tópico 101: Arquitetura de Sistema
101.1 Identificar e editar configurações de hardware
  • 101.1 Lição 1
101.2 Início (boot) do sistema
  • 101.2 Lição 1
101.3 Alternar runlevels/boot targets, desligar e reiniciar o sistema
  • 101.3 Lição 1
Tópico 102: Instalação do Linux e administração de Pacotes
102.1 Dimensionar partições de disco
  • 102.1 Lição 1
102.2 Instalar o gerenciador de inicialização
  • 102.2 Lição 1
102.3 Controle de bibliotecas compartilhadas
  • 102.3 Lição 1
102.4 Utilização do sistema de pacotes Debian
  • 102.4 Lição 1
102.5 Utilização do sistema de pacotes RPM e YUM
  • 102.5 Lição 1
102.6 Linux virtualizado
  • 102.6 Lição 1
Tópico 103: Comandos GNU e Unix
103.1 Trabalhar na linha de comando
  • 103.1 Lição 1
  • 103.1 Lição 2
103.2 Processar fluxos de texto usando filtros
  • 103.2 Lição 1
103.3 Gerenciamento básico de arquivos
  • 103.3 Lição 1
  • 103.3 Lição 2
103.4 Fluxos, pipes (canalização) e redirecionamentos de saída
  • 103.4 Lição 1
  • 103.4 Lição 2
103.5 Criar, monitorar e finalizar processos
  • 103.5 Lição 1
  • 103.5 Lição 2
103.6 Modificar a prioridade de execução de um processo
  • 103.6 Lição 1
103.7 Procurar em arquivos de texto usando expressões regulares
  • 103.7 Lição 1
  • 103.7 Lição 2
103.8 Edição básica de arquivos com o vi
  • 103.8 Lição 1
Tópico 104: Dispositivos, sistemas de arquivos Linux e padrão FHS
104.1 Criar partições e sistemas de arquivos
  • 104.1 Lição 1
104.2 Manutenção da integridade de sistemas de arquivos
  • 104.2 Lição 1
104.3 Controle da montagem e desmontagem dos sistemas de arquivos
  • 104.3 Lição 1
104.5 Controlar permissões e propriedades de arquivos
  • 104.5 Lição 1
104.6 Criar e alterar links simbólicos e hardlinks
  • 104.6 Lição 1
104.7 Encontrar arquivos de sistema e conhecer sua localização correta
  • 104.7 Lição 1
How to get certified
  1. Tópico 102: Instalação do Linux e administração de Pacotes
  2. 102.4 Utilização do sistema de pacotes Debian
  3. 102.4 Lição 1

102.4 Lição 1

Certificação:

LPIC-1

Versão:

5.0

Tópico:

102 Instalação do Linux e gerenciamento de pacotes

Objetivo:

102.4 Como usar o gerenciamento de pacotes do Debian

Lição:

1 de 1

Introdução

Há muito tempo, quando o Linux ainda estava em sua primeira infância, a maneira mais comum de distribuir software era um arquivo comprimido (geralmente um arquivo .tar.gz) com código-fonte que o usuário precisava descomprimir e compilar.

No entanto, à medida que aumentava a quantidade e a complexidade do software, ficou clara a necessidade de uma maneira de distribuir software pré-compilado. Afinal, nem todos dispunham dos recursos necessários, tanto de tempo quanto de poder de computação, para compilar projetos grandes como o kernel do Linux ou um X Server.

Nasceu assim uma busca para padronizar uma maneira de distribuir esses “pacotes”' de software, e os primeiros gerenciadores de pacotes nasceram. Essas ferramentas facilitaram muito a tarefa de instalar, configurar ou remover software de um sistema.

Um deles era o formato de pacote Debian (.deb) e sua ferramenta de pacote (dpkg). Hoje, eles são amplamente utilizados não somente no próprio Debian, mas também em seus derivativos, como o Ubuntu e os derivados dele.

Outra ferramenta de gerenciamento de pacotes muito popular nos sistemas baseados em Debian é a Advanced Package Tool (apt), capaz de otimizar muitos dos aspectos da instalação, manutenção e remoção de pacotes.

Nesta lição, aprenderemos como usar o dpkg e o apt para obter, instalar, manter e remover software de um sistema Linux baseado em Debian.

A ferramenta de pacotes do Debian (dpkg)

A ferramenta Debian Package (dpkg) é o utilitário essencial para instalar, configurar, manter e remover pacotes de software em sistemas baseados em Debian. A operação mais básica é instalar um pacote .deb, o que pode ser feito com:

# dpkg -i PACKAGENAME

Onde PACKAGENAME é o nome do arquivo .deb que desejamos instalar.

As atualizações de pacotes são tratadas da mesma maneira. Antes de instalar um pacote, o dpkg verifica se já existe uma versão anterior no sistema. Nesse caso, o pacote será atualizado para a nova versão. Caso contrário, uma nova cópia será instalada.

Como gerenciar as dependências

Na maioria das vezes, um pacote depende de outros para funcionar adequadamente. Por exemplo, um editor de imagens pode precisar de bibliotecas para abrir arquivos JPEG ou outro utilitário pode precisar de um kit de ferramentas de widget como o Qt ou o GTK para a interface de usuário.

O dpkg verifica se essas dependências estão instaladas em seu sistema; se não estiverem, ele não conseguirá instalar o pacote. Nesse caso, o dpkg lista os pacotes faltantes. No entanto, ele não pode resolver dependências sozinho. Cabe ao usuário encontrar os pacotes .deb com as dependências correspondentes e instalá-los.

No exemplo abaixo, o usuário tentou instalar o pacote do editor de vídeo OpenShot, mas algumas dependências estavam ausentes:

# dpkg -i openshot-qt_2.4.3+dfsg1-1_all.deb
(Reading database ... 269630 files and directories currently installed.)
Preparing to unpack openshot-qt_2.4.3+dfsg1-1_all.deb ...
Unpacking openshot-qt (2.4.3+dfsg1-1) over (2.4.3+dfsg1-1) ...
dpkg: dependency problems prevent configuration of openshot-qt:
 openshot-qt depends on fonts-cantarell; however:
  Package fonts-cantarell is not installed.
 openshot-qt depends on python3-openshot; however:
  Package python3-openshot is not installed.
 openshot-qt depends on python3-pyqt5; however:
  Package python3-pyqt5 is not installed.
 openshot-qt depends on python3-pyqt5.qtsvg; however:
  Package python3-pyqt5.qtsvg is not installed.
 openshot-qt depends on python3-pyqt5.qtwebkit; however:
  Package python3-pyqt5.qtwebkit is not installed.
 openshot-qt depends on python3-zmq; however:
  Package python3-zmq is not installed.

dpkg: error processing package openshot-qt (--install):
 dependency problems - leaving unconfigured
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for gnome-menus (3.32.0-1ubuntu1) ...
Processing triggers for desktop-file-utils (0.23-4ubuntu1) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for man-db (2.8.5-2) ...
Errors were encountered while processing:
 openshot-qt

Como mostrado acima, o OpenShot depende dos pacotes fonts-cantarell, python3-openshot, python3-pyqt5, python3-pyqt5.qtsvg, python3-pyqt5.qtwebkit e python3-zmq. Todos eles precisam ser instalados antes que a instalação do OpenShot possa ser realizada com sucesso.

Removendo pacotes

Para remover um pacote, passe o parâmetro -r para dpkg, seguido pelo nome do pacote. Por exemplo, o seguinte comando removerá o pacote unrar do sistema:

# dpkg -r unrar
(Reading database ... 269630 files and directories currently installed.)
Removing unrar (1:5.6.6-2) ...
Processing triggers for man-db (2.8.5-2) ...

A operação de remoção também executa uma verificação de dependências. Um pacote não pode ser removido, a menos que todos os outros pacotes que dependem dele também o sejam. Se você tentar fazer isso, receberá uma mensagem de erro como a abaixo:

# dpkg -r p7zip
dpkg: dependency problems prevent removal of p7zip:
 winetricks depends on p7zip; however:
  Package p7zip is to be removed.
 p7zip-full depends on p7zip (= 16.02+dfsg-6).

dpkg: error processing package p7zip (--remove):
 dependency problems - not removing
Errors were encountered while processing:
 p7zip

É possível passar vários nomes de pacotes para o dpkg -r, para que todos sejam removidos de uma só vez.

Quando um pacote é removido, os arquivos de configuração correspondentes são deixados no sistema. Se a ideia for remover tudo que esteja associado ao pacote, use a opção -P (purge) em vez de -r.

Note

Podemos forçar o dpkg a instalar ou remover um pacote, mesmo que as dependências não sejam atendidas, adicionando o parâmetro --force como em dpkg -i --force PACKAGENAME. No entanto, isso provavelmente deixará o pacote, ou mesmo o sistema, em um estado de falha. Não use --force, a menos que tenha certeza absoluta do que está fazendo.

Obtendo informações sobre um pacote

Para obter informações sobre um pacote .deb, como a versão, arquitetura, mantenedor, dependências e outras, use o comando dpkg com o parâmetro -I, seguido pelo nome do arquivo do pacote que deseja inspecionar:

# dpkg -I google-chrome-stable_current_amd64.deb
 new Debian package, version 2.0.
 size 59477810 bytes: control archive=10394 bytes.
    1222 bytes,    13 lines      control
   16906 bytes,   457 lines   *  postinst             #!/bin/sh
   12983 bytes,   344 lines   *  postrm               #!/bin/sh
    1385 bytes,    42 lines   *  prerm                #!/bin/sh
 Package: google-chrome-stable
 Version: 76.0.3809.100-1
 Architecture: amd64
 Maintainer: Chrome Linux Team <chromium-dev@chromium.org>
 Installed-Size: 205436
 Pre-Depends: dpkg (>= 1.14.0)
 Depends: ca-certificates, fonts-liberation, libappindicator3-1, libasound2 (>= 1.0.16), libatk-bridge2.0-0 (>= 2.5.3), libatk1.0-0 (>= 2.2.0), libatspi2.0-0 (>= 2.9.90), libc6 (>= 2.16), libcairo2 (>= 1.6.0), libcups2 (>= 1.4.0), libdbus-1-3 (>= 1.5.12), libexpat1 (>= 2.0.1), libgcc1 (>= 1:3.0), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.31.8), libgtk-3-0 (>= 3.9.10), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.22), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libuuid1 (>= 2.16), libx11-6 (>= 2:1.4.99.1), libx11-xcb1, libxcb1 (>= 1.6), libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6 (>= 2:1.2.99.4), libxrandr2 (>= 2:1.2.99.3), libxrender1, libxss1, libxtst6, lsb-release, wget, xdg-utils (>= 1.0.2)
 Recommends: libu2f-udev
 Provides: www-browser
 Section: web
 Priority: optional
 Description: The web browser from Google
  Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier.

Listando os pacotes instalados e conteúdos dos pacotes

Para obter uma lista de todos os pacotes instalados no sistema, use a opção --get-selections, como em dpkg --get-selections. Também é possível obter uma lista de todos os arquivos instalados por um pacote específico passando o parâmetro -L PACKAGENAME para o dpkg, como mostrado abaixo:

# dpkg -L unrar
/.
/usr
/usr/bin
/usr/bin/unrar-nonfree
/usr/share
/usr/share/doc
/usr/share/doc/unrar
/usr/share/doc/unrar/changelog.Debian.gz
/usr/share/doc/unrar/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/unrar-nonfree.1.gz

Descobrindo qual pacote possui um arquivo específico

Às vezes, podemos precisar descobrir qual pacote possui um arquivo específico no sistema. Para isso, usamos o utilitário dpkg-query, seguido pelo parâmetro` -S` e o caminho para o arquivo em questão:

# dpkg-query -S /usr/bin/unrar-nonfree
unrar: /usr/bin/unrar-nonfree

Reconfigurando os pacotes instalados

Quando um pacote é instalado, existe uma etapa de configuração chamada pós-instalação, na qual um script é executado para definir tudo o que é necessário para a execução do software, como permissões, local dos arquivos de configuração etc. Ele também pode fazer algumas perguntas ao usuário sobre as preferências para a execução do software.

Às vezes, devido a um arquivo de configuração corrompido ou malformado, pode ser necessário restaurar as configurações de um pacote para o estado “novo”, ou você pode querer alterar as respostas que deu às questões da configuração inicial. Para isso, execute o utilitário dpkg-reconfigure, seguido pelo nome do pacote.

Este programa faz um backup dos arquivos de configuração antigos, descompacta os novos nos diretórios corretos e executa o script de pós-instalação fornecido pelo pacote, como se o pacote tivesse sido instalado pela primeira vez. Tente reconfigurar o pacote tzdata com o seguinte exemplo:

# dpkg-reconfigure tzdata

Ferramenta de pacotes avançada (apt)

O Advanced Package Tool (APT) é um sistema de gerenciamento de pacotes com um conjunto de ferramentas que simplifica bastante a instalação, atualização, remoção e gerenciamento de pacotes. O APT fornece recursos como busca avançada e resolução automática de dependências.

O APT não é um “substituto” para o dpkg. Ele está mais para um “front end”, simplificando operações e preenchendo lacunas na funcionalidade do dpkg, como a resolução de dependências.

O APT trabalha em conjunto com repositórios de software que contêm os pacotes disponíveis para instalação. Esses repositórios podem ser um servidor local ou remoto, ou (o que é menos comum) até um disco CD-ROM.

As distribuições Linux, como Debian e Ubuntu, mantêm seus próprios repositórios. Outros repositórios podem ser mantidos por desenvolvedores ou grupos de usuários para fornecer software que não está disponível nos principais repositórios de distribuição. Existem muitos utilitários que interagem com o APT, sendo os principais:

apt-get

usado para baixar, instalar, atualizar ou remover pacotes do sistema.

apt-cache

usado para executar operações, como pesquisas, no índice do pacote.

apt-file

usado para buscar arquivos dentro de pacotes.

Existe também um utilitário mais “amigável” chamado simplesmente apt, que combina as opções mais usadas de apt-get e apt-cache em um único utilitário. Muitos dos comandos de apt são os mesmos de apt-get, de forma que eles são intercambiáveis em diversos casos. Porém, como o apt pode não estar instalado em um sistema, é recomendável aprender a usar o apt-get e o apt-cache.

Note

É melhor usar apt e apt-get com uma conexão de rede, pois pode ser necessário baixar pacotes e índices de pacotes de um servidor remoto.

Atualizando o índice do pacote

Antes de instalar ou atualizar o software com o APT, é recomendável atualizar primeiro o índice do pacote para recuperar informações sobre pacotes novos e atualizados. Isso é feito com o comando apt-get, seguido pelo parâmetro update:

# apt-get update
Ign:1 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:2 https://repo.skype.com/deb stable InRelease
Hit:3 http://us.archive.ubuntu.com/ubuntu disco InRelease
Hit:4 http://repository.spotify.com stable InRelease
Hit:5 http://dl.google.com/linux/chrome/deb stable Release
Hit:6 http://apt.pop-os.org/proprietary disco InRelease
Hit:7 http://ppa.launchpad.net/system76/pop/ubuntu disco InRelease
Hit:8 http://us.archive.ubuntu.com/ubuntu disco-security InRelease
Hit:9 http://us.archive.ubuntu.com/ubuntu disco-updates InRelease
Hit:10 http://us.archive.ubuntu.com/ubuntu disco-backports InRelease
Reading package lists... Done
Tip

Em vez de apt-get update, você também pode usar apt update.

Instalando e removendo pacotes

Com o índice do pacote atualizado, já podemos instalar o pacote. Isso é feito com apt-get install, seguido pelo nome do pacote a instalar:

# apt-get install xournal
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  xournal
0 upgraded, 1 newly installed, 0 to remove and 75 not upgraded.
Need to get 285 kB of archives.
After this operation, 1041 kB of additional disk space will be used.

Da mesma maneira use apt-get remove, seguido pelo nome do pacote:

# apt-get remove xournal
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  xournal
0 upgraded, 0 newly installed, 1 to remove and 75 not upgraded.
After this operation, 1041 kB disk space will be freed.
Do you want to continue? [Y/n]

Lembre-se de que, ao instalar ou remover pacotes, o APT executará a resolução automática de dependências. Assim, todos os pacotes adicionais necessários para o pacote que você está instalando também serão instalados, e os pacotes que dependem do pacote que você está removendo também serão removidos. O APT sempre mostra o que será instalado ou removido antes de perguntar se você deseja continuar:

# apt-get remove p7zip
Reading package lists... Done
Building dependency tree
The following packages will be REMOVED:
  android-libbacktrace android-libunwind android-libutils
  android-libziparchive android-sdk-platform-tools fastboot p7zip p7zip-full
0 upgraded, 0 newly installed, 8 to remove and 75 not upgraded.
After this operation, 6545 kB disk space will be freed.
Do you want to continue? [Y/n]

Note que, quando um pacote é removido, os arquivos de configuração correspondentes são deixados no sistema. Para remover o pacote e todos os arquivos de configuração, use o parâmetro purge em vez de remove, ou o parâmetro remove com a opção --purge:

# apt-get purge p7zip

ou

# apt-get remove --purge p7zip
Tip

Também podemos usar apt install e apt remove.

Corrigindo dependências quebradas

É possível ter “dependências quebradas” em um sistema. O termo significa que um ou mais dos pacotes instalados dependem de outros pacotes que não foram instalados ou não estão mais presentes. Isso pode ocorrer devido a um erro do APT ou a um pacote instalado manualmente.

Para resolver o problema, use o comando apt-get install -f. Ele procura “consertar” os pacotes quebrados instalando as dependências ausentes, garantindo que todos os pacotes voltem a ficar consistentes.

Tip

Você também pode usar apt install -f.

Atualizando pacotes

O APT pode ser usado para atualizar automaticamente quaisquer pacotes instalados para as versões mais recentes disponíveis nos repositórios. Isso é feito com o comando apt-get upgrade. Antes de executá-lo, primeiro atualize o índice do pacote com apt-get update:

# apt-get update
Hit:1 http://us.archive.ubuntu.com/ubuntu disco InRelease
Hit:2 http://us.archive.ubuntu.com/ubuntu disco-security InRelease
Hit:3 http://us.archive.ubuntu.com/ubuntu disco-updates InRelease
Hit:4 http://us.archive.ubuntu.com/ubuntu disco-backports InRelease
Reading package lists... Done

# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  gnome-control-center
The following packages will be upgraded:
  cups cups-bsd cups-client cups-common cups-core-drivers cups-daemon
  cups-ipp-utils cups-ppdc cups-server-common firefox-locale-ar (...)

74 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Need to get 243 MB of archives.
After this operation, 30.7 kB of additional disk space will be used.
Do you want to continue? [Y/n]

O resumo na parte inferior da saída mostra quantos pacotes serão atualizados, quantos serão instalados, removidos ou retidos, o tamanho total do download e quanto espaço extra em disco será necessário para concluir a operação. Para concluir a atualização, basta responder Y e aguardar o apt-get concluir a tarefa.

Para atualizar um único pacote, basta executar apt-get upgrade seguido pelo nome do pacote. Como o dpkg, o apt-get primeiro verifica se uma versão anterior de um pacote está instalada. Nesse caso, o pacote será atualizado para a versão mais recente disponível no repositório. Caso contrário, uma cópia nova será instalada.

Tip

Você também pode usar apt upgrade e apt update.

A cache local

Quando instalamos ou atualizamos um pacote, o arquivo .deb correspondente é baixado em um diretório de cache local antes do pacote ser instalado. Por padrão, esse diretório é /var/cache/apt/archives. Os arquivos parcialmente baixados são copiados para /var/cache/apt/archives/partial/.

Conforme instalamos e atualizamos diferentes pacotes, o diretório da cache pode ficar bastante volumoso. Para recuperar espaço, podemos esvaziar a cache usando o comando apt-get clean. Ele remove o conteúdo dos diretórios /var/cache/apt/archives e /var/cache/apt/archives/partial/.

Tip

Também podemos usar apt clean.

Buscando pacotes

O utilitário apt-cache pode ser usado para executar operações no índice dos pacotes, como buscar um pacote específico ou listar quais pacotes contêm um arquivo determinado.

Para realizar uma pesquisa, use apt-cache search seguido por um padrão de pesquisa. A saída será uma lista de todos os pacotes que contêm o padrão, seja no nome do pacote, na descrição ou nos arquivos fornecidos.

# apt-cache search p7zip
liblzma-dev - XZ-format compression library - development files
liblzma5 - XZ-format compression library
forensics-extra - Forensics Environment - extra console components (metapackage)
p7zip - 7zr file archiver with high compression ratio
p7zip-full - 7z and 7za file archivers with high compression ratio
p7zip-rar - non-free rar module for p7zip

No exemplo acima, a entrada liblzma5 - XZ-format compression library não parece corresponder ao padrão. No entanto, se mostrarmos as informações completas do pacote, incluindo a descrição, usando o parâmetro show, encontraremos o padrão:

# apt-cache show liblzma5
Package: liblzma5
Architecture: amd64
Version: 5.2.4-1
Multi-Arch: same
Priority: required
Section: libs
Source: xz-utils
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Jonathan Nieder <jrnieder@gmail.com>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 259
Depends: libc6 (>= 2.17)
Breaks: liblzma2 (<< 5.1.1alpha+20110809-3~)
Filename: pool/main/x/xz-utils/liblzma5_5.2.4-1_amd64.deb
Size: 92352
MD5sum: 223533a347dc76a8cc9445cfc6146ec3
SHA1: 8ed14092fb1caecfebc556fda0745e1e74ba5a67
SHA256: 01020b5a0515dbc9a7c00b464a65450f788b0258c3fbb733ecad0438f5124800
Homepage: https://tukaani.org/xz/
Description-en: XZ-format compression library
 XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm
 compression format, which provides memory-hungry but powerful
 compression (often better than bzip2) and fast, easy decompression.
 .
 The native format of liblzma is XZ; it also supports raw (headerless)
 streams and the older LZMA format used by lzma. (For 7-Zip's related
 format, use the p7zip package instead.)

Você pode usar expressões regulares com o padrão de pesquisa, permitindo buscas bastante complexas (e precisas). No entanto, esse tópico está fora do escopo desta lição.

Tip

Também é possível usar apt search em vez de apt-cache search e apt show em vez de apt-cache show.

A lista de fontes

O APT usa uma lista de fontes para saber de onde obter pacotes. Esta lista é armazenada no arquivo sources.list, localizada dentro do diretório /etc/apt. Esse arquivo pode ser editado diretamente com um editor de texto, como vi, pico ou nano, ou com utilitários gráficos como aptitude ou synaptic.

Uma linha típica dentro de sources.list é assim:

deb http://us.archive.ubuntu.com/ubuntu/ disco main restricted universe multiverse

A sintaxe é tipo de arquivo, URL, distribuição e um ou mais componentes, onde:

Tipo de arquivo

Um repositório pode conter pacotes com software pronto para execução (pacotes binários, do tipo deb) ou com o código fonte desse software (pacotes de origem, do tipo deb-src). O exemplo acima fornece pacotes binários.

URL

A URL do repositório.

Distribuição

O nome (ou codinome) da distribuição para a qual os pacotes são fornecidos. Um repositório pode hospedar pacotes para várias distribuições. No exemplo acima, disco é o codinome do Ubuntu 19.04, Disco Dingo.

Componentes

Cada componente representa um conjunto de pacotes. Esses componentes podem ser diferentes nas diversas distribuições Linux. Por exemplo, no Ubuntu e derivados, eles são:

main

contém pacotes de código aberto oficialmente suportados.

restricted

contém software de código fechado oficialmente suportado, como drivers de dispositivo para placas gráficas, por exemplo.

universe

contém software de código aberto mantido pela comunidade.

multiverse

contém software não suportado, de código fechado ou protegido por patente.

No Debian, os principais componentes são:

main

consiste em pacotes compatíveis com as Debian Free Software Guidelines (DFSG), que não dependem de software externos a essa área para operar. Os pacotes incluídos aqui são considerados parte da distribuição Debian.

contrib

contém pacotes compatíveis com DFSG, mas que dependem de outros pacotes que não estão no main.

non-free

contém pacotes que não são compatíveis com o DFSG.

security

contém atualizações de segurança.

backports

contém versões mais recentes dos pacotes que estão em main. O ciclo de desenvolvimento das versões estáveis do Debian é bastante longo (cerca de dois anos), garantindo que os usuários possam obter os pacotes mais atualizados sem precisar modificar o repositório principal main.

Note

Para saber mais sobre as Debian Free Software Guidelines, visite: https://www.debian.org/social_contract#guidelines

Para adicionar um novo repositório do qual obter pacotes, você pode simplesmente acrescentar a linha correspondente (geralmente fornecida pelo mantenedor do repositório) ao final de sources.list, salvar o arquivo e recarregar o índice do pacote com apt-get update. Depois disso, os pacotes do novo repositório estarão disponíveis para instalação usando apt-get install.

Lembre-se de que as linhas que começam com o caractere # são consideradas comentários e ignoradas. ===== O diretório /etc/apt/sources.list.d

Dentro do diretório /etc/apt/sources.list.d, podemos adicionar arquivos com repositórios adicionais a serem usados pelo APT, sem a necessidade de modificar o arquivo principal /etc/apt/sources.list. Trata-se de arquivos de texto simples, com a mesma sintaxe descrita acima e a extensão de arquivo .list.

Abaixo, vemos o conteúdo de um arquivo chamado /etc/apt/sources.list.d/buster-backports.list:

deb http://deb.debian.org/debian buster-backports main contrib non-free
deb-src http://deb.debian.org/debian buster-backports main contrib non-free
Listando o conteúdo dos pacotes e buscando arquivos

Um utilitário chamado apt-file pode ser usado para executar mais operações no índice do pacote, como listar o conteúdo de um pacote ou localizar um pacote que contenha um arquivo específico. Esse utilitário talvez não esteja instalado por padrão no seu sistema. Nesse caso, geralmente é possível instalá-lo usando apt-get:

# apt-get install apt-file

Após a instalação, será preciso atualizar o cache do pacote usado para apt-file:

# apt-file update

Isso geralmente leva apenas alguns segundos. Depois disso, você estará pronto para usar o apt-file.

Para listar o conteúdo de um pacote, use o parâmetro list seguido pelo nome do pacote:

# apt-file list unrar
unrar: /usr/bin/unrar-nonfree
unrar: /usr/share/doc/unrar/changelog.Debian.gz
unrar: /usr/share/doc/unrar/copyright
unrar: /usr/share/man/man1/unrar-nonfree.1.gz
Tip

Também podemos usar apt list em vez de apt-file list.

Você pode procurar um arquivo em todos os pacotes usando o parâmetro search, seguido pelo nome do arquivo. Por exemplo, se quisermos saber qual pacote fornece um arquivo chamado libSDL2.so, usaremos:

# apt-file search libSDL2.so
libsdl2-dev: /usr/lib/x86_64-linux-gnu/libSDL2.so

A resposta é o pacote libsdl2-dev, que fornece o arquivo /usr/lib/x86_64-linux-gnu/libSDL2.so.

A diferença entre apt-file search e dpkg-query é que apt-file search também busca por pacotes não instalados, ao passo que dpkg-query mostra somente os arquivos pertencentes a um pacote instalado.

Exercícios Guiados

  1. Qual seria o comando para instalar um pacote chamado package.deb usando dpkg?

  2. Usando dpkg-query, descubra qual pacote contém um arquivo chamado 7zr.1.gz.

  3. É possível remover um pacote chamado unzip do sistema usando dpkg -r unzip se o pacote file-roller depender dele? Se não, qual seria o jeito correto de fazer isso?

  4. Usando o utilitário apt-file, como podemos descobrir qual pacote contém o arquivo /usr/bin/unrar?

  5. Usando o apt-cache, qual seria o comando para exibir informações para o pacote gimp?

Exercícios Exploratórios

  1. Considere um repositório com pacotes de fontes Debian para a distribuição xenial, hospedado em http://us.archive.ubuntu.com/ubuntu/ e com pacotes para o componente universe. Qual seria a linha correspondente a adicionar a /etc/apt/sources.list?

  2. Ao compilar um programa, aparece uma mensagem de erro reclamando que o arquivo de cabeçalho zzip-io.h não está presente no seu sistema. Como você pode descobrir qual pacote fornece esse arquivo?

  3. Como podemos ignorar um aviso de dependência e remover um pacote usando dpkg, mesmo que haja pacotes que dependam dele no sistema?

  4. Como é possível pode obter mais informações sobre um pacote chamado midori usando apt?

  5. Antes de instalar ou atualizar pacotes com o apt, qual comando deve ser usado para garantir que o índice do pacote esteja atualizado?

Resumo

Nesta lição, você aprendeu:

  • Como usar o dpkg para instalar e remover pacotes.

  • Como listar os pacotes instalados e o conteúdo do pacote.

  • Como reconfigurar um pacote instalado.

  • O que é o apt e como usá-lo para instalar, atualizar e remover pacotes.

  • Como usar o apt-cache para procurar pacotes.

  • Como funciona o arquivo /etc/apt/sources.list.

  • Como usar o apt-file para mostrar o conteúdo de um pacote, ou como encontrar qual pacote contém um arquivo específico.

Os seguintes comandos foram abordados:

dpkg -i

Instala um único pacote ou uma lista de pacotes separados por espaço.

dpkg -r

Remove um pacote ou uma lista de pacotes separados por espaço.

dpkg -I

Inspeciona um pacote, fornecendo detalhes sobre o software instalado e todas as dependências necessárias.

dpkg --get-selections

Lista todos os pacotes que o dpkg instalou no sistema.

dpkg -L

Imprime uma lista de todos os arquivos instalados por um pacote específico.

dpkg-query

Com um nome de arquivo especificado, este comando imprimirá o pacote que instalou o arquivo.

dpkg-reconfigure

Este comando re-executa um script pós-instalação de pacotes para que um administrador possa fazer ajustes de configuração da instalação do pacote.

apt-get update

Este comando atualiza o índice do pacote local de acordo com o que está disponível nos repositórios configurados no diretório /etc/apt/.

apt-get install

Este comando baixa um pacote de um repositório remoto e o instala junto com suas dependências. Também pode ser usado para instalar um pacote Debian que já foi baixado.

apt-get remove

Este comando desinstala o(s) pacote(s) especificado(s) do sistema.

apt-cache show

Assim como o comando dpkg -I, pode ser usado para exibir os detalhes de um pacote específico.

apt-cache search

Este comando procura um pacote específico no banco de dados em cache local do APT.

apt-file update

Este comando atualiza o cache do pacote para que o apt-file possa consultar seu conteúdo.

apt-file search

Este comando procura em qual pacote um arquivo está incluído. Uma lista de todos os pacotes que contêm o padrão é retornada.

apt-file list

Este comando é usado para listar o conteúdo de um pacote, assim como o comando dpkg -L.

Respostas aos Exercícios Guiados

  1. Qual seria o comando para instalar um pacote chamado package.deb usando dpkg?

    Passe o parâmetro -i para o dpkg:

    # dpkg -i package.deb
  2. Usando dpkg-query, descubra qual pacote contém um arquivo chamado 7zr.1.gz.

    Adicione o parâmetro -S a dpkg-query:

    # dpkg-query -S 7zr.1.gz
  3. É possível remover um pacote chamado unzip do sistema usando dpkg -r unzip se o pacote file-roller depender dele? Se não, qual seria o jeito correto de fazer isso?

    Não. O dpkg não resolve dependências e não permite remover um pacote se outro pacote instalado depender dele. Neste exemplo, podemos primeiro remover file-roller (pressupondo que nada depende dele) e em seguida remover unzip, ou remover os dois ao mesmo tempo com

    # dpkg -r unzip file-roller
  4. Usando o utilitário apt-file, como podemos descobrir qual pacote contém o arquivo /usr/bin/unrar?

    Use o parâmetro search seguido pelo caminho (ou nome de arquivo):

    # apt-file search /usr/bin/unrar
  5. Usando o apt-cache, qual seria o comando para exibir informações para o pacote gimp?

    Use o parâmetro show seguido pelo nome do pacote:

    # apt-cache show gimp

Respostas aos Exercícios Exploratórios

  1. Considere um repositório com pacotes de fontes Debian para a distribuição xenial, hospedado em http://us.archive.ubuntu.com/ubuntu/ e com pacotes para o componente universe. Qual seria a linha correspondente a adicionar a /etc/apt/sources.list?

    Os pacotes fonte são do tipo deb-src, então a linha deve ser:

    deb-src http://us.archive.ubuntu.com/ubuntu/ xenial universe

    Essa linha também poderia ser adicionada a um arquivo .list fem /etc/apt/sources.list.d/. Ela pode ter qualquer nome, mas é melhor que seja descritivo, algo como xenial_sources.list.

  2. Ao compilar um programa, aparece uma mensagem de erro reclamando que o arquivo de cabeçalho zzip-io.h não está presente no seu sistema. Como você pode descobrir qual pacote fornece esse arquivo?

    Use apt-file search para descobrir qual pacote contém um arquivo que não está presente no sistema:

    # apt-file search zzip-io.h
  3. Como podemos ignorar um aviso de dependência e remover um pacote usando dpkg, mesmo que haja pacotes que dependam dele no sistema?

    O parâmetro --force poderia ser usado, mas isso jamais deve ser feito a menos que se saiba exatamente o que se está fazendo, já que existe um risco enorme de que o sistema seja deixado em um estado inconsistente ou “quebrado”.

  4. Como é possível pode obter mais informações sobre um pacote chamado midori usando apt?

    Use apt-cache show seguido pelo nome do pacote:

    # apt-cache show midori
  5. Antes de instalar ou atualizar pacotes com o apt, qual comando deve ser usado para garantir que o índice do pacote esteja atualizado?

    apt-get update deve ser usado. Ele baixa os índices mais recentes do pacote dos repositórios descritos no arquivo /etc/apt/sources.list ou no diretório /etc/apt/sources.list.d/.

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

Próxima Lição

102.5 Utilização do sistema de pacotes RPM e YUM (102.5 Lição 1)

Ir para a próxima lição

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

A LPI é uma organização sem fins lucrativos.

© 2023 O Linux Professional Institute (LPI) é um organismo de apoio aos profissionais de Open Source e referência mundial em certificação. Com mais de 200.000 pessoas certificadas, somos o principal organismo de certificação independente para Linux e Open Source do mundo. O LPI certificou profissionais de mais de 180 países, oferece exames em diversos idiomas e tem centenas de parcerias de formação em todo o globo.

Nossa missão é proporcionar oportunidades econômicas e criativas para todos, tornando universalmente acessível a certificação de conhecimentos e competências em matéria de Open Source.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Entre em Contato
  • Política de Privacidade e Cookies

Encontrou um erro ou quer ajudar a aprimorar esta página? Escreva pra nós.

© 1999–2023 The Linux Professional Institute Inc. Todos os direitos reservados.