Blog Linux Avante

Como encontrar o pacote que fornece um arquivo (instalado ou não) no Ubuntu, Debian ou Linux Mint

30 de novembro de 2018

Existem várias maneiras de descobrir a qual pacote um determinado arquivo pertence, no Ubuntu, Debian ou Linux Mint. Este artigo apresenta duas maneiras de fazer isso, ambas pela linha de comando.

Da mesma série:

1. Usando apt-file para encontrar o pacote que fornece um arquivo (para pacotes de repositório, instalados ou não instalados)

apt-file indexa o conteúdo de todos os pacotes disponíveis em seus repositórios e permite que você procure por arquivos em todos esses pacotes.

Isso significa que você pode usar o apt-file para pesquisar arquivos dentro de pacotes DEB que estão instalados em seu sistema, bem como pacotes que não estão instalados em sua máquina Debian (e distribuições Linux baseadas em Debian, como Ubuntu), mas estão disponíveis para instalar a partir dos repositórios. Isso é útil caso você queira descobrir qual pacote contém um arquivo que você precisa para compilar algum programa, etc.

apt-file não pode encontrar o pacote que fornece um arquivo no caso de você baixar um pacote DEB e instalá-lo, sem usar um repositório. O pacote precisa estar disponível nos repositórios para que o apt-file possa encontrá-lo.

apt-file pode não estar instalado em seu sistema. Para instalá-lo no Debian, Ubuntu, Linux Mint e outras distribuições Linux baseadas em Debian ou Ubuntu, use este comando:

Comandos para usar no terminal

sudo apt install apt-file

Esta ferramenta encontra os arquivos pertencentes a um pacote através de um banco de dados, que precisa ser atualizado para poder utilizá-lo. Para atualizar o banco de dados do apt-file, use:

Comandos para usar no terminal

sudo apt-file update

Agora você pode usar o apt-file para encontrar o pacote DEB que fornece um arquivo, seja um pacote que você instalou dos repositórios ou um pacote disponível nos repositórios, mas não instalado em seu Debian/Ubuntu/Linux Mint sistema. Para fazer isso, execute:

Comandos para usar no terminal

apt-file search nomedoarquivo

Substituindo nomedoarquivo pelo nome do arquivo que deseja localizar.

Este comando irá listar todas as ocorrências de nomedoarquivo encontradas em vários pacotes. Se você souber o caminho e o nome do arquivo exatos, poderá obter os resultados da pesquisa para listar apenas o pacote que inclui esse arquivo exato, como este:

Comandos para usar no terminal

apt-file search /caminho/para/arquivo

Por exemplo, a execução de apenas apt-file search cairo.h listará uma grande lista de resultados de pesquisa:

$ apt-file search cairo.h
fltk1.3-doc: /usr/share/doc/fltk1.3-doc/HTML/group__group__cairo.html
ggobi: /usr/include/ggobi/ggobi-renderer-cairo.h
glabels-dev: /usr/include/libglbarcode-3.0/libglbarcode/lgl-barcode-render-to-cairo.h
glabels-dev: /usr/share/gtk-doc/html/libglbarcode-3.0/libglbarcode-3.0-lgl-barcode-render-to-cairo.html
gstreamer1.0-plugins-good-doc: /usr/share/gtk-doc/html/gst-plugins-good-plugins-1.0/gst-plugins-good-plugins-plugin-cairo.html
guile-cairo-dev: /usr/include/guile-cairo/guile-cairo.h
guitarix-doc: /usr/share/doc/guitarix-doc/namespacegx__cairo.html
ipe: /usr/share/ipe/7.2.7/doc/group__cairo.html
libcairo-ocaml-dev: /usr/share/doc/libcairo-ocaml-dev/html/Pango_cairo.html
libcairo-ocaml-dev: /usr/share/doc/libcairo-ocaml-dev/html/type_Pango_cairo.html
libcairo2-dev: /usr/include/cairo/cairo.h
...

No entanto, se você souber o caminho do arquivo, por exemplo, você deseja descobrir a qual pacote o arquivo /usr/include/cairo/cairo.h pertence, execute:

Comandos para usar no terminal

apt-file search /usr/include/cairo/cairo.h

Isso lista apenas o pacote que contém este arquivo:

$ apt-file search /usr/include/cairo/cairo.h
libcairo2-dev: /usr/include/cairo/cairo.h

Neste exemplo, o pacote que inclui o arquivo que procurei (/usr/include/cairo/cairo.h) é libcairo2-dev.

apt-file também pode ser usado para listar todos os arquivos incluídos em um pacote (apt-file list packagename), realizar pesquisa regex e muito mais. Consulte sua página de manual (man apt-file) e ajuda para obter mais informações (apt-file --help).

2. Usando dpkg para encontrar o pacote que fornece um arquivo (apenas para pacotes DEB instalados - de qualquer fonte)

O dpkg também pode ser usado para descobrir a qual pacote um arquivo pertence. Pode ser mais rápido de usar do que o apt-file, porque você não precisa instalar nada e não há banco de dados para atualizar.

Porém, o dpkg só pode pesquisar por arquivos pertencentes a pacotes instalados, então se você estiver procurando por um arquivo em um pacote que não está instalado em seu sistema, use apt-file. Por outro lado, dpkg pode ser usado para encontrar arquivos pertencentes a pacotes que foram instalados sem usar um repositório, um recurso que não está disponível para o apt-file.

Para usar o dpkg para encontrar o pacote DEB instalado que fornece um arquivo, execute-o com o sinalizador -S (ou --search), seguido pelo nome do arquivo (ou padrão) que você deseja ver a qual pacote ele pertence, como este:

Comandos para usar no terminal

dpkg -S filename

Por exemplo, para descobrir a qual pacote o arquivo cairo.h pertence, use dpkg -S cairo.h:

$ dpkg -S cairo.h
libgtk2.0-dev:amd64: /usr/include/gtk-2.0/gdk/gdkcairo.h
libcairo2-dev:amd64: /usr/include/cairo/cairo.h
libpango1.0-dev: /usr/include/pango-1.0/pango/pangocairo.h
libgtk-3-dev:amd64: /usr/include/gtk-3.0/gdk/gdkcairo.h

Assim como para o apt-file, isso pode mostrar vários pacotes que possuem arquivos contendo o nome de arquivo que você está procurando. Você pode inserir o caminho completo do arquivo para obter apenas o pacote que contém esse arquivo específico. Exemplo:

$ dpkg -S /usr/include/cairo/cairo.h
libcairo2-dev:amd64: /usr/include/cairo/cairo.h

Neste exemplo, o pacote Debian que inclui o arquivo que procurei (/usr/include/cairo/cairo.h) é libcairo2-dev.

Outras maneiras de encontrar o pacote ao qual um arquivo pertence é usando a pesquisa online fornecida pelo Ubuntu e Debian:

Para ambos, você também encontrará opções para localizar os pacotes que contêm arquivos nomeados exatamente como a palavra-chave de entrada, pacotes que terminam com a palavra-chave ou pacotes que contêm arquivos cujos nomes contêm a palavra-chave.

O site do Linux Mint para busca de pacotes não inclui uma opção de busca de arquivos dentro de pacotes, mas você pode usar a busca de pacotes online do Ubuntu ou Debian para pacotes que o Linux Mint importa do Debian/Ubuntu.

Confira a versão original desse post em inglês
Propaganda
Blog Comments powered by Disqus.