Come posso aprire manualmente un file .pkg?


60

Alcune applicazioni sono disponibili in file .pkg e richiedono la password dell'amministratore, anche se tutto ciò che fanno è copiare il file binario in / Applicazioni.

Mi piace avere le mie applicazioni in ~ / Applicazioni e non mi piace concedere autorizzazioni amministrative a tutto ciò che non proviene dalla nave madre.

È possibile aprire manualmente il file .pkg ed estrarre l'applicazione? C'è PackageMaker negli Strumenti di sviluppo, ma non sembra farlo (ha prodotto un output che mi fa pensare che non ci siano davvero script o altri pezzi nell'installer, solo l'applicazione).


2
Prova unpkg .
LHF

Risposte:


67

Se fai clic con il pulsante destro del mouse e fai clic su Mostra contenuto pacchetto , otterrai alcuni file in una cartella Contenuto. (Nota: se non vedi Mostra contenuto pacchetto sarà necessario aprire Terminal.app ed eseguire pkgutil --expand mystubbornpackage.pkg path/to/expand)

Uno è un file DBA (distinta materiali) che viene trasformato in una ricevuta che è possibile utilizzare per disinstallare l'app. Questo file contiene un manifest di tutto ciò che il pacchetto installerà e dove; per leggere questo file, utilizzare il comando lsbom .

La maggior parte dei pacchetti (sto usando Office 2008 qui) hanno anche un file Archive.pax.gz, che contiene tutto ciò che l'Installer sposterà nelle varie cartelle come indicato nel file BOM. La maggior parte delle app sembra avere .app in questo archivio, anche se trascinandolo su / Applicazioni potrebbe lasciarlo senza framework che deve essere eseguito; quindi dovrai capire di quali altri file ha bisogno e dove ne ha bisogno per farlo funzionare.

Inoltre, tutti i pacchetti possono registrare i messaggi, se si preme Cmd-L (o si sceglie l' opzione Registro di installazione dal menu Finestra , è possibile visualizzarli mentre vengono generati. Questo potrebbe darti un'idea di quali cose extra sta installando, in per lo meno sono alcune ulteriori informazioni se non si fida del pacchetto.


3
Non visualizzo "Mostra contenuto pacchetto" nel menu di scelta rapida.
Thilo,

3
@Thilo Se non si ottiene l'opzione "Mostra contenuto pacchetto", il file pkg è stato creato come file flat. Apple ha introdotto pkg in stile piatto un paio di anni fa
nome utente

@nomeutente: quindi come posso aprirli?
Thilo,

10
pkgutillo farà. Puoi espanderlo usando pkgutil --expand file.pkg path_to_expande lo convertirà in un pacchetto stile directory.
Mathew Hall,

@nomeutente, cosa significa anche "flat"?
Pacerier,

34

Oltre a ciò che ha detto Matthew Hall, puoi anche premere Cmd-I nell'app di installazione per vedere quali file installerà l'installazione e dove.


3
+1. Con questo ho potuto verificare rapidamente che c'era solo il binario dell'applicazione lì dentro, nessun altro materiale a livello di sistema.
Thilo,

7

Se non ti fidi abbastanza dell'installer da dare le autorizzazioni amministrative per l'installazione, allora perché ti fidi del binario in / Applicazioni?

Pacifist ti consentirà di consultare i file del pacchetto. Questo non ti consente necessariamente di "estrarre il binario".


1
Non mi fido neanche del binario. Non voglio mai concedergli le autorizzazioni amministrative (che non dovrebbero comunque essere necessarie).
Thilo,

3
Finché non esegui l'app da nessun utente con privilegi di amministratore, la tua fiducia verrà mantenuta. Non dimenticare che anche un'app a livello di utente può fare richieste da processi a livello di amministratore, quindi è molto difficile eseguire app di cui non ti fidi.
bmike

@ghoppe, È perché le impostazioni predefinite a volte non sono ottimizzate per gli utenti ma i creatori di app. Ad esempio, invece di installare tutta la spazzatura di installazione fornita per impostazione predefinita, posso selezionare di prendere solo i file che sono essenziali. Ad esempio, quando si scarica Mysql / Java / ecc.
Pacerier,

4

In alternativa puoi provare,

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

O

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

Purtroppo non ha funzionato. Insisteva ancora su "Installazione nel percorso di base /" e quindi chiedeva la password dell'amministratore.
Thilo,

1
È possibile installare su un'immagine del disco creata con qualcosa di simile hdiutil create -size 200m -fs HFS+ -volname Scratch scratch.dmge quindi copiare i file nelle posizioni preferite. Sfortunatamente hai ancora bisogno del sudo per eseguire il programma di installazione.
mjs

2
  1. Dopo che si è riusciti ad aprire il pacchetto, cercare il file Archive.pax.gz menzionato in precedenza.

  2. Crea una nuova cartella vuota sul desktop nominandola come preferisci. Di solito li chiamo "xxxx" o "zzzz" ecc. Per facilitare la digitazione in seguito.

  3. Opzione-trascina una copia del file Archive.pax.gz nella nuova cartella "xxxx" sul desktop.

    Se il file si trova all'interno del supporto di sola lettura, è sufficiente trascinarlo nella cartella "xxxx" senza il tasto Opzione per creare una copia.

  4. Ora apri Terminal.app e dalla riga di comando vai alla nuova directory "xxxx" ed elenca i contenuti della directory per confermare che il tuo file Archive.pax.gz è lì:

    cd ~/Desktop/xxxx
    ls -al
    
  5. Ora ci sono due semplici comandi da inserire:

    gunzip -v Archive.pax.gz
    

    Gzip ti dirà che ha sostituito "Archive.pax.gz" con "Archive.pax") Ora elenca nuovamente il contenuto della directory per confermare.

    pax -r -f Archive.pax
    

    (È necessario separare -re -f, poiché -rfnon funzionerà)

  6. Infine, elenca nuovamente il contenuto della directory con ls -al. Oltre al file Archive.pax ora vedrai una gerarchia di directory che probabilmente contiene una o più directory.

    I file in quella gerarchia di directory ti illustreranno dove il programma di installazione di OS X installerebbe i file sul tuo sistema come se la tua directory "xxxx" fosse la directory principale "/".

  7. Se lo desideri, puoi copiare manualmente quei file nelle loro destinazioni.


3
In altre parole cd ~/Desktop; cp Package.pkg/Contents/Archive.pax.gz .; gunzip -v Archive.pax.gz; pax -r -f Archive.pax. Non è necessario descrivere tutto a quel livello di dettaglio.
Lri,

6
Lri, ho fornito quella quantità di dettagli in modo che gli utenti di qualsiasi livello di competenza possano seguirli e avere successo. Certo, la tua versione criptica otterrebbe gli stessi risultati. Tuttavia, altri utenti che leggeranno questo documento in futuro che potrebbero non avere familiarità con la riga di comando potrebbero andare persi irrimediabilmente.
stargood

1

pkgutil --expand stava fallendo per me con il seguente errore:

Error encountered while creating .. Error 17: File exists

Ma sono riuscito a estrarre i file con xarinvece:

xar -xvf foo.pkg


1
questo funziona per me. ma apparentemente, se dai a pkgutil una directory di non esistenza come destinazione che fa sparire l'errore 17.
Michael,

1

Lo strumento migliore per l'ispezione dei file del pacchetto è il pacchetto sospetto . Inoltre, consente di copiare i file dal pacchetto.

Non solo fornirà tutte le informazioni necessarie nell'app, ma installerà anche un plug-in Quick Look, quindi basta selezionare il file del pacchetto e premere la barra spaziatrice per aprire una finestra con le informazioni più essenziali.


0

L' Unarchiver può farlo; farà lo stesso pkgutil --expandma usando il trascinamento della selezione. È comunque un sostituto migliore per Archive Utility.app di Apple.


0

UnArchiver ha fatto il trucco.

Installa UnArchiver, apri UnArchiver; mentre è aperto - fai doppio clic su quel fastidiosoMAMP_MAMP_3.5.pkg

Seguire i passaggi per installare MAMP.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.