Nächste: guix graph
aufrufen, Vorige: guix lint
aufrufen, Nach oben: Zubehör [Inhalt][Index]
guix size
aufrufenDer 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 sind25, 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:
Substitutinformationen von den URLs benutzen. Siehe
dieselbe Option bei guix build
.
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.
Eine grafische Darstellung des Plattenplatzverbrauchs als eine PNG-formatierte Karte in die Datei schreiben.
Für das Beispiel oben sieht die Karte so aus:
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.
Pakete für dieses System betrachten – z.B. für
x86_64-linux
.
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.
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]