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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 tipodeb-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 principalmain
.
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 |
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
-
Qual seria o comando para instalar um pacote chamado
package.deb
usandodpkg
? -
Usando
dpkg-query
, descubra qual pacote contém um arquivo chamado7zr.1.gz
. -
É possível remover um pacote chamado
unzip
do sistema usandodpkg -r unzip
se o pacotefile-roller
depender dele? Se não, qual seria o jeito correto de fazer isso? -
Usando o utilitário
apt-file
, como podemos descobrir qual pacote contém o arquivo/usr/bin/unrar
? -
Usando o
apt-cache
, qual seria o comando para exibir informações para o pacotegimp
?
Exercícios Exploratórios
-
Considere um repositório com pacotes de fontes Debian para a distribuição
xenial
, hospedado emhttp://us.archive.ubuntu.com/ubuntu/
e com pacotes para o componenteuniverse
. Qual seria a linha correspondente a adicionar a/etc/apt/sources.list
? -
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? -
Como podemos ignorar um aviso de dependência e remover um pacote usando
dpkg
, mesmo que haja pacotes que dependam dele no sistema? -
Como é possível pode obter mais informações sobre um pacote chamado
midori
usandoapt
? -
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
-
Qual seria o comando para instalar um pacote chamado
package.deb
usandodpkg
?Passe o parâmetro
-i
para odpkg
:# dpkg -i package.deb
-
Usando
dpkg-query
, descubra qual pacote contém um arquivo chamado7zr.1.gz
.Adicione o parâmetro
-S
adpkg-query
:# dpkg-query -S 7zr.1.gz
-
É possível remover um pacote chamado
unzip
do sistema usandodpkg -r unzip
se o pacotefile-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 removerfile-roller
(pressupondo que nada depende dele) e em seguida removerunzip
, ou remover os dois ao mesmo tempo com# dpkg -r unzip file-roller
-
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
-
Usando o
apt-cache
, qual seria o comando para exibir informações para o pacotegimp
?Use o parâmetro
show
seguido pelo nome do pacote:# apt-cache show gimp
Respostas aos Exercícios Exploratórios
-
Considere um repositório com pacotes de fontes Debian para a distribuição
xenial
, hospedado emhttp://us.archive.ubuntu.com/ubuntu/
e com pacotes para o componenteuniverse
. 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 comoxenial_sources.list
. -
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
-
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”. -
Como é possível pode obter mais informações sobre um pacote chamado
midori
usandoapt
?Use
apt-cache show
seguido pelo nome do pacote:# apt-cache show midori
-
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/
.