Siduction Forum

Siduction Forum => Software - Support => Topic started by: Geier0815 on 2017/11/30, 13:45:11

Title: Anzahl installierter Pakete eleganter ermitteln?
Post 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?

Code: [Select]
dpkg -l | awk '{print $2}' | wc -lfunktioniert 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.
Title: Re: Anzahl installierter Pakete eleganter ermitteln?
Post by: bluelupo on 2017/11/30, 13:52:50
Wie wär's etwas kürzer mit.....

Code: [Select]
# apt-show-versions | wc -l

...wahlweise noch ein Alias basteln (in .bashrc).

Code: [Select]
lspkg='apt-show-versions | wc -l'

...dann spart man sich Tipparbeit ;-)
Title: Re: Anzahl installierter Pakete eleganter ermitteln?
Post by: whistler_mb on 2017/11/30, 15:12:25
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.

Code: [Select]
$ dpkg -l | awk '{print $2}' | wc -l
4756
Code: [Select]
$ apt-show-versions | wc -l
6656
Code: [Select]
$ 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.
Code: [Select]
$ 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.
Code: [Select]
6656 - 2515 = 4141
Title: Re: Anzahl installierter Pakete eleganter ermitteln?
Post by: pit on 2017/11/30, 15:14:41
Bei mir wirft apt-show-versions auch solche Zeilen aus (Beispiel):
Code: [Select]
yakuake:i386 not installed
Also vielleicht besser:

Code: [Select]
apt-show-versions | grep -v "not installed" | wc -l
Oder gleich so:

Code: [Select]
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.
Title: Re: Anzahl installierter Pakete eleganter ermitteln?
Post by: whistler_mb on 2017/11/30, 19:04:32
@pit

bei mir kommt bei deinen beiden Befehlen das gleiche raus
Title: Re: Anzahl installierter Pakete eleganter ermitteln?
Post by: bluelupo on 2017/11/30, 21:17:04
Obiges Beispiel von mir war nicht korrekt. Diese Befehlsvarianten liefern alle das gleiche Ergebnis bei mir.

Code: [Select]
# 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.
Title: Re: Anzahl installierter Pakete eleganter ermitteln?
Post by: Penyelam on 2017/11/30, 22:07:10
warum nicht einfach
Code: [Select]
dpkg -l | wc -l?

an den Zeilen ändert awk ja nichts.
Title: Re: Anzahl installierter Pakete eleganter ermitteln?
Post by: Geier0815 on 2017/12/01, 10:08:52
@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.
Code: [Select]
dpkg -l | awk '{print $1}'| grep "^.i" | wc -lDas "^" 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!