Welches Format hat eine .xip-Datei?

Da Xcode 8 Beta zum Download verfügbar ist, sehe ich, dass es mit einer .xipErweiterung Xcode_8_beta.xip.

Was ist das .xip-Format? Was ist der Unterschied zum vorherigen .dmg-Format?

Antworten (5)

Laut xipHandbuchseite:

Eine XIP-Datei ist ein Analogon zu zip(1), ermöglicht jedoch das Anbringen und Verifizieren einer digitalen Signatur auf dem empfangenden System, bevor das Archiv erweitert wird. Wenn eine XIP-Datei geöffnet wird (durch Doppelklicken), wird Archive Utility sie automatisch erweitern (jedoch nur, wenn die digitale Signatur intakt ist).

Im Wesentlichen ist eine .xipDatei nur eine Datei .zipmit einer Signatur, um zu bestätigen, dass sich die Datei nicht geändert hat, seit ihr Ersteller sie gespeichert hat. Dies schützt sowohl vor Schäden durch einen Festplattenfehler als auch vor einer Manipulation der Datei durch Dritte.

Könnte ein Angreifer das Archiv nicht einfach neu signieren, es sei denn, es gibt eine Art Zertifizierungsstelle für diese Dateien?

Das .xipDateiformat enthält ein Archiv ( xarenthält ein gzipArchiv und Metadaten) und eine Signatur des Archivs.

Um eine Datei zu decodieren .xip, verwenden Sie die folgenden Befehle:

pkgutil --check-signature <xip-file>
xar -xf <xip-file>
tar -zxvf <xar-file>

Sehen Sie sich die folgenden Links an, in denen Entwickler dieses Format und seine Auswirkungen diskutieren:

Nicht für den öffentlichen Gebrauch

Apple hat sich inzwischen xipaus der öffentlichen Nutzung zurückgezogen. Das Format wurde für die exklusive Verwendung durch Apple in der Zukunft reserviert, siehe TN2206 :

Wichtig: Ab macOS Sierra werden nur von Apple signierte XIP-Archive expandiert. Entwickler, die bisher XIP-Archive verwendet haben, müssen auf signierte Installationspakete oder Disk-Images umsteigen.

Das hat bei mir für Xcode_8_GM_seed.xip nicht funktioniert. Nachdem ich xar verwendet hatte, blieb mir eine pbzx-Datei anstelle eines gzip-Archivs.
Apple wurde xipaus der öffentlichen Nutzung entfernt. Das Format wurde für die zukünftige exklusive Verwendung durch Apple reserviert – siehe github.com/sparkle-project/Sparkle/issues/…
xar -xf Xcode_8.xip hat unter 10.11.4 keine Dateien erzeugt
Wo sind die Befehlsergebnisdateien gespeichert, Mr. Graham?
Wenn die xiperweitert werden kann, befinden sich die Dateien im selben Ordner wie das Original. Laut @AntonTropashko werden wahrscheinlich keine Dateien erstellt.
Es sieht sicher so aus, als ob XIP-Dateien je nach Erstellungsdatum variieren. Ich konnte eine „Inhalts“- und „Metadaten“-Datei extrahieren, wobei der Inhalt scheinbar Rohdaten enthält, die nicht xz-komprimiert wurden.
Meine erste Vermutung wäre, dass der Inhalt der MetadataDatei die für die Rohdaten verwendete Komprimierung angibt. Da Apple das Format für den privaten Gebrauch neu angeeignet hat, können sie es ohne öffentliche Dokumentation ändern.
Es ist SO langsam, es zu erweitern, und anscheinend haben wir keine Alternative, als Apple-Software zu verwenden, aber ja, wir müssen eine andere proprietäre Sache von Apple akzeptieren.

Meines Wissens nach ist xip ein xar-Derivat, das die gzip-Komprimierung verwendet, mit einer toc-Header-XML, die Prüfsumme, Zeitstempel, Zertifikate, Benutzer-ID/Name, Erstellungs-/Änderungs-/Zugriffsdatum und -zeit usw. enthält.

Die Dienstprogramme Unarchiver und Befehlszeile (xar, tar) funktionierten bei mir unter MacOS 10.12.6 nicht. Was funktionierte, war ein Rechtsklick auf die .xip-Datei und die Auswahl von „Archive Utility“, es konnte die .xip-Datei erfolgreich erweitern.

Geben Sie hier die Bildbeschreibung ein

Konnten Sie xcode mit der .xip-Datei installieren?
Ja, ein Doppelklick auf die .xip-Datei extrahiert die XCode-Anwendung. Es kopiert es nicht in den Anwendungsordner, also müssen Sie diesen Teil selbst erledigen.
Wenn ich einen Xcode 10 habe und nach dem Klicken auf .xip Xcode 11, wird der vorherige ersetzt? Und sollte ich es in den Anwendungsordner kopieren?
@OliverD Es ist möglich, Versionen von XCode nebeneinander zu installieren, falls Sie sowohl XCode 10 als auch XCode 11 ausführen möchten. Geben Sie ihnen einfach unterschiedliche Namen in Ihrem Anwendungsordner. Andernfalls würde ich wahrscheinlich empfehlen, wenn Sie XCode 10 nicht mehr benötigen, die alte XCode.app in den Papierkorb zu ziehen.
@mbonness Nun, ich brauche kein Xcode 10, also sollte ich den XCode 10 ziehen, bevor ich Xcode 11 einrichte, oder egal?
@OliverD Ich denke nicht, dass es wichtig ist. Wenn Sie genug Festplatte haben, würde ich wahrscheinlich den alten XCode behalten, bis Sie die neue Version installiert und überprüft haben, dass sie für Sie funktioniert, und dann den alten loswerden, um zu vermeiden, dass er versehentlich gestartet wird.
Ich habe die alte Version gelöscht und dann eine neue installiert, aber es sagt mir, dass ich nicht genug Speicherplatz habe, also können Sie dies überprüfen : stackoverflow.com/questions/61698432/…

Zum späteren Nachschlagen der Shell-Befehl

xip --expand /path/to/Xcode_x.y.xip

funktioniert auch und extrahiert Xcode in das aktuelle Verzeichnis der Shell, also cd /Applications(oder wo auch immer) zuerst.

Ich empfehle außerdem dringend, alle vorhandenen Kopien von Xcode.app (oder Xcode-beta.app ) vom Zielspeicherort zu entfernen oder umzubenennen, bevor Sie diesen Befehl verwenden†.

Soweit ich weiß, hat dies funktioniert, solange Apple Xcode im .xip-Format verteilt hat, und es funktionierte gerade am 10.15.6, um Xcode_11.7.xip zu erweitern, das von Apples Entwicklerseite heruntergeladen wurde .

† Obwohl ich das Überschreiben mit nicht persönlich getestet xiphabe, könnte es, wenn ähnliche Befehlszeilen-Tools Anzeichen dafür sind, möglicherweise ein Durcheinander hinterlassen, wenn es zum Überschreiben eines vorhandenen Verzeichnisses mit demselben Namen verwendet wird, wodurch vorhandene Dateien zurückbleiben, die nicht im vorhanden sind Archiv entpackt wird, oder schlimmer.