it-swarm.com.de

Ein Befehl zum Auflisten aller auf dem System installierten Pakete und ihrer installierten Dateien. Wie?

Ich benutze Ubuntu 14.04 LTS, Trusty. Ich möchte einen Befehl ausführen, um alle installierten Pakete des Systems aufzulisten, und für jeden Paketnamen sollten alle Dateien aufgelistet werden, die das Paket auf dem System installiert hat. wie kann ich das machen

2
ali

Sie können den folgenden Befehl ausführen, um diese Informationen im Terminal zu drucken:

for i in $(echo $(apt list 2>&1| grep installed | sed 's|/.*$||g')); do echo $i; dpkg -L $i | grep -P '^.'$i'|$'; done | tee APTINSTALLED | grep -P '^[a-z0-9].*$|$'

Der Befehl erstellt auch eine Datei mit diesen Informationen mit dem Namen APTINSTALLED.

Wenn Sie alternativ alle Dateien eines installierten Pakets auflisten möchten, können Sie den Befehl dpkg -L Gefolgt vom Paketnamen ausführen.

Führen Sie beispielsweise den folgenden Befehl aus, um alle mit dem Paket gnome-terminal Installierten Dateien aufzulisten:

dpkg -L gnome-terminal

Wenn Sie nur alle installierten Pakete auflisten möchten, können Sie den folgenden Befehl ausführen:

apt list 2>&1| grep installed | sed 's|/|  |g;s|\[.*$||g' | GREP_COLOR='0;32' grep --color=auto -P '^.*  '

Wenn Sie nur die installierten Pakete ohne die zusätzlichen Informationen auflisten möchten, können Sie dies stattdessen ausführen:

apt list 2>&1| grep installed | sed 's|/.*$||g'

Wenn Sie die Namen der installierten Pakete in linearer Form anstelle einer Spalte auflisten möchten, können Sie den folgenden Befehl ausführen:

echo $(apt list 2>&1| grep installed | sed 's|/.*$||g')

Wenn Sie zum Schluss alle installierten Pakete und eine kurze Beschreibung der einzelnen Pakete auflisten möchten, führen Sie den folgenden Befehl aus:

dpkg -l | grep --color=always ii

Der letzte Befehl hebt "ii" in Rot hervor, das direkt vor jedem Paketnamen gedruckt wird, um die Unterscheidung zwischen den Paketnamen und den Beschreibungen zu erleichtern.

Oder Sie können stattdessen einfach den folgenden Befehl ausführen:

dpkg -l

Zusätzlich können Sie, wie von @ steeldriver in einem Kommentar vorgeschlagen, das Flag -f Mit dem Befehl dpkg-query Verwenden, um den Namen auszudrucken. Hier ist ein Beispiel:

dpkg-query -W -f='${Package}\n' | while read -r p; do echo "$p" & dpkg-query -L "$p"; done

und hier ist es mit dem grün hervorgehobenen Paketnamen:

dpkg-query -W -f='${Package}\n' | while read -r p; do echo "$p" & dpkg-query -L "$p"; done | GREP_COLOR='0;32' grep -P --color=auto '^[a-z0-9].*$|$'

und hier in Form eines Skripts, das ein neues Verzeichnis erstellt ~/packagefiles. Durch Ausführen dieses Skripts wird für jedes im neuen Verzeichnis installierte Paket eine Textdatei erstellt. Jede Textdatei enthält die Liste der Dateien für jedes Paket. Dies wird auch wie gewohnt im Terminal gedruckt, wobei jeder Paketname grün hervorgehoben wird:

#!/bin/bash
mkdir -p /home/$USER/packagefiles 2>&1
dpkg-query -W -f='${Package}\n' | while read -r p; do echo "
$p" & dpkg-query -L "$p" | tee /home/$USER/packagefiles/"$p"; done | GREP_COLOR='0;32' grep -P --color=auto '^[a-z0-9].*$|$'

Dies ist praktisch, da jedes Paket im Verzeichnis aufgeführt ist und daher ls ~/packagefiles Alle Pakete in Nizza-Spalten auflistet.

Vergessen Sie nicht, das Skript ausführbar zu machen.

4
mchid

Wenn wir es mit Apps zu tun haben, die über apt installiert wurden, ist das ziemlich einfach, wenn Sie wissen, dass jedes Paket /var/lib/dpkg/info/*.list Datei. Wir können den Dateinamen als Paketnamen drucken, und der Inhalt dieser Dateien enthält alle Dateien, die während der Installation mit dem Paket geliefert wurden. Mit anderen Worten:

for file in /var/lib/dpkg/info/*.list ; do echo ">>> $(basename ${file%%.*})" ; cat "$file" ; done

Wenn die Software mit git oder anderen Mitteln geliefert wurde (nicht dpkg oder apt), kann nicht wirklich festgestellt werden, welche Dateien zu Ihrem System hinzugefügt wurden.

1

cat/var/lib/dpkg/available | grep-Paket

0