Как найти местоположение установленной библиотеки

52

Справочная информация: я пытаюсь собрать свою программу, но сначала мне нужно настроить библиотеки в NetBeans. Мой проект использует GLU, и поэтому я установил libglu-dev. Я не заметил место, где были расположены библиотеки, и теперь я не могу их найти ..

Я переключился на Linux всего несколько дней назад, и до сих пор я очень доволен этим, однако я не мог найти этот гугл и разочаровался ... Есть ли способ узнать, где были установлены файлы пакета без запуска? установка снова? Я имею в виду, если я получил библиотеку xxx и установил ее некоторое время назад, есть ли какая-нибудь команда xxx, которая будет печатать эту информацию?

Я уже пробовал команды locate, find и whereis, но либо я что-то упустил, либо я просто не могу сделать это правильно ... для libglu, locate возвращает:

/usr/share/bug/libglu1-mesa
/usr/share/bug/libglu1-mesa/control
/usr/share/bug/libglu1-mesa/script
/usr/share/doc/libglu1-mesa
/usr/share/doc/libglu1-mesa/changelog.Debian.gz
/usr/share/doc/libglu1-mesa/copyright
/usr/share/lintian/overrides/libglu1-mesa
/var/lib/dpkg/info/libglu1-mesa:i386.list
/var/lib/dpkg/info/libglu1-mesa:i386.md5sums
/var/lib/dpkg/info/libglu1-mesa:i386.postinst
/var/lib/dpkg/info/libglu1-mesa:i386.postrm
/var/lib/dpkg/info/libglu1-mesa:i386.shlibs

Другие две команды ничего не нашли. Теперь locate сделал свое дело, но я уверен, что ни один из этих путей не является тем местом, где на самом деле находится библиотека (по крайней мере, все, что я до сих пор связывал, было в / usr / lib или usr / local / lib).

Libglu был введен в качестве примера, я ищу общее решение этой проблемы.

ворон
источник

Ответы:

68

Легко! dpkg -L packagename, Это перечислит все файлы (с местоположением), которые были принесены пакетом.

Джо-Эрленд Шинстад
источник
1
Вау, именно то, что я искал, спасибо! Просто небольшое замечание: я искал /usr/lib/i386-linux-gnu/libGLU.so.1(полученный с помощью dpkg), а фактическое имя библиотеки для команды - libglu1-mesa.
Ворон
3
Отлично. Я также порекомендую apt-файл. Он должен быть установлен, а затем вам нужно обновить apt-файл. apt-file list выполняет те же функции, что и dpkg -L, но без необходимости сначала устанавливать пакет. apt-file search позволяет вам определить, какой пакет предоставляет определенный файл. Крутые инструменты :)
Jo-Erlend Schinstad
1
sudoне нужен для dpkg -L.
MoonSweep
8

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

 dpkg --get-selections | grep -v deinstall | grep <packagename>

 For example:
      $dpkg --get-selections | grep -v deinstall | grep zip
 Output:
      bzip2                      install
      gzipinstall
      p7zip-fullinstall
      unzipinstall                                                                       
      zipinstall                         
  And then:
      $ dpkg -L zip
  Output:
      /.  
      /usr
      /usr/share
      /usr/share/doc
      /usr/share/doc/zip
      /usr/share/doc/zip/copyright
      /usr/share/doc/zip/TODO
      /usr/share/doc/zip/changelog.Debian.gz
      /usr/share/doc/zip/WHATSNEW
      /usr/share/man
      /usr/share/man/man1
      /usr/share/man/man1/zipsplit.1.gz
      /usr/share/man/man1/zipcloak.1.gz
      /usr/share/man/man1/zip.1.gz
      /usr/share/man/man1/zipnote.1.gz
      /usr/bin
      /usr/bin/zipsplit
      /usr/bin/zipcloak
      /usr/bin/zip
      /usr/bin/zipnote
      /usr/share/doc/zip/changelog.gz
0x8BADF00D
источник