28

Я знаю, что есть which команда, которая повторяет полное имя двоичного файла (например, which sh). Тем не менее, я вполне уверен, что есть команда, которая повторяет пакет, который предоставляет конкретный двоичный файл. Есть ли такая команда? Если так, то, что это? Я хотел бы иметь возможность запустить это:

commandName ls

и получить

coreutils

например.

2 ответа2

33

Я предполагаю, что вы ищете команду dpkg -S (также смотрите часто используемые опции для dpkg).

9

Если вы хотите найти файлы в пакете, который вы не установили, используйте apt-file

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» находит только те вещи, которые вы уже установили.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .