Найдите удаленный пакет aptitude, который предоставляет команду [duplicate]

У этого вопроса уже есть ответ здесь: Как найти пакет, который предоставляет файл? 8 ответов

Каков наилучший способ найти удаленный пакет aptitude, связанный с командой? Я знаю apt-file, но его вывод обычно трудно разобрать.

Например, apt-file search ifconfig выводит 45 результатов. Я мог бы использовать некоторое регулярное выражение, чтобы уменьшить это еще больше, но это далеко не идеально.

Я хотел бы сделать что-то вроде findpkg ifconfig и видеть net-tools без беспорядка.

4
задан 12 October 2017 в 02:03

3 ответа

Для установленных пакетов

Это задание для dpkg-query.

dpkg-query -S /path/to/file

дает имя пакета, в котором установлен сопоставленный файл. Вы хотите использовать точный путь для получения результата без помех, к счастью /sbin/ifconfig, как в вашем случае, можно легко получить с помощью which:

$ dpkg-query -S $(which ifconfig)
net-tools: /sbin/ifconfig

С другой стороны, dpkg-query -L PACKAGENAME печатает список файлов, установленных данным пакетом, например:

$ dpkg-query -L net-tools | grep ^/sbin/
/sbin/nameif
/sbin/ipmaddr
/sbin/plipconfig
/sbin/ifconfig
/sbin/route
/sbin/mii-tool
/sbin/iptunnel
/sbin/rarp
/sbin/slattach

Подробнее см. [F11].

Для еще не установленных пакетов [!d7 ]

apt-file предоставляет некоторые опции, которые мы можем использовать для избавления от беспорядочного вывода:

-l, --package-only
    Only display package name; do not display file names.

-x, --regexp
    Treat pattern as a (perl) regular expression. See perlreref(1) for details.
    Without this option, pattern is treated as a literal string to search for.

Поэтому для поиска пакета команды следующая строка может :

apt-file -lx search "/COMMAND$"

Чтобы упростить определение функции:

$ findpkg() { apt-file -lx search "/$1$";}
$ findpkg ifconfig
net-tools

Подробнее об этой команде см. man dpkg-query и perldoc .perl.org для введения в регулярные выражения perl.

4
ответ дан 22 May 2018 в 17:38
  • 1
    Я ищу команду, которую я не установил, поэтому я могу ее установить. – Ammar Bandukwala 12 October 2017 в 01:37
  • 2
    Я обновил свой заголовок :). Это приближает меня, я ищу что-то подобное в командной строке. – Ammar Bandukwala 12 October 2017 в 02:03

Для установленных пакетов

Это задание для dpkg-query.

dpkg-query -S /path/to/file

дает имя пакета, в котором установлен сопоставленный файл. Вы хотите использовать точный путь для получения результата без помех, к счастью /sbin/ifconfig, как в вашем случае, можно легко получить с помощью which:

$ dpkg-query -S $(which ifconfig) net-tools: /sbin/ifconfig

С другой стороны, dpkg-query -L PACKAGENAME печатает список файлов, установленных данным пакетом, например:

$ dpkg-query -L net-tools | grep ^/sbin/ /sbin/nameif /sbin/ipmaddr /sbin/plipconfig /sbin/ifconfig /sbin/route /sbin/mii-tool /sbin/iptunnel /sbin/rarp /sbin/slattach

Подробнее см. [F11].

Для еще не установленных пакетов

apt-file предоставляет некоторые опции, которые мы можем использовать для избавления от беспорядочного вывода:

-l, --package-only Only display package name; do not display file names. -x, --regexp Treat pattern as a (perl) regular expression. See perlreref(1) for details. Without this option, pattern is treated as a literal string to search for.

Поэтому для поиска пакета команды следующая строка может :

apt-file -lx search "/COMMAND$"

Чтобы упростить определение функции:

$ findpkg() { apt-file -lx search "/$1$";} $ findpkg ifconfig net-tools

Подробнее об этой команде см. man dpkg-query и perldoc .perl.org для введения в регулярные выражения perl.

4
ответ дан 18 July 2018 в 05:26

Для установленных пакетов

Это задание для dpkg-query.

dpkg-query -S /path/to/file

дает имя пакета, в котором установлен сопоставленный файл. Вы хотите использовать точный путь для получения результата без помех, к счастью /sbin/ifconfig, как в вашем случае, можно легко получить с помощью which:

$ dpkg-query -S $(which ifconfig) net-tools: /sbin/ifconfig

С другой стороны, dpkg-query -L PACKAGENAME печатает список файлов, установленных данным пакетом, например:

$ dpkg-query -L net-tools | grep ^/sbin/ /sbin/nameif /sbin/ipmaddr /sbin/plipconfig /sbin/ifconfig /sbin/route /sbin/mii-tool /sbin/iptunnel /sbin/rarp /sbin/slattach

Подробнее см. [F11].

Для еще не установленных пакетов

apt-file предоставляет некоторые опции, которые мы можем использовать для избавления от беспорядочного вывода:

-l, --package-only Only display package name; do not display file names. -x, --regexp Treat pattern as a (perl) regular expression. See perlreref(1) for details. Without this option, pattern is treated as a literal string to search for.

Поэтому для поиска пакета команды следующая строка может :

apt-file -lx search "/COMMAND$"

Чтобы упростить определение функции:

$ findpkg() { apt-file -lx search "/$1$";} $ findpkg ifconfig net-tools

Подробнее об этой команде см. man dpkg-query и perldoc .perl.org для введения в регулярные выражения perl.

4
ответ дан 24 July 2018 в 18:19

Другие вопросы по тегам:

Похожие вопросы: