Skąd mam wiedzieć, jakie programy zawiera jakiś pakiet apt-get?

17

Chciałbym wiedzieć, co instaluje jakiś konkretny pakiet , na przykład podczas instalacji ncursesodkryłem, że TABklucz się rozwija:

sudo apt-get install ncurses-

pokazywać:

ncurses-base      ncurses-doc       ncurses-hexedit
ncurses-bin       ncurses-examples  ncurses-term

Skąd mam wiedzieć, co, powiedzmy, ncurses-terminstaluje? Interesują mnie głównie programy, ale biblioteki i inne typy plików mogą być również przydatne.

Preferowana byłaby metoda wiersza poleceń , jeśli to możliwe ( wszystkie inne również akceptowane).

Sopalajo de Arrierez
źródło
Kiedy mówisz „programy”, mówisz o plikach binarnych?
Braiam
Pliki binarne i skrypty, jeśli to możliwe, dzięki, @Braiam.
Sopalajo de Arrierez

Odpowiedzi:

21

Oto kilka opcji, które zawierają listę wszystkich plików zainstalowanych przez pakiet:

A. Lista wszystkich plików zawartych w pakiecie

  1. Dla zainstalowanych pakietów

    dpkg -L ncurses-term
    
  2. Dla wszystkich pakietów zainstalowanych lub nie

    apt-file -F list ncurses-term
    

    Do -Ftak, że tylko pakiety, których obroty dopasowywania wzoru dokładna nazwa mecze są zwracane. Może być konieczne zainstalowanie za apt-filepomocą, sudo apt-get install apt-filea następnie zaktualizowanie bazy danych za pomocą sudo apt-file update.

B. Wyświetlanie tylko plików wykonywalnych zawartych w pakiecie

  1. Dla zainstalowanych pakietów

    Wystarczy zainstalować dlocate( sudo apt-get dlocate) i uruchomić:

    dlocate -lsbin ncurses-term 
    

    Jak wyjaśniono w man dlocate:

    -lsbin Wyświetla pełną ścieżkę / nazwy plików plików wykonywalnych (jeśli istnieją) w pakiecie

    Jeśli nie chcesz instalować dodatkowych pakietów, możesz to zrobić ręcznie. Po prostu zbierz listę plików i znajdź spośród nich zestaw bitów wykonywalnych:

    apt-file -F list ncurses-term | cut -d ' ' -f 2 | 
        while read file; do [[ -x $file && -f $file ]] && echo "$file"; done
    

    Mały skryptlet powyżej wydrukuje tylko ścieżkę ( cut -d ' ' -f 2), a następnie przepuści ją przez whilepętlę, która sprawdza, czy plik jest wykonywalny ( -x $file) i czy jest to zwykły plik, bez katalogów lub dowiązań symbolicznych ( -f $file) i drukuje jego nazwę tylko wtedy, gdy przejdzie oba testy .

  2. Dla wszystkich pakietów zainstalowanych lub nie

    W żaden sposób nie znam listy tylko plików wykonywalnych zawartych w odinstalowanym pakiecie. Ponieważ jednak większość plików wykonywalnych jest zainstalowanych w binkatalogach, większość z nich można uzyskać, analizując dane wyjściowe:

     apt-file -F list ncurses-term | grep -Ew "bin|sbin"
    

    -wOpcja pasuje całych słów, więc nie dostać rzeczy zainstalowane w, na przykład, trashbinczy cokolwiek innego.


UWAGA : Żadne z powyższych poleceń nie wygeneruje żadnych danych wyjściowych, ncurses-termale dzieje się tak, ponieważ ten pakiet nie instaluje plików wykonywalnych. Polecenia działają mimo to, spróbuj z innym pakietem.

terdon
źródło
Cześć Terdon, czy jesteś pewien, że polecenie powinno działać na niezainstalowanych aplikacjach? kiedy próbuję, po prostu oferuje instalację. Co nie jest takie dziwne, ponieważ plik .install jest (prawdopodobnie) pobierany z aplikacją?
Jacob Vlijm
@Jacob tak, właśnie próbowałem z pakietem, o którym wiem, że nie jest zainstalowany i apt-filewymieniłem zawartość pakietu. Działa na testach Debiana i Ubuntu 13.10.
terdon
Aha, dzięki, to sprawia, że ​​właśnie tak myślałem, ponieważ zależności są pokazane również w niezainstalowanych aplikacjach.
Jacob Vlijm
4

Możesz użyć apt-file:

sudo apt-file update        
apt-file list package_name
Sylvain Pineau
źródło
3
Jeśli apt-filenie jest zainstalowany, możesz go zainstalować za pomocą sudo apt-get install apt-file.
edwin
3

Istnieje możliwość korzystania z przeglądarki (dlatego nie wymaga dostępu do systemu APT). Na przykład, aby wyświetlić zawartość pliku pakietu „ncurses-term”, wystarczy wpisać

https://packages.debian.org/wheezy/all/ncurses-term/filelist

w pasku adresu przeglądarki (w razie potrzeby zamień „wheezy”) dla Debiana lub

http://packages.ubuntu.com/saucy/all/ncurses-term/filelist

dla Ubuntu (w razie potrzeby zastąp „pyskaty”).

Michael Kremser
źródło
Ciekawa metoda. Ta lista dotyczy pakietów Debiana, więc: czy powinna być taka sama dla innych dystrybucji takich jak Ubuntu lub Kali?
Sopalajo de Arrierez
1
@Sopalajo de Arrierez: Przeczytaj dokładnie: Wysłałem również link do tego samego pakietu (ncurses-term w tym przykładzie) dla Ubuntu. Lista plików może być taka sama, jeśli konkretna wersja Ubuntu ma tę samą wersję pakietu niż jeden z zestawów Debiana, ale niekoniecznie. Ubuntu, Kali, Aptosid, CrunchBang i wszystkie inne dystrybucje oparte na Debianie mogą modyfikować pakiety według własnego uznania (szczególnie pliki takie jak „README” lub pliki konfiguracyjne dla systemu init).
Michael Kremser
Rozumiem, @MichaelKremser. Tak więc, jak widzę, przeszukiwanie zawartości pakietu w Internecie jest przydatne, ale najlepiej jest szukać na oficjalnej liście paczek dla konkretnej dystrybucji.
Sopalajo de Arrierez
1
@Sopalajo de Arrierez: Tak, racja. Jeśli korzystasz z Debian Wheezy, skorzystaj z listy pakietów dla Debian Wheezy, jeśli korzystasz z testów Debiana, użyj tej, jeśli korzystasz z Ubuntu Precise, weź jej listę. Zawsze mogą występować różnice, chociaż na przykład Ubuntu przyjmuje niemodyfikowane pakiety Debiana. Może się to jednak zmienić w dowolnym momencie.
Michael Kremser