Jak znaleźć lokalizację zainstalowanej biblioteki


52

Tło: Próbuję zbudować swój program, ale najpierw muszę skonfigurować biblioteki w netbeans. Mój projekt używa GLU i dlatego zainstalowałem libglu-dev. Nie zanotowałem lokalizacji bibliotek i nie mogę ich teraz znaleźć.

Kilka dni temu przełączyłem się na Linuksa i do tej pory jestem z niego bardzo zadowolony, jednak nie mogłem go znaleźć w Google i jestem sfrustrowany. Czy istnieje sposób, aby dowiedzieć się, gdzie pliki pakietu zostały zainstalowane bez uruchamiania instalacja ponownie? Mam na myśli to, że jeśli dostałem bibliotekę xxx i zainstalowałem ją jakiś czas temu, czy jest jakieś polecenie xxx , które wydrukuje te informacje?

Próbowałem już zlokalizować, znaleźć i gdzie jest komenda, ale albo coś mi brakuje, albo po prostu nie mogę tego zrobić poprawnie. W przypadku libglu lokalizowanie zwraca:

/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

Pozostałe dwa polecenia niczego nie znajdują. Teraz locate wykonało swoją pracę, ale jestem pewien, że żadna z tych ścieżek nie jest tam, gdzie biblioteka faktycznie się znajduje (przynajmniej wszystko, co do tej pory łączyłem, znajdowało się w / usr / lib lub usr / local / lib).

Libglu zostało wprowadzone jako przykład, szukam ogólnego rozwiązania tego problemu.

Odpowiedzi:


68

Łatwo! dpkg -L packagename. Spowoduje to wyświetlenie wszystkich plików (z lokalizacją), które zostały przyniesione przez pakiet.


1
Wow, dokładnie to, czego szukałem, dzięki! Krótka uwaga: szukałem tej /usr/lib/i386-linux-gnu/libGLU.so.1(uzyskanej z dpkg), a faktyczna nazwa biblioteki dla polecenia to libglu1-mesa.
Raven

3
Wspaniały. Polecę też apt-file. Musi zostać zainstalowany, a następnie musisz wykonać aktualizację apt-file. lista plików apt działa tak samo jak dpkg -L, ale bez konieczności wcześniejszej instalacji pakietu. apt-file search pozwala dowiedzieć się, który pakiet zawiera określony plik. Fajne narzędzia :)
Jo-Erlend Schinstad

1
sudonie jest potrzebne dpkg -L.
MoonSweep

8

Jeśli nie masz pewności co do nazwy pakietu, możesz wyświetlić listę wszystkich pakietów i spróbować znaleźć żądane:

 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.