Команда знайти вихідний пакет двійкового файлу?


33

Я знаю, що є whichкоманда, що повторює повну назву двійкового файлу (наприклад which sh). Однак я впевнений, що є команда, яка повторює пакет, який надає певний бінарний файл. Чи є така команда? Якщо так, то що це? Я хотів би мати можливість це запустити:

commandName ls

і дістати

coreutils

наприклад.

Відповіді:


36

Я думаю, ви шукаєте dpkg -Sкоманду (також дивіться часто використовувані параметри для dpkg ).


4
Дякую! dpkg -S `which COMMANDHERE`працював на мене.
Делан Азабані

Gentoo: qfile <ім'я>
Сергій

dpkg -Sзнаходить ім'я двійкового імені пакета, яке може відрізнятися від імені вихідного (кодового) пакету.
Тіно

Тільки для повноти -S- це коротка форма --searchваріанту, яка насправді є опцією для dpkg-queryкоманди (але звичайна dpkgпрацює також)
waldyrious

10

Якщо ви хочете знайти файли в пакеті, який ви не встановили, використовуйте apt-файл

apt-get install -y apt-file
apt-file update

Потім, щоб знайти щось:

apt-file search /usr/bin/file

або

apt-find search file

Де "файл" - це ім'я того, що ви шукаєте.

Якщо ви не хочете переглядати це в кожній системі debian, ви можете використовувати цей скрипт:

#!/bin/bash
which apt-get >/dev/null || { echo apt-get not found >&2; exit 1; }
which apt-file >/dev/null || { apt-get install -y apt-file;  apt-file update; }
unset i; IFS=$'\x0a'; select i in $( apt-file search "/$@" ); do 
    test -n "$i" || break; apt-get install "${i%% *}"; done

Я тоді просто це поцупив, але, здається, працює добре.

Примітка: "dpkg -S" знаходить лише ті речі, які ви вже встановили.


3
Використання -yпараметра небезпечно, воно може сказати «так» для будь-якої кількості речей. У сценарії це може бути добре, але перша команда повинна справді читатись apt-get install apt-fileбез того, -yяк ви не можете знати, як виглядає система користувача.
jmiserez
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.