Nächste: , Vorige: , Nach oben: Zubehör   [Inhalt][Index]


10.9 guix size aufrufen

Der Befehl guix size hilft Paketentwicklern dabei, den Plattenplatzverbrauch von Paketen zu profilieren. Es ist leicht, die Auswirkungen zu unterschätzen, die das Hinzufügen zusätzlicher Abhängigkeiten zu einem Paket hat oder die das Verwenden einer einzelnen Ausgabe für ein leicht aufteilbares Paket ausmacht (siehe Pakete mit mehreren Ausgaben.). Das sind typische Probleme, auf die guix size aufmerksam machen kann.

Dem Befehl können eine oder mehrere Paketspezifikationen wie gcc@4.8 oder guile:debug übergeben werden, oder ein Dateiname im Store. Betrachten Sie dieses Beispiel:

$ guix size coreutils
Store-Objekt                            Gesamt   Selbst
/gnu/store/…-gcc-5.5.0-lib           60.4    30.1  38.1%
/gnu/store/…-glibc-2.27              30.3    28.8  36.6%
/gnu/store/…-coreutils-8.28          78.9    15.0  19.0%
/gnu/store/…-gmp-6.1.2               63.1     2.7   3.4%
/gnu/store/…-bash-static-4.4.12       1.5     1.5   1.9%
/gnu/store/…-acl-2.2.52              61.1     0.4   0.5%
/gnu/store/…-attr-2.4.47             60.6     0.2   0.3%
/gnu/store/…-libcap-2.25             60.5     0.2   0.2%
Gesamt: 78.9 MiB

Die hier aufgelisteten Store-Objekte bilden den transitiven Abschluss der Coreutils – d.h. die Coreutils und all ihre Abhängigkeiten und deren Abhängigkeiten, rekursiv –, wie sie hiervon angezeigt würden:<f

$ guix gc -R /gnu/store/…-coreutils-8.23

Hier zeigt die Ausgabe neben den Store-Objekten noch drei Spalten. Die erste Spalte namens „Gesamt“ gibt wieder, wie viele Mebibytes (MiB) der Abschluss des Store-Objekts groß ist – das heißt, dessen eigene Größe plus die Größe all seiner Abhängigkeiten. Die nächste Spalte, bezeichnet mit „Selbst“, zeigt die Größe nur dieses Objekts an. Die letzte Spalte zeigt das Verhältnis der Größe des Objekts zur Gesamtgröße aller hier aufgelisteten Objekte an.

In diesem Beispiel sehen wir, dass der Abschluss der Coreutils 79 MiB schwer ist, wovon das meiste durch libc und die Bibliotheken zur Laufzeitunterstützung von GCC ausgemacht wird. (Dass libc und die Bibliotheken vom GCC einen großen Anteil am Abschluss ausmachen, ist aber an sich noch kein Problem, weil es Bibliotheken sind, die auf dem System sowieso immer verfügbar sein müssen.)

Weil der Befehl auch Namen von Store-Dateien akzeptiert, kann man damit auch die Größe eines Erstellungsergebnisses ermitteln:

guix size $(guix system build config.scm)

Wenn das oder die Paket(e), die an guix size übergeben wurden, im Store verfügbar sind24, beauftragen Sie mit guix size den Daemon, die Abhängigkeiten davon zu bestimmen und deren Größe im Store zu messen, ähnlich wie es mit du -ms --apparent-size geschehen würde (siehe du invocation in GNU Coreutils).

Wenn die übergebenen Pakete nicht im Store liegen, erstattet guix size Bericht mit Informationen, die aus verfügbaren Substituten herausgelesen werden (siehe Substitute). Dadurch kann die Plattenausnutzung von Store-Objekten profiliert werden, die gar nicht auf der Platte liegen und nur auf entfernten Rechnern vorhanden sind.

Sie können auch mehrere Paketnamen angeben:

$ guix size coreutils grep sed bash
Store-Objekt                            Gesamt   Selbst
/gnu/store/…-coreutils-8.24          77.8    13.8  13.4%
/gnu/store/…-grep-2.22               73.1     0.8   0.8%
/gnu/store/…-bash-4.3.42             72.3     4.7   4.6%
/gnu/store/…-readline-6.3            67.6     1.2   1.2%
…
Gesamt: 102.3 MiB

In diesem Beispiel sehen wir, dass die Kombination der vier Pakete insgesamt 102,3 MiB Platz verbraucht, was wesentlich weniger als die Summe der einzelnen Abschlüsse ist, weil diese viele Abhängigkeiten gemeinsam verwenden.

Wenn Sie sich das von guix size gelieferte Profil anschauen, fragen Sie sich vielleicht, warum ein bestimmtes Paket überhaupt darin auftaucht. Den Grund erfahren Sie, wenn Sie guix graph --path -t references benutzen, um sich den kürzesten Pfad zwischen zwei Paketen anzeigen zu lassen (siehe guix graph aufrufen).

Die verfügbaren Befehlszeilenoptionen sind:

--substitute-urls=URLs

Substitutinformationen von den URLs benutzen. Siehe dieselbe Option bei guix build.

--sort=Schlüssel

Zeilen anhand des Schlüssels sortieren, der eine der folgenden Alternativen sein muss:

self

die Größe jedes Objekts (die Vorgabe),

Abschluss

die Gesamtgröße des Abschlusses des Objekts.

--map-file=Datei

Eine grafische Darstellung des Plattenplatzverbrauchs als eine PNG-formatierte Karte in die Datei schreiben.

Für das Beispiel oben sieht die Karte so aus:

Karte der Plattenausnutzung der
Coreutils

Diese Befehlszeilenoption setzt voraus, dass Guile-Charting installiert und im Suchpfad für Guile-Module sichtbar ist. Falls nicht, schlägt guix size beim Versuch fehl, dieses Modul zu laden.

--system=System
-s System

Pakete für dieses System betrachten – z.B. für x86_64-linux.

--load-path=Verzeichnis
-L Verzeichnis

Das Verzeichnis vorne an den Suchpfad für Paketmodule anfügen (siehe Paketmodule).

Damit können Nutzer dafür sorgen, dass ihre eigenen selbstdefinierten Pakete für die Befehlszeilenwerkzeuge sichtbar sind.


Fußnoten

(24)

Genauer gesagt braucht guix size die nicht veredelte Variante des angegebenen Pakets bzw. der Pakete, wie guix build Paket --no-grafts sie liefert. Siehe Sicherheitsaktualisierungen für Informationen über Veredelungen.


Nächste: guix graph aufrufen, Vorige: guix lint aufrufen, Nach oben: Zubehör   [Inhalt][Index]