Woher weiß ich, welche Programme ein apt-get-Paket enthält?

17

Ich würde gerne wissen , was einige spezifische Paket installiert, zum Beispiel bei der Installation ncurses, ich gefunden habe TABSchlüssel erweitert:

sudo apt-get install ncurses-

zeigen:

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

Wie kann ich wissen, was ncurses-terminstalliert wird? Ich interessiere mich hauptsächlich für Programme, aber Bibliotheken und andere Dateitypen könnten auch nützlich sein.

Wenn möglich, wird eine Befehlszeilenmethode bevorzugt ( alle anderen werden ebenfalls akzeptiert).

Sopalajo de Arrierez
quelle
Wenn Sie "Programme" sagen, sprechen Sie von Binärdateien?
Braiam
Binaries und Skripte, wenn möglich, danke, @Braiam.
Sopalajo de Arrierez

Antworten:

21

Hier sind einige Optionen, die alle von einem Paket installierten Dateien auflisten:

A. Auflisten aller in einem Paket enthaltenen Dateien

  1. Für installierte Pakete

    dpkg -L ncurses-term
    
  2. Für alle installierten oder nicht installierten Pakete

    apt-file -F list ncurses-term
    

    Die -FMusteranpassungsrunden, sodass nur Pakete zurückgegeben werden, deren genauer Name übereinstimmt. Sie können installieren müssen apt-filemit sudo apt-get install apt-fileund dann seine Datenbank aktualisieren mit sudo apt-file update.

B. Nur ausführbare Dateien auflisten, die in einem Paket enthalten sind

  1. Für installierte Pakete

    Einfach installieren dlocate( sudo apt-get dlocate) und ausführen:

    dlocate -lsbin ncurses-term 
    

    Wie erklärt in man dlocate:

    -lsbin Listet den vollständigen Pfad / Dateinamen der ausführbaren Dateien (falls vorhanden) im Paket auf

    Wenn Sie keine zusätzlichen Pakete installieren möchten, können Sie dies manuell tun. Sammeln Sie einfach die Liste der Dateien und suchen Sie nach Dateien, bei denen das ausführbare Bit gesetzt ist:

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

    Das kleine obige Scriptlet gibt nur den Pfad aus ( cut -d ' ' -f 2) und durchläuft dann eine whileSchleife, die prüft, ob die Datei ausführbar ist ( -x $file) und ob es sich um eine reguläre Datei handelt, keine Verzeichnisse oder Symlinks ( -f $file) und gibt ihren Namen nur dann aus, wenn beide Tests bestanden wurden .

  2. Für alle installierten oder nicht installierten Pakete

    Ich kenne keine Möglichkeit, nur ausführbare Dateien aufzulisten, die in einem deinstallierten Paket enthalten sind. Da die meisten ausführbaren Dateien jedoch in binVerzeichnissen installiert sind , können Sie die meisten von ihnen erhalten, indem Sie die Ausgabe analysieren:

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

    Die -wOption stimmt mit ganzen Wörtern überein, sodass beispielsweise keine Elemente installiert werden trashbinoder was auch immer.


HINWEIS : Keiner der oben genannten Befehle erzeugt eine Ausgabe für. ncurses-termDies liegt jedoch daran, dass dieses Paket keine ausführbaren Dateien installiert. Die Befehle funktionieren trotzdem, versuche es mit einem anderen Paket.

terdon
quelle
Hallo terdon, bist du sicher, dass der Befehl auf nicht installierten Anwendungen funktionieren sollte? wenn ich es versuche, bietet es sich einfach an zu installieren. Was ist nicht so seltsam, da die .install-Datei (wahrscheinlich) mit der Anwendung heruntergeladen wird?
Jacob Vlijm
@Jacob ja, ich habe gerade versucht, mit einem Paket, von dem ich weiß, dass es nicht installiert ist apt-file, den Inhalt des Pakets aufzulisten . Funktioniert mit Debian-Tests und Ubuntu 13.10.
Terdon
Aha, danke, es macht Sinn, dachte ich mir nur, da die Abhängigkeiten auch bei nicht installierten Anwendungen angezeigt werden.
Jacob Vlijm
4

Du könntest apt-file benutzen:

sudo apt-file update        
apt-file list package_name
Sylvain Pineau
quelle
3
Wenn apt-filees nicht installiert ist, können Sie es mit installieren sudo apt-get install apt-file.
Edwin
3

Es besteht die Möglichkeit, dass Sie Ihren Browser verwenden (daher keinen Zugriff auf ein APT-System benötigen). Um beispielsweise den Dateiinhalt des Pakets "ncurses-term" aufzulisten, geben Sie einfach Folgendes ein

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

in die Adressleiste Ihres Browsers (ersetzen Sie "wheezy" nach Bedarf) für Debian oder

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

für Ubuntu (ersetzen Sie "saucy" nach Bedarf).

Michael Kremser
quelle
Eine interessante Methode. Diese Liste gilt für Debian-Pakete. Soll sie für jede andere Distribution wie Ubuntu oder Kali gleich sein?
Sopalajo de Arrierez
1
@Sopalajo de Arrierez: Lesen Sie genau: Ich habe auch den Link für das gleiche Paket (in diesem Beispiel ncurses-term) für Ubuntu gepostet. Die Dateiliste ist möglicherweise dieselbe, wenn eine bestimmte Ubuntu-Version dieselbe Version des Pakets wie eine der Debian-Gruppen hat, dies ist jedoch nicht unbedingt der Fall. Ubuntu, Kali, Aptosid, CrunchBang und alle anderen Debian-basierten Distributionen könnten Pakete nach Belieben modifizieren (insbesondere Dateien wie "README" oder Konfigurationsdateien für das Init-System).
Michael Kremser
Ich verstehe, @ MichaelKremser. Wie ich sehen kann, ist es nützlich, im Web nach dem Inhalt eines Pakets zu suchen. Sie sollten jedoch vorzugsweise in der offiziellen Paketliste Ihrer spezifischen Distribution suchen.
Sopalajo de Arrierez
1
@ Sopalajo de Arrierez: Ja, richtig. Wenn Sie auf Debian Wheezy sind, verwenden Sie die Paketliste für Debian Wheezy. Wenn Sie auf Debian testen, verwenden Sie diese, wenn Sie auf Ubuntu Precise sind, nehmen Sie die Liste. Es kann immer Unterschiede geben, obwohl zum Beispiel Ubuntu viele Pakete von Debian unverändert nimmt. Dies kann sich jedoch jederzeit ändern.
Michael Kremser