Comment ouvrir un fichier .pkg manuellement?

60

Certaines applications se présentent sous la forme de fichiers .pkg et vous demandent votre mot de passe d’administrateur, même si elles ne font que copier le fichier binaire dans / Applications.

J'aime avoir mes applications dans ~ / Applications, et je n'aime pas donner des autorisations administratives à tout ce qui ne provient pas du vaisseau mère.

Est-il possible d’ouvrir manuellement le fichier .pkg et d’extraire l’application? Il y a PackageMaker dans les outils de développement, mais cela ne semble pas le faire (cela a produit une sortie qui me laisse penser qu'il n'y a vraiment aucun script ou autre élément dans le programme d'installation, uniquement l'application).

Thilo
la source
2
Essayez unpkg .
lhf

Réponses:

67

Si vous cliquez dessus avec le bouton droit, puis cliquez sur Afficher le contenu du paquet, vous obtiendrez quelques fichiers dans un dossier Contenu. (Remarque: si vous ne voyez pas Afficher le contenu du paquet, vous devrez ouvrir Terminal.app et le lancer pkgutil --expand mystubbornpackage.pkg path/to/expand)

L'un est un fichier de nomenclature (BOM) qui se transforme en un reçu que vous pouvez utiliser pour désinstaller l'application. Ce fichier contient un manifeste de tout ce que le paquet va installer et où aller; pour lire ce fichier, utilisez la commande lsbom .

La plupart des packages (j'utilise Office 2008 ici) ont également un fichier Archive.pax.gz. Celui-ci contient tout ce que l'installateur va déplacer dans les différents dossiers comme indiqué dans le fichier BOM. La plupart des applications semblent avoir le .app dans cette archive, bien que le faire glisser vers / Les applications peuvent le laisser sans les frameworks dont il a besoin pour s'exécuter; vous devrez donc déterminer les autres fichiers dont il a besoin et où il en a besoin pour le faire fonctionner.

En outre, tous les packages peuvent consigner des messages si vous appuyez sur Cmd-L (ou choisissez l' option Journal de l' installateur dans le menu Fenêtre . au moins, c’est un peu plus d’informations si vous ne faites pas confiance au paquet.

Mathew Hall
la source
3
Je ne reçois pas "Afficher le contenu du paquet" dans le menu contextuel.
Thilo
3
@Thilo Si vous n'avez pas l'option "Afficher le contenu du paquet", le fichier pkg a été créé en tant que fichier plat. Apple a lancé le pkg de style plat il y a quelques années
nom d'utilisateur
@ nom d'utilisateur: Alors, comment puis-je les ouvrir?
Thilo
10
pkgutilFera cela. Vous pouvez le développer en pkgutil --expand file.pkg path_to_expandle convertissant en un package de style de répertoire.
Mathew Hall
@utilisateur, que signifie "plat"?
Pacerier
34

En plus des propos de Matthew Hall, vous pouvez également appuyer sur Cmd-I dans l’application Installer pour voir quels fichiers l’installateur installera et où.

CajunLuke
la source
3
+1 Avec cela, je pouvais rapidement vérifier qu’il ne contenait que le binaire de l’application, aucun autre élément à l’échelle du système.
Thilo
7

Si vous ne faites pas suffisamment confiance au programme d'installation pour accorder des autorisations administratives, alors pourquoi faire confiance au fichier binaire dans / Applications?

Pacifist vous laissera regarder dans les fichiers de paquets. Cela ne vous laisse pas forcément "sortir le binaire".

ghoppe
la source
1
Je ne fais pas confiance au binaire non plus. Je veux ne jamais lui donner d'autorisations administratives (dont il ne devrait pas avoir besoin de toute façon).
Thilo
3
Tant que vous n'exécutez pas l'application à partir d'un utilisateur disposant de privilèges d'administrateur, votre confiance sera maintenue. N'oubliez pas que même une application de niveau utilisateur peut émettre des requêtes à partir de processus de niveau administrateur. Il est donc très fastidieux d'exécuter des applications auxquelles vous ne faites pas confiance.
bmike
@ghoppe, c'est parce que les valeurs par défaut ne sont parfois pas optimisées pour les utilisateurs mais pour les créateurs d'applications. Par exemple, au lieu d’installer toute la corbeille d’installation fournie par défaut, je peux choisir de ne prendre que les fichiers essentiels. Exemple: lors du téléchargement de Mysql / Java / etc.
Pacerier
4

Sinon, vous pouvez essayer,

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

OU

installer -pkg ~/Downloads/packagename.pkg -target ~/Applications/
karmatique
la source
Cela n'a pas fonctionné malheureusement. Il a toujours insisté pour "Installer au chemin de base /" et a ensuite demandé le mot de passe administrateur.
Thilo
1
Il est possible d'installer sur une image disque créée avec quelque chose comme hdiutil create -size 200m -fs HFS+ -volname Scratch scratch.dmg, puis de copier les fichiers aux emplacements souhaités. Vous avez toujours besoin du sudo pour exécuter le programme d'installation, malheureusement.
Mjs
2
  1. Une fois que vous avez réussi à ouvrir le package, recherchez le fichier Archive.pax.gz mentionné précédemment.

  2. Créez un nouveau dossier vide sur votre bureau en le nommant comme vous le souhaitez. Je les nomme habituellement "xxxx" ou "zzzz" etc. pour faciliter la frappe plus tard.

  3. Faites glisser une copie du fichier Archive.pax.gz dans le nouveau dossier "xxxx" de votre bureau.

    Si le fichier est à l'intérieur d'un support en lecture seule, vous pouvez simplement le faire glisser dans votre dossier "xxxx" sans la touche Option pour créer une copie.

  4. Maintenant, ouvrez Terminal.app et sur la ligne de commande, accédez à votre nouveau répertoire "xxxx" et dressez la liste de son contenu pour confirmer que votre fichier Archive.pax.gz est présent:

    cd ~/Desktop/xxxx
    ls -al
    
  5. Maintenant, il y a deux commandes simples à entrer:

    gunzip -v Archive.pax.gz
    

    Gzip vous dira qu'il a remplacé "Archive.pax.gz" par "Archive.pax") Répertoriez maintenant le contenu du répertoire pour le confirmer.

    pax -r -f Archive.pax
    

    (Vous devez séparer -ret -f, comme -rfcela ne fonctionnera pas)

  6. Enfin, listez à nouveau le contenu du répertoire avec ls -al. En plus de votre fichier Archive.pax, vous verrez maintenant une hiérarchie de répertoires contenant probablement un ou plusieurs répertoires.

    Les fichiers de cette hiérarchie de répertoires vous indiqueront où le programme d'installation de OS X installerait des fichiers sur votre système, comme si votre répertoire "xxxx" était le répertoire racine "/".

  7. Vous pouvez ensuite copier manuellement ces fichiers vers leurs destinations si vous le souhaitez.

bonne étoile
la source
3
En d'autres termes cd ~/Desktop; cp Package.pkg/Contents/Archive.pax.gz .; gunzip -v Archive.pax.gz; pax -r -f Archive.pax. Vous n'avez pas besoin de tout décrire à ce niveau de détail.
Lri
6
Lri, j'ai donné autant de détails pour que les utilisateurs de tous les niveaux puissent le suivre et réussir. Certes, votre version cryptée obtiendrait les mêmes résultats. Cependant, d'autres utilisateurs qui liront cette information à l'avenir et qui ne sont peut-être pas familiarisés avec la ligne de commande risquent d'être perdus.
stargood
1

pkgutil --expand échouait pour moi avec l'erreur suivante:

Error encountered while creating .. Error 17: File exists

Mais j'ai réussi à extraire les fichiers avec à la xarplace:

xar -xvf foo.pkg

gregschlom
la source
1
cela fonctionne pour moi. mais apparemment, si vous donnez à pkgutil un répertoire de non-existence en tant que destination, l’erreur 17 disparaît.
Michael
1

Le meilleur outil pour inspecter les fichiers de package est le package suspect . Il vous permet également de copier des fichiers hors du package.

Non seulement il fournira toutes les informations dont vous avez besoin dans l'application, mais il installe également un plug-in Quick Look. Il suffit donc de sélectionner le fichier du paquet et de frapper la barre d'espace pour ouvrir une fenêtre contenant les informations les plus essentielles.

Tony Williams
la source
0

Le Unarchiver peut le faire; cela fera la même chose que, pkgutil --expandmais en utilisant le glisser-déposer. Quoi qu'il en soit, c'est un meilleur substitut à Archive Utility.app d'Apple.

Quinn Comendant
la source
0

UnArchiver a fait le tour.

Installez UnArchiver, ouvrez UnArchiver; pendant qu'il est ouvert - double-cliquez sur cet embêtantMAMP_MAMP_3.5.pkg

Suivez les étapes pour installer MAMP.

Blll
la source