Как определить вызываемые команды, предоставляемые установленным пакетом Debian?
Я относительно новый пользователь Linux, поэтому сегодня я столкнулся с проблемой. Я установил внешний интерфейс эмулятора ("visualboyadvance-gtk") из репозитория apt моего дистрибутива, но после того, как он закончил установку, я не смог понять, что это за команда терминала для программы. Обычно команда терминала и имя пакета довольно близки, поэтому я никогда не сталкивался с этой проблемой раньше. (В этом случае команда оказалась 'gvba'; ничего похожего на имя пакета в репозитории..)
Итак, мой вопрос: есть ли быстрый и простой способ определить команду терминала для любого пакета, который я установил? Я просмотрел информацию 'apt-cache show' для этого пакета, но в нем не было ничего, кроме самой команды терминала. Я предполагаю, что должен быть способ найти информацию такого типа с помощью APT, dpkg или чего-то еще..
3 ответа
Я обычно делаю
dpkg -L packagename | grep -E '/s?bin/'
чтобы получить список всего "вызываемого", который предлагает этот пакет.
Правило простое: согласно политике Debian (и FHS) все программы, вызываемые обычными пользователями (не администраторами), должны размещать свои двоичные файлы (или ссылки на них, обычно символические) под /bin
или же /usr/bin
1, и все программы, вызываемые системными администраторами, должны помещать свои двоичные файлы (или ссылки на них) в /sbin
или же /usr/sbin
1
Любые локальные программы, не установленные из пакетов и, следовательно, не являющиеся частью "системы", должны размещать свои вызываемые двоичные файлы под /usr/local/bin
или же /usr/local/sbin
- эти места "твои", и ты гарантированно, что ни один пакет, установленный из официальных репозиториев, никогда не поместит / свяжет туда двоичный файл.
Если вы бежите
echo $PATH
в своем терминале, как обычный пользователь, вы увидите /bin
а также /usr/bin
а также /usr/local/bin
в списке - вот где оболочка ищет не встроенные команды, которые вы просите ее запустить. У суперпользователя будет sbin
"версии этих каталогов также перечислены.
И, наконец, одно небольшое замечание: вы не можете - просто взглянув на список программ, предлагаемых пакетом, - определить, какая из них является командной строкой ("вызываемой в терминале") или графическим интерфейсом пользователя (для подключения к которой требуется X-сервер), поскольку оба вида программ размещены в одной иерархии каталогов. С другой стороны, те приложения с графическим интерфейсом, которые хотят интегрироваться в среду рабочего стола (такие как GNOME, KDE, XFCE, LXDE и т. Д.), Обычно предоставляют так называемые "файлы рабочего стола" (заканчивая .desktop
расширение), которые дают своей программе описательный заголовок, описание ее назначения и указывают способ вызова приложения. Эти файлы сканируются средой рабочего стола и отображаются в "меню приложения" (или иным образом используются аналогичным образом). Следовательно, если вы ищете такие программы, вы можете grep
выход dpkg -L
за .desktop
,
1 Различие между /usr
а также /
Иерархии неуловимы и в настоящее время обсуждаются в сообществах, ориентированных на Linux, поэтому давайте не будем углубляться в обсуждение этого вопроса.
Проблема в том, что пакеты могут включать в себя много команд или (как в случае с библиотеками) вообще ни одной.
Вы можете увидеть содержимое пакета с dpkg -L packagename
, Все, что пакет установил в /usr/bin
будет запущен из командной строки, хотя не все команды дадут очень разумные результаты.
Вы также можете попробовать поискать на страницах man - man -k visualboyadvance
может дать вам что-нибудь полезное.
Поиск здесь для вашего пакета.
Затем откройте список файлов.
Все под /usr/bin/
это исполняемый файл, который вы можете использовать со своего терминала.
В твоем случае только гвба.