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

60

Einige Anwendungen liegen in .pkg-Dateien vor und fordern Sie zur Eingabe eines Administratorkennworts auf, auch wenn sie lediglich die Binärdatei nach / Applications kopieren.

Ich möchte meine Anwendungen in ~ / Applications haben, und ich möchte keine administrativen Berechtigungen für etwas erteilen, das nicht aus dem Mutterschiff stammt.

Gibt es eine Möglichkeit, wie ich die .pkg-Datei manuell öffnen und die Anwendung herausziehen kann? Es gibt PackageMaker in den Entwicklertools, aber das scheint es nicht zu tun (es hat eine Ausgabe erzeugt, die mich glauben lässt, dass es wirklich keine Skripte oder andere Teile im Installationsprogramm gibt, nur die Anwendung).

Thilo
quelle
2
Versuchen Sie es mit unpkg .
lhf

Antworten:

67

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

Eine davon ist eine Stücklistendatei (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; Verwenden Sie zum Lesen dieser Datei den Befehl lsbom .

Die meisten Pakete (ich verwende hier Office 2008) haben auch eine Datei Archive.pax.gz. Diese enthält alles, was Installer in die verschiedenen Ordner verschieben wird, wie in der Stücklistendatei angegeben. Die meisten Apps scheinen die .app in diesem Archiv zu haben, aber wenn Sie diese nach / Applications ziehen, bleibt sie möglicherweise ohne Frameworks, die ausgeführt werden müssen. Sie müssen also herausfinden, welche anderen Dateien benötigt werden und wo sie benötigt werden, damit sie funktionieren.

Darüber hinaus können alle Pakete Nachrichten protokollieren, wenn Sie Cmd-L drücken (oder die Option Installer Log im Menü Window auswählen , können Sie diese beim Generieren anzeigen. Auf diese Weise erhalten Sie möglicherweise eine Vorstellung davon, welche zusätzlichen Dinge installiert werden Zumindest sind es mehr Informationen, wenn Sie dem Paket nicht vertrauen.

Mathew Hall
quelle
3
Im Kontextmenü wird "Paketinhalt anzeigen" nicht angezeigt.
Thilo
3
@Thilo Wenn Sie die Option "Paketinhalt anzeigen" nicht erhalten, wurde die pkg-Datei als Flatfile erstellt. Apple hat vor ein paar Jahren flache Päckchen eingeführt
Benutzername
@Benutzername: Wie öffne ich diese?
Thilo
10
pkgutilwird das machen. Sie können es mit erweitern pkgutil --expand file.pkg path_to_expandund es wird in ein Paket im Verzeichnisstil konvertiert.
Mathew Hall
@username, Was bedeutet "flat" überhaupt?
Pacerier
34

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 der Installer wo installiert.

CajunLuke
quelle
3
+1. Auf diese Weise konnte ich schnell überprüfen, ob nur die Anwendungsbinärdatei vorhanden ist, kein anderes systemweites Zeug.
Thilo
7

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

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

Ghoppe
quelle
1
Ich vertraue auch der Binärdatei nicht. Ich möchte ihm niemals administrative Berechtigungen erteilen (die er sowieso nicht benötigen sollte).
Thilo
3
Solange Sie die App nicht von einem Benutzer ausführen, der über Administratorrechte verfügt, wird Ihr Vertrauen gewahrt. Vergessen Sie nicht, dass selbst eine App auf Benutzerebene Anforderungen von Prozessen auf Administratorebene stellen kann, sodass das Ausführen von Apps, denen Sie nicht wirklich vertrauen, eine Menge Arbeit bedeutet.
bmike
@ghoppe, es liegt daran, dass die Standardeinstellungen manchmal nicht für die Benutzer, sondern für die App-Ersteller optimiert sind. Anstatt beispielsweise den gesamten Installationsmüll zu installieren, der standardmäßig enthalten ist, kann ich nur die Dateien auswählen, die von wesentlicher Bedeutung sind. ZB beim Herunterladen von MySQL / Java / etc.
Pacerier
4

Alternativ können Sie versuchen,

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

ODER

installer -pkg ~/Downloads/packagename.pkg -target ~/Applications/
karmatisch
quelle
Das hat leider nicht geklappt. Es bestand immer noch auf "Installation im Basispfad /" und fragte dann nach dem Administratorkennwort.
Thilo
1
Es ist möglich, ein mit so etwas wie erstelltes Disk-Image zu installieren hdiutil create -size 200m -fs HFS+ -volname Scratch scratch.dmgund die Dateien dann an die von Ihnen bevorzugten Speicherorte zu kopieren. Du brauchst immer noch das sudo, um das Installationsprogramm auszuführen.
mjs
2
  1. Suchen Sie nach dem erfolgreichen Öffnen des Pakets 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. Normalerweise nenne ich sie "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.

    Befindet sich die Datei in einem schreibgeschützten Medium, können Sie sie ohne die Wahltaste in Ihren Ordner "xxxx" 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 Datei Archive.pax.gz vorhanden ist:

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

    gunzip -v Archive.pax.gz
    

    Gzip teilt Ihnen mit, 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 sich trennen -rund -f, wie -rfes nicht funktionieren wird)

  6. Listen Sie abschließend den Inhalt des Verzeichnisses erneut mit auf ls -al. Zusätzlich zu Ihrer Datei Archive.pax sehen Sie jetzt 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.

stargood
quelle
3
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
6
Lri, ich habe so viele Details angegeben, dass Benutzer auf jeder Ebene der Fachkenntnisse in der Lage sind, diese zu verfolgen und erfolgreich zu sein. Zugegeben, Ihre kryptische Version würde die gleichen Ergebnisse erzielen. Andere Benutzer, die dies in Zukunft lesen und mit der Befehlszeile möglicherweise nicht vertraut sind, könnten jedoch hoffnungslos verloren gehen.
Stargood
1

pkgutil --expand schlug bei mir mit folgendem fehler fehl:

Error encountered while creating .. Error 17: File exists

Aber ich habe es xarstattdessen geschafft, die Dateien mit zu extrahieren :

xar -xvf foo.pkg

gregschlom
quelle
1
das funktioniert bei mir aber anscheinend, wenn du pkgutil ein nicht existierendes Verzeichnis als Ziel gibst, das den Fehler 17 verschwinden lässt.
Michael
1

Das beste Tool zum Überprüfen von Paketdateien ist Suspicious Package . Sie können damit auch Dateien aus dem Paket kopieren.

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

Tony Williams
quelle
0

Der Unarchiver kann dies tun; es wird dasselbe tun wie pkgutil --expandmit Drag & Drop. Es ist sowieso ein besserer Ersatz für Apples Archive Utility.app.

Quinn Comendant
quelle
0

UnArchiver hat es geschafft.

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

Befolgen Sie die Schritte, um MAMP zu installieren.

Blll
quelle