Как мне найти пакет, который предоставляет файл?

Если у вас есть ОЗУ объемом 3 ГБ или более, Ubuntu автоматически НЕ ИСПОЛЬЗУЕТ пространство подкачки, так как этого более чем достаточно для ОС.

Теперь вам действительно нужен раздел подкачки?

Ответ, на мой взгляд, - да. Потому что вы не знаете, что вы будете устанавливать или делать в будущем, что может потребовать пространства подкачки. Также, если вы планируете использовать гибернацию, вам может понадобиться некоторое пространство подкачки. На самом деле вам не нужно иметь раздел подкачки, но это рекомендуется, если вы используете столько памяти при нормальной работе.

Для получения дополнительной информации о необходимости или не в обмене см. Ubuntu Swap Faq или Требования по обмену

.

461
задан 06.05.2020, 09:13

7 ответов

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

Чтобы установить apt-file, выполните:

sudo apt-get install apt-file

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

apt-file update

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

[ 112]

Однако, гораздо более дружественный способ - использовать поиск пакетов Ubuntu . У них есть возможность «искать содержимое пакетов» по ​​конкретному имени файла.

236
ответ дан 06.05.2020, 09:14
  • 1
    Я исказил apt-file find как apt-find давным-давно и it' s действительно удобный! Btw, последние версии требуют, поддерживают apt-file update. – user545424 06.05.2020, 09:14
  • 2
    @ user2097818 Причина, по которой этот ответ не принят, заключается в том, что мой основной вопрос ограничен файлами в системе и установленными пакетами. apt-file часто находит ложные срабатывания, то есть пакеты, которые не установлены. Конечно, этот ответ отлично подходит для «бонусного вопроса». – Ned Batchelder 06.05.2020, 09:14
  • 3
    Для тех, кто живет в Редхате, apt-file search <> является наиболее близким аналогом dnf/yum whatprovides <>. – Honest Abe 06.05.2020, 09:15
  • 4
    На мой взгляд, это должен быть принятый ответ. Но в ответ на Поиск пакетов Ubuntu я могу утверждать, что эта простая программа-оболочка чрезвычайно дружелюбна и легко запоминаема (если вы ее знаете). Если вы используете dpkg, apt-get или aptitude в качестве стандартных инструментов, нет ничего приятного в запуске Chrome для работы в Интернете! – hpaulj 06.05.2020, 09:15

Я пытался отследить, что установлено 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%:*}

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

apt-file search $(realpath $(which THING))|grep 'THING
3
ответ дан 06.05.2020, 09:15
  • 1
    Обновление: Мне кажется скучным копировать этот ответ макаронами и вносить в него небольшие изменения, но мои изменения были отклонены. Я надеюсь, что вы чувствуете, что я сохранил целостность вашего ответа в моем . – rien333 06.05.2020, 09:15
  • 2
    Не стесняйтесь редактировать или взломать; все, что делает его лучше для вас (вот почему я добавил лицензию MIT! Мне даже не нужен кредит). – LetzerWille 06.05.2020, 09:15
  • 3
    Алекс, я люблю этот ответ. Надеюсь, вы не возражаете против моего редактирования. Я сделал это также для файлов, которые не установлены в системе. Я сделал резервную копию на gist.github.com/RichardBronosky/… и создам свой собственный ответ, если вы откажетесь или отклоните его. – amc 06.05.2020, 09:16

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

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

http://packages.ubuntu.com/search?searchon=contents&keywords=libnss3. так и усилитель; режим = exactfilename & ампы; люкс = осознанная & ампы; арка = любой

17
ответ дан 06.05.2020, 09:15
  • 1
    Это недавно просто возвращает ошибку. – Seanny123 06.05.2020, 09:16

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

apt-file list packagename
43
ответ дан 06.05.2020, 09:16

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

2
ответ дан 06.05.2020, 09:16

Это продолжение превосходного ответа Алекса Роша . Я попытался отредактировать этот ответ, но он был отклонен (но не 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}"

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

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

Для вещей, которые не установлены, вы можете использовать:

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 без необходимости искать https://packages.ubuntu.com/#search_contents

Скрипт 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 без необходимости искать https://packages.ubuntu.com/#search_contents

Для вещей, которые не установлены, вы можете использовать:

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 без необходимости искать https://packages.ubuntu.com/#search_contents

Скрипт 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 без необходимости искать https://packages.ubuntu.com/#search_contents

4
ответ дан 06.05.2020, 09:16
  • 1
    Это такой хороший ответ, что я должен удалить свой! – Community 06.05.2020, 09:17

Вы имеете в виду, какой пакет, а не какое приложение. Приложение является вашим менеджером пакетов, например 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:

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. [ 1123]

enter image description here

Пример

enter image description here [1116]

13
ответ дан 06.05.2020, 09:17

Теги

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