Wie kann ich eine .pkg-Datei manuell öffnen?

Einige Anwendungen kommen in .pkg-Dateien und fragen nach Ihrem Administrator-Passwort, selbst wenn sie nur die Binärdatei nach /Applications kopieren.

Ich mag es, meine Anwendungen in ~/Applications zu haben, und ich mag es nicht, administrative Berechtigungen für irgendetwas zu erteilen, das nicht vom Mutterschiff stammt.

Gibt es eine Möglichkeit, die .pkg-Datei manuell zu öffnen und die Anwendung herauszuziehen? Es gibt PackageMaker in den Developer Tools, aber das scheint es nicht zu tun (es hat einige Ausgaben produziert, die mich denken lassen, dass es wirklich keine Skripte oder andere Teile im Installer gibt, nur die Anwendung).

Versuchen Sie es mit unpkg .

Antworten (9)

Wenn Sie mit der rechten Maustaste darauf klicken und auf Paketinhalt anzeigen klicken, erhalten Sie einige Dateien in einem Inhaltsordner. (Hinweis: Wenn Sie Paketinhalt anzeigen nicht sehen , müssen Sie Terminal.app öffnen und ausführen pkgutil --expand mystubbornpackage.pkg path/to/expand)

Eine davon ist eine BOM-Datei (Stückliste), die in eine Quittung umgewandelt wird, mit der Sie die App deinstallieren können. Diese Datei enthält ein Manifest von allem, was das Paket installieren wird, und wohin; Um diese Datei zu lesen, verwenden Sie den Befehl lsbom .

Die meisten Pakete (ich verwende hier Office 2008) haben auch eine Archive.pax.gz-Datei, diese enthält alles, was das Installationsprogramm in die verschiedenen Ordner verschiebt, wie in der BOM-Datei angegeben. Die meisten Apps scheinen die .app-Datei in diesem Archiv zu haben, obwohl das Ziehen nach /Applications sie möglicherweise ohne Frameworks zurücklässt, die sie ausführen muss; Sie müssen also herausfinden, welche anderen Dateien es benötigt und wo es sie benötigt, damit es funktioniert.

Darüber hinaus können alle Pakete Nachrichten protokollieren, wenn Sie Cmd-L drücken (oder die Option Installationsprotokoll aus dem Menü Fenster wählen ), können Sie sie anzeigen, während sie generiert werden. Dies gibt Ihnen möglicherweise eine Vorstellung davon, welche zusätzlichen Dinge installiert werden Zumindest sind es einige weitere Informationen, wenn Sie dem Paket nicht vertrauen.

Ich bekomme "Paketinhalt anzeigen" nicht im Rechtsklickmenü.
@Thilo Wenn Sie die Option "Paketinhalt anzeigen" nicht erhalten, wurde die pkg-Datei als Flatfile erstellt. Apple hat vor ein paar Jahren Flat-Style-Pakete eingeführt
@Benutzername: Wie öffne ich diese?
pkgutilwird das machen. Sie können es mit erweitern pkgutil --expand file.pkg path_to_expandund es wird in ein Paket im Verzeichnisstil konvertiert.
@Benutzername, was bedeutet "flach" überhaupt?
@MathewHall, Zeigen pkgutil, unpkg, SuspiciousPackage und Pacifist alle dieselbe Ausgabe?
Verwirrenderweise scheinen "flache" pkg-Dateien oft "nicht flache" pkg-Dateien zu enthalten.
Hinweis: --expand-fullZum Extrahieren der „Payload“-Datei verwenden, falls vorhanden stackoverflow.com/questions/41166805/…

Zusätzlich zu dem, was Matthew Hall gesagt hat, können Sie auch Cmd-I in der Installer-App drücken, um zu sehen, welche Dateien das Installationsprogramm wo installieren wird.

+1. Damit konnte ich schnell überprüfen, ob dort nur die Anwendungsbinärdatei enthalten ist, keine anderen systemweiten Dinge.

Wenn Sie dem Installationsprogramm nicht genug vertrauen, um Administratorberechtigungen für die Installation zu erteilen, warum vertrauen Sie dann der Binärdatei in /Applications?

Pacifist lässt Sie in Paketdateien suchen. Dadurch können Sie nicht unbedingt "die Binärdatei herausziehen".

Ich traue der Binärdatei auch nicht. Ich möchte ihm niemals Administratorrechte erteilen (die er sowieso nicht benötigen sollte).
Solange Sie die App nicht von einem Benutzer mit Administratorrechten ausführen, bleibt Ihr Vertrauen erhalten. Vergessen Sie nicht, dass sogar eine App auf Benutzerebene Anfragen von Prozessen auf Administratorebene stellen kann, sodass es eine Menge Arbeit ist, Apps auszuführen, denen Sie nicht wirklich vertrauen.
@ghoppe, Das liegt daran, dass Standardeinstellungen manchmal nicht für die Benutzer, sondern für die App-Ersteller optimiert sind. Anstatt den ganzen standardmäßig mitgelieferten Installationsmüll zu installieren, kann ich zB auswählen, nur die wesentlichen Dateien zu nehmen. ZB beim Herunterladen von Mysql / Java / etc.

pkgutil --expandschlug bei mir mit folgendem Fehler fehl:

Error encountered while creating .. Error 17: File exists

xarAber ich habe es geschafft, die Dateien stattdessen zu extrahieren mit :

xar -xvf foo.pkg

das funktioniert bei mir. aber anscheinend, wenn Sie pkgutil ein nicht vorhandenes Verzeichnis als Ziel angeben, verschwindet der Fehler 17.
Wohin extrahiert es es aber?
Aktuelle Richtung @CodyBugstein

Alternativ können Sie versuchen,

sudo installer -pkg ~/Downloads/packagename.pkg -target ~/Applications/

ODER

installer -pkg ~/Downloads/packagename.pkg -target ~/Applications/
Das hat leider nicht funktioniert. Es bestand immer noch auf "Installieren unter Basispfad /" und fragte dann nach dem Admin-Passwort.
Es ist möglich, auf ein Disk-Image zu installieren, das mit etwas wie erstellt wurde, hdiutil create -size 200m -fs HFS+ -volname Scratch scratch.dmgund die Dateien dann an die von Ihnen bevorzugten Speicherorte zu kopieren. Sie benötigen leider immer noch das sudo, um das Installationsprogramm auszuführen.
Ich bekomme Fehlerinstaller: Error - This version of OS X 10.11 cannot be installed on this computer.
  1. Nachdem Sie das Paket erfolgreich geöffnet haben, suchen Sie nach der zuvor erwähnten Datei Archive.pax.gz.

  2. Erstellen Sie einen neuen leeren Ordner auf Ihrem Desktop und benennen Sie ihn nach Ihren Wünschen. Ich nenne sie normalerweise "xxxx" oder "zzzz" usw., um das spätere Tippen zu erleichtern.

  3. Ziehen Sie bei gedrückter Wahltaste eine Kopie der Datei Archive.pax.gz in den neuen Ordner „xxxx“ auf Ihrem Desktop.

    Wenn sich die Datei in einem schreibgeschützten Medium befindet, können Sie sie einfach ohne die Wahltaste in Ihren „xxxx“-Ordner ziehen, um eine Kopie zu erstellen.

  4. Öffnen Sie nun Terminal.app und navigieren Sie in der Befehlszeile zu Ihrem neuen „xxxx“-Verzeichnis und listen Sie den Inhalt des Verzeichnisses auf, um zu bestätigen, dass Ihre Archive.pax.gz-Datei dort vorhanden ist:

    cd ~/Desktop/xxxx
    ls -al
    
  5. Jetzt müssen zwei einfache Befehle eingegeben werden:

    gunzip -v Archive.pax.gz
    

    Gzip wird Ihnen mitteilen, dass es „Archive.pax.gz“ durch „Archive.pax“ ersetzt hat. Listen Sie nun den Inhalt des Verzeichnisses erneut auf, um dies zu bestätigen.

    pax -r -f Archive.pax
    

    (Sie müssen -rund trennen -f, da -rfdies nicht funktioniert)

  6. Abschließend listen Sie den Inhalt des Verzeichnisses noch einmal mit auf ls -al. Zusätzlich zu Ihrer Archive.pax-Datei sehen Sie nun eine Verzeichnishierarchie, die wahrscheinlich ein oder mehrere Verzeichnisse enthält.

    Die Dateien in dieser Verzeichnishierarchie veranschaulichen Ihnen, wo das OS X-Installationsprogramm Dateien auf Ihrem System installieren würde, als ob Ihr „xxxx“-Verzeichnis das Stammverzeichnis „/“ wäre.

  7. Sie können diese Dateien dann manuell an ihre Ziele kopieren, wenn Sie dies wünschen.

Mit anderen Worten cd ~/Desktop; cp Package.pkg/Contents/Archive.pax.gz .; gunzip -v Archive.pax.gz; pax -r -f Archive.pax. Sie müssen nicht alles auf dieser Detailebene beschreiben.
Lri, ich habe diese Menge an Details angegeben, damit Benutzer aller Fachkenntnisse dem folgen und erfolgreich sein können. Zugegeben, Ihre kryptische Version würde die gleichen Ergebnisse erzielen. Andere Benutzer, die dies in Zukunft lesen und möglicherweise nicht mit der Befehlszeile vertraut sind, könnten jedoch hoffnungslos verloren sein.

Das beste Tool zum Untersuchen von Paketdateien ist Suspicious Package . Es erlaubt Ihnen auch, Dateien aus dem Paket zu kopieren.

Es bietet nicht nur alle Informationen, die Sie in der App benötigen, sondern installiert auch ein Quick Look-Plug-in, sodass durch einfaches Auswählen der Paketdatei und Drücken der Leertaste ein Fenster mit den wichtigsten Informationen geöffnet wird.

Der Unarchiver kann dies tun; es wird das gleiche tun, pkgutil --expandaber Drag-and-Drop verwenden. Es ist sowieso ein besserer Ersatz für Apples Archive Utility.app.

UnArchiver hat es geschafft.

UnArchiver installieren, UnArchiver öffnen; während es geöffnet ist - doppelklicken Sie auf das lästigeMAMP_MAMP_3.5.pkg

Befolgen Sie die Schritte zum Installieren von MAMP.