Как установить xset? [dубликат]

Достаточно простой вопрос: есть ли какая-либо команда оболочки (или GUI-метод), которую я могу использовать, учитывая путь к файлу в моей системе, сообщает мне, какой пакет его там поставил? Предположим, что файл действительно был из пакета, то есть.

Бонусный вопрос: что, если это файл, который не установлен в моей системе? Есть, скажем, веб-сайт, который позволит мне найти файл и посмотреть, какие пакеты, если таковые имеются, предоставляют его?

386
задан 22 January 2014 в 08:20

15 ответов

Вы можете использовать команду dpkg, чтобы узнать, какой установленный пакет принадлежит файлу:

Из man dpkg:

-S, --search filename-search-pattern... Search for a filename from installed packages.

Пример:

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

Вы можете искать с полным путем или только с именем файла.

Если вы хотите найти файлы, еще не установленные на вашем компьютере, вы можете использовать Ubuntu Packages Search

344
ответ дан 18 July 2018 в 08:38

Вы можете использовать команду dpkg, чтобы узнать, какой установленный пакет принадлежит файлу:

Из man dpkg:

-S, --search filename-search-pattern... Search for a filename from installed packages.

Пример:

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

Вы можете искать с полным путем или только с именем файла.

Если вы хотите найти файлы, еще не установленные на вашем компьютере, вы можете использовать Ubuntu Packages Search

344
ответ дан 24 July 2018 в 19:08

Я пытался отслеживать, что установлено which в моей системе. После небольшой работы я создал apt-whatprovides

#!/bin/sh #apt-whatprovides ver. 201801010101 Copyright alexx, MIT Licence #rdfa:deps="[realpath,apt-file,grep,which,sh,echo]" BINARY=$(realpath $(which $@)) PACKAGE=$(apt-file search $BINARY|grep -E ":\s*${BINARY}$") echo ${PACKAGE%:*}

Хотя для большинства THING вы можете просто использовать

apt-file search $(realpath $(which THING))|grep 'THING$'
1
ответ дан 18 July 2018 в 08:38

Вы имеете в виду, какой пакет, а не какое приложение. Приложение является вашим менеджером пакетов, например. Software Center.

Использование dpkg:

dpkg -S /usr/lib/tracker/tracker-store dpkg -S tracker-extract dpkg -S tracker-miner-fs

Пример

% dpkg -S /usr/lib/tracker/tracker-store tracker: /usr/lib/tracker/tracker-store

Использование apt-file: [ ! d5] apt-file search /usr/lib/tracker/tracker-store

или также возможно:

apt-file search --regex /tracker-extract$ apt-file search --regex /tracker-miner-fs$

Пример

% apt-file search /usr/lib/tracker/tracker-store tracker: /usr/lib/tracker/tracker-store

Или онлайн здесь, в разделе Search the contents of packages.

здесь

Пример

10
ответ дан 18 July 2018 в 08:38

Команда apt-file может сделать это для вас из командной строки. Я часто использую его при создании пакетов из исходного кода.

Для установки apt-file выполните следующие действия:

sudo apt-get install apt-file

Затем вам нужно обновить его базу данных:

apt-file update

И, наконец, искать файл:

$ apt-file find kwallet.h kdelibs5-dev: /usr/include/kwallet.h libkf5wallet-dev: /usr/include/KF5/KWallet/kwallet.h

Однако гораздо более дружелюбным способом является использование apt-file Веб-сайт. Они имеют возможность «искать содержимое пакетов» для определенного имени файла.

179
ответ дан 18 July 2018 в 08:38

Вы можете искать содержимое пакетов, включенных в различные выпуски Ubuntu на веб-сайте Ubuntu Packages. Посмотрите под заголовком «Поиск содержимого пакетов».

Например, вот результаты поиска для libnss3.so в lucid (10.04):

Пакеты Ubuntu [ ! d1]

16
ответ дан 18 July 2018 в 08:38

Также есть apt-файл для поиска файлов в пакетах, которые не установлены. Например:

apt-file list packagename
32
ответ дан 18 July 2018 в 08:38

Одна из причин, по которой вам может понадобиться сделать это, - это если вы компилируете программное обеспечение, которое уже есть пакет ubuntu, вы можете запустить apt-get build-dep $PACKAGENAME. Это установит все пакеты, необходимые для компиляции $PACKAGENAME.

1
ответ дан 18 July 2018 в 08:38

Я пытался отслеживать, что установлено which в моей системе. После небольшой работы я создал apt-whatprovides

#!/bin/sh #apt-whatprovides ver. 201801010101 Copyright alexx, MIT Licence #rdfa:deps="[realpath,apt-file,grep,which,sh,echo]" BINARY=$(realpath $(which $@)) PACKAGE=$(apt-file search $BINARY|grep -E ":\s*${BINARY}$") echo ${PACKAGE%:*}

Хотя для большинства THING вы можете просто использовать

apt-file search $(realpath $(which THING))|grep 'THING$'
1
ответ дан 24 July 2018 в 19:08
  • 1
    Алекс, мне нравится этот ответ. Надеюсь, вы не возражаете против моего редактирования. Я сделал это также для файлов, которые не установлены в системе. Я сделал резервную копию в gist.github.com/RichardBronosky/… и создаст свой собственный ответ, если вы вернете / отклоните его. – Bruno Bronosky 15 July 2018 в 08:00
  • 2
    Обновление. Слишком сложно копировать макароны с этим ответом и делать тонкие изменения, но мое редактирование было отклонено. Надеюсь, вы чувствуете, что я сохранил целостность вашего ответа в моей . – Bruno Bronosky 18 July 2018 в 08:47

Это расширение для отличного ответа Alexx Roche. Я попытался внести изменения в этот ответ, но он был отклонен (хотя не Alexx)

Я пытался отслеживать, что установлено which в моей системе. После небольшой работы, которую я создал /usr/local/bin/apt-whatprovides

#!/bin/sh #apt-whatprovides ver. 201801010101 Copyright alexx, MIT Licence #rdfa:deps="[realpath,apt-file,grep,which,sh,echo]" BINARY="$(realpath $(which $@) 2>/dev/null)" [ -z "$BINARY" ] && BINARY="$@" echo Searching for $BINARY PACKAGE="$(apt-file search $BINARY|grep -E ":.*[^-.a-zA-Z0-9]${BINARY}$")" echo "${PACKAGE}"

Хотя для большинства установленных THING вы можете просто использовать:

apt-file search $(realpath $(which THING)) | grep 'THING$'

Для ВСТРОЕННЫХ, которые не установлены, вы можете use:

apt-file search THING | grep '/THING$'

Скрипт apt-whatprovides работает для файлов, которые находятся и не находятся в вашей системе. Например, моей системе не хватало dig, но было ping, поэтому это привело к следующему:

pi@raspberrypi:~ $ apt-whatprovides ping Searching for /bin/ping inetutils-ping: /bin/ping iputils-ping: /bin/ping pi@raspberrypi:~ $ apt-whatprovides dig Searching for dig dnsutils: /usr/bin/dig epic4: /usr/share/epic4/script/dig epic4-help: /usr/share/epic4/help/8_Scripts/dig knot-dnsutils: /usr/bin/dig

Обратите внимание, что Searching for - это полный путь для ping (установлен) и только двоичный имя для dig не установлено. Это помогло мне обнаружить, что мне нужно было установить dnsutils, не требуя поиска Отличный ответ Alexx Roche

0
ответ дан 24 July 2018 в 19:08

Вы имеете в виду, какой пакет, а не какое приложение. Приложение является вашим менеджером пакетов, например. Software Center.

Использование dpkg:

dpkg -S /usr/lib/tracker/tracker-store dpkg -S tracker-extract dpkg -S tracker-miner-fs

Пример

% dpkg -S /usr/lib/tracker/tracker-store tracker: /usr/lib/tracker/tracker-store

Использование apt-file: [ ! d5] apt-file search /usr/lib/tracker/tracker-store

или также возможно:

apt-file search --regex /tracker-extract$ apt-file search --regex /tracker-miner-fs$

Пример

% apt-file search /usr/lib/tracker/tracker-store tracker: /usr/lib/tracker/tracker-store

Или онлайн здесь, в разделе Search the contents of packages.

здесь

Пример

10
ответ дан 24 July 2018 в 19:08
  • 1
    Вы имеете в виду, какой пакет, а не какое приложение. Приложение является вашим менеджером пакетов, например. Центр программного обеспечения. Хорошо. Спасибо! :) – ReyKev 29 November 2015 в 21:14
  • 2
    Спасибо вам за помощь! Ни одно из этих предложений не помогло мне найти, какой пакет установил эти / эти приложения. Все поисковые запросы просто вернутся к & quot; Tracker & quot ;. Я подозревал, что это Canopy Enthoughts. Эта миля EULA напомнила мне мой старый озорник Microsoft Windows, с которым я так рад, что больше не участвую. Я видел, что Tracker был установлен вчера, поэтому, как root, я избавился от него, вместе с Canopy Enthoughts и все проблемы решены. Я действительно благодарю вас за вашу помощь. Это такая хорошая вещь, чтобы иметь такую ​​поддержку. Еще раз спасибо! Kevin – ReyKev 29 November 2015 в 21:22

Команда apt-file может сделать это для вас из командной строки. Я часто использую его при создании пакетов из исходного кода.

Для установки apt-file выполните следующие действия:

sudo apt-get install apt-file

Затем вам нужно обновить его базу данных:

apt-file update

И, наконец, искать файл:

$ apt-file find kwallet.h kdelibs5-dev: /usr/include/kwallet.h libkf5wallet-dev: /usr/include/KF5/KWallet/kwallet.h

Однако гораздо более дружелюбным способом является использование apt-file Веб-сайт. Они имеют возможность «искать содержимое пакетов» для определенного имени файла.

180
ответ дан 24 July 2018 в 19:08
  • 1
    По-моему, это должен быть принятый ответ. Но в ответ на Ubuntu Packages Search я могу утверждать, что программа оболочки эта простая чрезвычайно дружелюбна и легко запоминается (как только вы это знаете). Если вы используете dpkg, apt-get или aptitude в качестве стандартных инструментов, нет ничего дружего в том, чтобы запускать Chrome для работы в Интернете! – user2097818 1 April 2016 в 09:00
  • 2
    @ user2097818 Причина, по которой это не принятый ответ, заключается в том, что мой основной вопрос ограничен файлами в системе и установленными пакетами. apt-file часто находит ложные срабатывания, то есть пакеты, которые не установлены. Конечно, этот ответ отлично подходит для «бонусного вопроса». – David Z 4 April 2018 в 02:36
  • 3
    Для тех, кто со стороны Redhat мира - apt-file search <> является самым близким аналогом dnf/yum whatprovides <>. – ffledgling 29 April 2018 в 23:14

Вы можете искать содержимое пакетов, включенных в различные выпуски Ubuntu на веб-сайте Ubuntu Packages. Посмотрите под заголовком «Поиск содержимого пакетов».

Например, вот результаты поиска для libnss3.so в lucid (10.04):

Пакеты Ubuntu [ ! d1]

16
ответ дан 24 July 2018 в 19:08

Также есть apt-файл для поиска файлов в пакетах, которые не установлены. Например:

apt-file list packagename
32
ответ дан 24 July 2018 в 19:08

Одна из причин, по которой вам может понадобиться сделать это, - это если вы компилируете программное обеспечение, которое уже есть пакет ubuntu, вы можете запустить apt-get build-dep $PACKAGENAME. Это установит все пакеты, необходимые для компиляции $PACKAGENAME.

1
ответ дан 24 July 2018 в 19:08

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

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