Siduction Forum
Siduction Forum => Software - Support => Topic started by: Geier0815 on 2017/11/30, 13:45:11
-
Moin Moin,
gibt es per dpkg oder apt eine Möglichkeit die Anzahl der installierten Pakete zu ermitteln?
dpkg -l | awk '{print $2}' | wc -l
funktioniert zwar, ist aber mMn nicht sonderlich elegant. Da wird es doch sicherlich eine Möglichkeit direkt aus apt oder dpkg heraus geben die ich nur übersehen habe.
-
Wie wär's etwas kürzer mit.....
# apt-show-versions | wc -l
...wahlweise noch ein Alias basteln (in .bashrc).
lspkg='apt-show-versions | wc -l'
...dann spart man sich Tipparbeit ;-)
-
Auch wenn mich die Anzahl der installierten Pakete bisher nicht interessiert hat ;) habe ich das mal ausprobiert und bin darüber verwundert, dass ich, je nach Befehl, unterschiedliche Werte erhalte.
$ dpkg -l | awk '{print $2}' | wc -l
4756
$ apt-show-versions | wc -l
6656
$ apt list --installed | wc -l
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
3863
In Synaptic steht, dass bei mir 4141 Pakete installiert sind.
Bei dem Befehl von bluelupo ist mir dann aufgefallen, dass dort sowohl installierte, als auch nicht installierte Pakete aufgezählt werden. Wenn ich die Anzahl der nicht installierten Pakete ermittle.
$ apt-show-versions | grep "not installed" | wc -l
2515
und diese dann von der zuert ermittelten Zahl abziehe, komme ich auf den Wert, der mir Synaptic anzeigt.
6656 - 2515 = 4141
-
Bei mir wirft apt-show-versions auch solche Zeilen aus (Beispiel):
yakuake:i386 not installed
Also vielleicht besser:
apt-show-versions | grep -v "not installed" | wc -l
Oder gleich so:
dpkg -l | grep '^ii' | wc -l
Variante 2 ergibt bei mir eine etwas geringere Anzahl. Daraus schließe ich, dass die Liste aus Variante 1 noch mehr irrelevantes Zeugs enthält.
-
@pit
bei mir kommt bei deinen beiden Befehlen das gleiche raus
-
Obiges Beispiel von mir war nicht korrekt. Diese Befehlsvarianten liefern alle das gleiche Ergebnis bei mir.
# Warning Ausgabe von "apt list" nicht anzeigen und Zeilen suchen die Klammerpaare von der Sorte [] enthalten
# apt list --installed 2>&1|egrep '(\[.*\])'|wc -l
2177
# Ausgabe ab Zeile 7 (vorher nur Headerzeilen)
# dpkg -l|awk '{if (NR>=7) print $2}'|wc -l
2177
# nur installierte Pakete anzeigen
# apt-show-versions |egrep -vi "not installed"|wc -l
2177
Aber alle Varianten sind im Prinzip gleich "schwierig" zu tippen, daher würde ich das in ein Alias packen.
-
warum nicht einfach
dpkg -l | wc -l
?
an den Zeilen ändert awk ja nichts.
-
@Penyelam,
hast Recht, kam dadurch das ich beim Testen von dpkg durch ein kleines Terminalfenster Umbrüche gesehen habe und deshalb erst einmal durch awk geschickt habe und dann erst das wc -l dran gehängt habe.
@all,
Bei dpkg -l sollte man wohl erst einmal auf "ii" greppen da man sonst deinstallierte Pakete mit gezählt bekommt (zB Status rc in dpkg). Wobei "ii" auch unsauber ist weil man dann gehaltene Pakete nicht mit zählt, die haben den Status "hi". Also müßte man eigentlich auf die zweite Stelle im ersten Block mit Inhalt "i" greppen.
dpkg -l | awk '{print $1}'| grep "^.i" | wc -l
Das "^" im grep muß sein, da sonst die Zeile "Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig" mitgezählt wird.
Echt nicht trivial und ich bin mir nicht sicher ob ich damit wirklich alle Eventualitäten abgedeckt habe. Von daher wundert es mich das es eine solche Option zum Zählen der installierten Pakete nicht in apt oder dpkg direkt gibt. Es beruhigt mich aber das ich nicht nur zu doof war die zu entdecken.
Und Danke für die anderen Vorschläge an das Problem heran zu gehen!