Die Größe von installierten Paketen ermitteln – RPM Edition

Was Niko in seinem Techgruben-Beitrag Größe von installierten Paketen anzeigen für debianbasierte Paketmanager schön gezeigt hat, geht leider bei RPMs nicht ganz so leicht, aber das wird uns nicht aufhalten. @Nico: Guter Beitrag.Weitermachen 🙂  In meinem Beitrag geht es heute nicht nur um die Größe, sondern auch um das „wie man zum Ergebnis kommt“. Wer die Lösung sucht, die ist ganz am Ende.

Die Größe von installierten Paketen ermitteln

Die Option „-q“ steht bei rpm für Query, also die Datenbankabfrage. rpm -q paketname  liefert den vollständigen Paketnamen aus. Einfaches Beispiel:

$ rpm -q firefox
firefox-65.0-4.fc28.x86_64

Wir haben den Paketnamen, klasse. Und nun ? Wenn wir mehr über Firefox wissen möchten, dann müssen wir RPM das sagen:

$ rpm -qi firefox
Name : firefox
Version : 65.0
Release : 4.fc28
Architecture: x86_64
Install Date: Mo 18 Feb 2019 12:01:46 CET
Group : Unspecified
Size : 221446243
License : MPLv1.1 or GPLv2+ or LGPLv2+
Signature : RSA/SHA256, Di 05 Feb 2019 12:51:38 CET, Key ID e08e7e629db62fb1
Source RPM : firefox-65.0-4.fc28.src.rpm
Build Date : Mo 04 Feb 2019 19:07:57 CET
Build Host : buildvm-20.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager : Fedora Project
Vendor : Fedora Project
URL : https://www.mozilla.org/firefox/
Bug URL : https://bugz.fedoraproject.org/firefox
Summary : Mozilla Firefox Web browser
Description :
Mozilla Firefox is an open-source web browser, designed for standards
compliance, performance and portability.

Die Option „i“ gibt uns also detaillierte Informationen über das Paket aus. Da könnte man mit grep und viel Bashmagie was drehen. Bleibt noch das Problem, daß wir den Paketnamen brauchen. Das können wir leicht umgehen, in dem wir pauschal alle Pakete auflisten lassen. Die Option „-a“ macht es möglich:  rpm -qia  . Probiert es nicht aus, das ist echt viel an Infos 🙂

Das Queryformat

Natürlich geht das besser, denn RPM bietet an, daß es die Infos genauso ausgibt wie man es braucht. Die nötige Option lautet „–queryformat“ :

$ rpm -q firefox –queryformat „%{NAME} uses %{SIZE:humaniec}\n“
firefox uses 211M

Schön, damit kann man arbeiten 🙂 Die Größe nach vorn, Paketname dahinter:

$ rpm -q firefox –queryformat „%{SIZE:humaniec}:%{NAME}\n“
211M:firefox

Das ist schon besser. Da kann man einen Sort drauf ansetzen:

rpm -qa –queryformat „%{SIZE:humaniec}:%{NAME}\n“ | sort -r -n

„-r -n“  Reverse, also groß zuerst, und numerisch sortieren. Sort erkennt automatisch, was keine Zahl mehr ist und sortiert entsprechend. Aber stimmt die Ausgabe auch wirklich?

Schauen wir uns mal die Top 30 an :

$ rpm -qa –queryformat „%{SIZE:humaniec}:%{NAME}\n“ | sort -r -n | head -n 30

1024K:python2-coverage
1022K:openssh-server
1019K:xorg-x11-drv-wacom
1019K:libgcrypt
1018K:tix
1016K:libmx
1015K:vte
1015K:python2-simplejson
1010K:pyzy
1009K:ncurses-libs
1008K:libappstream-glib
1007K:libxcb
1007K:libodfgen
1007K:boost-locale
1006K:eris
1006K:dracut
1004K:libxcb
1004K:libtomcrypt
1003:openoffice-brand-impress
1002:openoffice-brand-writer
1000:openoffice-brand-math
1000:openoffice-brand-draw
1000:openoffice-brand-calc
1000:openoffice-brand-base
999K:at-spi
997K:vte3
996K:mdadm
995K:rubberband
995K:ncurses-libs
994K:cjs

Ein Paket mit 1024 KB, also 1 MB, soll das größte Paket in der Liste sein? Das kann nicht sein.  Ist es auch nicht. Schon das Firefoxpaket von oben hat 211 MB. Wo ist da jetzt der Fehler?

Ist klar, wir lassen die Paketgröße mit dem Zusatz „:humaniec“ ausgeben. Das erzeugt die 211M oder 1024K , weil „211M:firefox“ besser lesbar ist für Menschen, also „221446243:firefox“. Nun ist aber 1024 größer als 211 🙂 Sort hat also alles richtig gemacht, aber die sortierten Informationen waren falsch vorbereitet.

So wird es besser

$ rpm -qa –queryformat „%{SIZE}:%{NAME}\n“ | sort -r -n | head -n 30
2104146639:0ad-data
573182723:supertuxkart-data
526795437:wesnoth-data
369138973:wine-debuginfo
346355557:linux-firmware
319608404:naev-data
250326767:wine-staging64
242843598:skypeforlinux
236453994:wine-core
221999655:wine-staging-common
221446243:firefox

Wenig überraschend toppt 0.AD alle anderen Pakete mit seinen 2GB an Grafikdaten 😉 Firefox mit seinen 211 M liegt abgeschlagen auf Platz 11 😉

Es geht auch etwas kürzer, aber nicht viel:

rpm -qa –qf „%{SIZE}:%{NAME}\n“ | sort -rn | head -30

Natürlich habe ich mal rumgeschaut, was zu dem Thema schon mal verfasst wurde. Leider war nichts besseres da, da es wohl schon das Optimum ist. Aber man kann natürlich immer noch was daraus lernen, z.b. wie man mit AWK Bytes in MB umrechnen kann :

rpm -qa –qf ‚%{SIZE} %{NAME}\n‘ | awk ‚{printf(„%sMb %s\n“, $1 / 1000 / 1000, $2)}‘ | sort -k1 -n

Dummerweise funktioniert das Sort in der Ausgabe nicht sauber, aber der AWK Teil ist nett 🙂
(Quelle für den AWK Part: list-all-packages-by-installed-size-bytes-on-rpm-distros )

 

Gnu.org im Jahr 1998 stecken geblieben

Ja, ich weiß, Ihr könnt es nicht mehr lesen, der xte Mailserver der keine TLS 1.2 kann, nur leider hat der hier eggs.gnu.org eine wichtige Rolle, der handelt nämlich Emails für gnu.org . Kein TLS 1.2 , keine Emails mehr aus Europa.

„.. und dabei ist FOSS & TLS 1.2 kein Widerspruch.“

Trying TLS on eggs.gnu.org[209.51.188.92:25] (10):

secondstest stage and result
[000.007]Connected to server
[000.167]<–220 eggs.gnu.org ESMTP Exim 4.71 Sat, 09 Feb 2019 11:54:20 -0500
[000.167]We are allowed to connect
[000.167] –>EHLO www6.CheckTLS.com
[000.174]<–250-eggs.gnu.org Hello www6.checktls.com [159.89.187.50]
250-SIZE 52428800
250-PIPELINING
250-STARTTLS
250 HELP
[000.174]We can use this server
[000.175]TLS is an option on this server
[000.175] –>STARTTLS
[000.185]<–220 TLS go ahead
[000.186]STARTTLS command works on this server
[000.275]Connection converted to SSL
SSLVersion in use: TLSv1
Cipher in use: DHE-RSA-AES256-SHA
Certificate 1 of 3 in chain: Cert VALIDATED: ok
Cert Hostname VERIFIED (eggs.gnu.org = eggs.gnu.org | DNS:eggs.gnu.org | DNS:mail.gnu.org)
cert not revoked by CRL
cert not revoked by OCSP
serialNumber=03:f9:06:4d:6c:6d:1e:1c:83:03:50:8a:32:c0:d5:a9:da:99
subject= /CN=eggs.gnu.org
issuer= /C=US/O=Let’s Encrypt/CN=Let’s Encrypt Authority X3
Certificate 2 of 3 in chain: Cert VALIDATED: ok
cert not revoked by CRL
cert not revoked by OCSP
serialNumber=0a:01:41:42:00:00:01:53:85:73:6a:0b:85:ec:a7:08
subject= /C=US/O=Let’s Encrypt/CN=Let’s Encrypt Authority X3
issuer= /O=Digital Signature Trust Co./CN=DST Root CA X3
Certificate 3 of 3 in chain: Cert VALIDATED: ok
cert not revoked by CRL
cert not revoked by OCSP
serialNumber=44:af:b0:80:d6:a3:27:ba:89:30:39:86:2e:f8:40:6b
subject= /O=Digital Signature Trust Co./CN=DST Root CA X3
issuer= /O=Digital Signature Trust Co./CN=DST Root CA X3

wenn man mal genauer hinsieht mit :  „openssl s_client -connect eggs.gnu.org:25 -starttls smtp -tls1“

Subject=/CN=eggs.gnu.org
….
New, SSLv3, Cipher is AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1
Cipher : AES256-SHA
….
250 HELP

sieht dann auch, daß der Cipher noch aus SSLv3 Zeiten stammt, was nicht verwundert, weil TLS 1.0 nur SSLv3 mit SNI Support ist.

Falls jemand von Euch jemand den GNU Leuten Emails schicken will, machts gleich in Klartext 😀

Wifiscanner App

Habt Ihr Euch mal gewünscht, daß Ihr mehr als nur die Liste mit verfügbaren WIFI Netzen sehen zu können ? Vielleicht auch, wo die liegen ? Also rein technisch, auf welchem Channel ? Na dann hätte ich da was für Euch:

Oh Ja, bei der Aufnahme was ganz schön was los 😀

Es dürfte offensichtlich sein, was man damit machen kann 😉 Weniger offensichtlich ist, wo man es her bekommt.

Versuchts mal hier:  https://github.com/Cyborgscode/wifiscanner

Wers gut findet kann ja mal einen Like auf Github da lassen.

Ach ja

das obligatorische Making-Of : 1 Tag GTK lernen, C hassen und Polkit verfluchend ( hat sich gelegt  😉 ) könnt Ihr ja selbst mal machen 😉