Este breve tutorial explica algumas maneiras diferentes de encontrar o pacote que fornece um arquivo específico em sistemas operacionais semelhantes a Unix. Isso pode ser útil quando compilar e instalar um pacote manualmente. Quando você está compilando um pacote da fonte, há chances de que você receba um erro, algo como “Nenhuma regra para criar o alvo”. Você pode não saber exatamente quais pacotes fornecem o arquivo faltando. Nesses casos, você pode descobrir facilmente os pacotes que fornecem os arquivos que faltam e instalá-los conforme descrito neste guia.

Encontre o pacote que fornece um arquivo específico no Linux

Arch Linux, Antergos, Manjaro Linux:

Em base em arco, existe uma pequena ferramenta de linha de comando chamada pkgfile , que é usada para pesquisar arquivos de pacotes.

O Pkgfile vem pré-instalado com o Arch Linux. Se não estiver, você pode instalar usando o seguinte comando:

sudo pacman -S pkgfile

Em seguida, execute o seguinte comando para sincronizar com o banco de dados do arquivo pkgfile:

sudo pkgfile -u

Agora, você pode encontrar o pacote que fornece um arquivo específico, digamos, por exemplo, alisp.h , usando o comando:

$ pkgfile alisp.h
extra/alsa-lib

Como você vê na saída acima, o pacote alsa-lib fornece o arquivo alisp.h . E, o pacote está disponível no repositório extra .Agora você pode instalar este pacote como mostrado abaixo.

sudo pacman -S alsa-lib

Para listar todos os arquivos fornecidos pelo pacote alsa-lib, execute:

pkgfile -l alsa-lib

RHEL, CentOS, Fedora:

Em sistemas baseados em YUM, como RHEL e seus clones como CentOS, Scientific Linux, você pode encontrar o pacote que possui um arquivo específico, usando o seguinte comando:

yum whatprovides '*filename'

No Fedora, use o seguinte comando em vez disso:

dnf provides '*filename'

Se o arquivo já estiver disponível no seu sistema, diga, por exemplo, / bin / ls , você pode encontrar o pacote que possui o arquivo usando o comando:

# rpm -qf /bin/ls
coreutils-8.22-18.el7.x86_64

Você também pode usar o comando repoquery da seguinte maneira:

 repoquery -f /bin/ls

Se o comando repoquery não estiver disponível no seu sistema, instale o pacote yum-utils .

sudo yum install yum-utils

Ou,

 sudo dnf install yum-utils

Debian, Ubuntu, Linux Mint:

Em qualquer sistema baseado em APT, você pode encontrar o pacote que fornece um determinado arquivo usando aferramenta do arquivo apt .

Instale o arquivo apt usando o comando se ele já não estiver instalado:

 sudo apt-get install apt-file

Se você acabou de instalar o arquivo apt, o cache do sistema pode estar vazio. Você precisa executar ‘apt-file update’ como root para atualizar o cache. Você também pode executar “atualização de arquivo apt” como usuário normal para usar um cache no diretório inicial do usuário.

Deixe-nos atualizar o cache do banco de dados usando o comando:

  sudo apt-file update

E, em seguida, procure os pacotes que contém um arquivo específico, diga alisp.h , com comando:

  apt-file find alisp.h

Ou,

  apt-file search alisp.h

A amostra seria:

libasound2-dev: /usr/include/alsa/alisp.h

Bem, libasound2-dev é! Você pode instalar este pacote usando o comando:

sudo apt-get install libasound2-dev

Se você já possui o arquivo e apenas queria saber qual pacote pertence, você pode usar o comando dpkg como mostrado abaixo.

dpkg -S $(which alisp.h)

Ou,

dpkg -S `which alisp.h`

Se você conhece o caminho completo do arquivo, diga por exemplo / bin / ls , você pode procurar os pacotes que ele pertence ao usar o seguinte comando:

$ dpkg -S /bin/ls
coreutils: /bin/ls

SUSE / openSUSE:

No SUSE e no openSUSE, execute o seguinte comando para descobrir qual pacote pertence um determinado arquivo.

zypper wp alisp.h

Ou,

zypper se --provides --match-exact alisp.h

 

Anúncios