¿Cómo puedo abrir un archivo .pkg manualmente?

60

Algunas aplicaciones vienen en archivos .pkg y solicitan su contraseña de administrador, incluso si todo lo que hacen es copiar el binario a / Aplicaciones.

Me gusta tener mis aplicaciones en ~ / Aplicaciones, y no me gusta dar permisos administrativos a nada que no sea de la nave nodriza.

¿Hay alguna manera de que pueda abrir manualmente el archivo .pkg y extraer la aplicación? Hay PackageMaker en las Herramientas de desarrollo, pero eso no parece hacerlo (produjo algunos resultados que me hacen pensar que realmente no hay scripts u otras piezas en el instalador, solo la aplicación).

Thilo
fuente
2
Intenta desbloquear .
lhf

Respuestas:

67

Si hace clic con el botón derecho y hace clic en Mostrar contenido del paquete , obtendrá algunos archivos en una carpeta Contenido. (Nota: si no ve Mostrar contenido del paquete , deberá abrir Terminal.app y ejecutar pkgutil --expand mystubbornpackage.pkg path/to/expand)

Uno es un archivo BOM (lista de materiales) que se convierte en un recibo que puede usar para desinstalar la aplicación. Este archivo contiene un manifiesto de todo lo que el paquete instalará y dónde; para leer este archivo, use el comando lsbom .

La mayoría de los paquetes (estoy usando Office 2008 aquí) también tienen un archivo Archive.pax.gz, que contiene todo lo que el instalador moverá a las diferentes carpetas como se indica en el archivo BOM. La mayoría de las aplicaciones parecen tener el .app en este archivo, aunque arrastrarlo a / Aplicaciones podría dejarlo sin los marcos que necesita ejecutar; así que tendrá que averiguar qué otros archivos necesita y dónde los necesita para que funcione.

Además, todos los paquetes pueden registrar mensajes, si presiona Cmd-L (o elige la opción Registro del instalador en el menú Ventana , puede verlos a medida que se generan. Esto podría darle una idea de qué cosas adicionales está instalando, en el al menos es algo más de información si no confías en el paquete.

Mathew Hall
fuente
3
No aparece "Mostrar contenido del paquete" en el menú contextual.
Thilo
3
@Thilo Si no tiene la opción de "Mostrar contenido del paquete", el archivo pkg se creó como un archivo plano. Apple presentó los paquetes de estilo plano hace un par de años
nombre de usuario
@username: Entonces, ¿cómo abro esos?
Thilo
10
pkgutillo haré. Puede expandirlo usando pkgutil --expand file.pkg path_to_expandy lo convertirá en un paquete de estilo de directorio.
Mathew Hall
@username, ¿Qué significa "plano"?
Pacerier
34

Además de lo que dijo Matthew Hall, también puede presionar Cmd-I en la aplicación Instalador para ver qué archivos instalará el instalador y dónde.

CajunLuke
fuente
3
+1. Con esto pude verificar rápidamente que solo existe el binario de la aplicación, no hay otras cosas en todo el sistema.
Thilo
7

Si no confía en el instalador lo suficiente como para otorgar permisos administrativos para instalar, ¿por qué confía en el binario en / Aplicaciones?

Pacifist te permitirá buscar en archivos de paquetes. Esto no necesariamente te permite "extraer el binario".

ghoppe
fuente
1
Tampoco confío en el binario. Nunca quiero darle permisos administrativos (que de todos modos no debería necesitar).
Thilo
3
Siempre que no ejecute la aplicación desde ningún usuario que tenga privilegios de administrador, se mantendrá su confianza. No olvide que incluso una aplicación de nivel de usuario puede realizar solicitudes de procesos de nivel de administrador, por lo que es mucho trabajo ejecutar aplicaciones en las que realmente no confía.
bmike
@ghoppe, es porque los valores predeterminados a veces no están optimizados para los usuarios sino para los creadores de la aplicación. Por ejemplo, en lugar de instalar toda la basura de instalación que viene por defecto, puedo seleccionar tomar solo los archivos que son esenciales. Por ejemplo, al descargar Mysql / Java / etc.
Pacerier
4

Alternativamente puedes intentar,

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

O

installer -pkg ~/Downloads/packagename.pkg -target ~/Applications/
karmático
fuente
Eso no funcionó desafortunadamente. Todavía insistió en "Instalar en la ruta base /" y luego solicitó la contraseña de administrador.
Thilo
1
Es posible instalar en una imagen de disco creada con algo parecido hdiutil create -size 200m -fs HFS+ -volname Scratch scratch.dmgy luego copiar los archivos a las ubicaciones que prefiera. Aún necesita el sudo para ejecutar el instalador desafortunadamente.
mjs
2
  1. Después de abrir el paquete, busque el archivo Archive.pax.gz que se mencionó anteriormente.

  2. Cree una nueva carpeta vacía en su escritorio y asígnele el nombre que desee. Por lo general, los llamo "xxxx" o "zzzz", etc. para facilitar la escritura más tarde.

  3. Opción-arrastre una copia del archivo Archive.pax.gz a esa nueva carpeta "xxxx" en su escritorio.

    Si el archivo está dentro de medios de solo lectura, puede arrastrarlo a su carpeta "xxxx" sin la tecla Opción para crear una copia.

  4. Ahora abra Terminal.app y en la línea de comando navegue a su nuevo directorio "xxxx" y enumere el contenido del directorio para confirmar que su archivo Archive.pax.gz está allí:

    cd ~/Desktop/xxxx
    ls -al
    
  5. Ahora hay dos comandos simples para ingresar:

    gunzip -v Archive.pax.gz
    

    Gzip le dirá que ha reemplazado "Archive.pax.gz" con "Archive.pax"). Ahora enumere nuevamente el contenido del directorio para confirmar esto.

    pax -r -f Archive.pax
    

    (Debe separar -ry -f, como -rfno funcionará)

  6. Finalmente, enumere nuevamente el contenido del directorio con ls -al. Además de su archivo Archive.pax, ahora verá una jerarquía de directorios que probablemente contenga uno o más directorios.

    Los archivos en esa jerarquía de directorios le ilustrarán dónde el instalador de OS X instalaría los archivos en su sistema como si su directorio "xxxx" fuera el directorio raíz "/".

  7. Luego puede copiar manualmente esos archivos a sus destinos si lo desea.

stargood
fuente
3
En otras palabras cd ~/Desktop; cp Package.pkg/Contents/Archive.pax.gz .; gunzip -v Archive.pax.gz; pax -r -f Archive.pax. No necesita describir todo con ese nivel de detalle.
Lri
66
Lri, di esa cantidad de detalles para que los usuarios de cualquier nivel de experiencia puedan seguirlo y tener éxito. De acuerdo, su versión críptica lograría los mismos resultados. Sin embargo, otros usuarios que lean esto en el futuro y que no estén familiarizados con la línea de comando podrían perderse irremediablemente.
stargood
1

pkgutil --expand me estaba fallando con el siguiente error:

Error encountered while creating .. Error 17: File exists

Pero logré extraer los archivos con xar:

xar -xvf foo.pkg

gregschlom
fuente
1
esto funciona para mi pero aparentemente, si le da a pkgutil un directorio de no existencia como destino que hace que el error 17 desaparezca.
Michael
1

La mejor herramienta para inspeccionar archivos de paquetes es Paquete sospechoso . También le permite copiar archivos fuera del paquete.

No solo proporcionará toda la información que necesita en la aplicación, sino que también instalará un complemento Quick Look, de modo que simplemente seleccionando el archivo del paquete y presionando la barra espaciadora se abre una ventana con la información más esencial.

Tony Williams
fuente
0

El Unarchiver puede hacer esto; hará lo mismo que pkgutil --expandusar arrastrar y soltar. De todos modos, es un mejor reemplazo para Archive Utility.app de Apple.

Quinn Commandado
fuente
0

UnArchiver hizo el truco.

Instale UnArchiver, abra UnArchiver; mientras está abierto, haga doble clic en ese molestoMAMP_MAMP_3.5.pkg

Siga los pasos para instalar MAMP.

Blll
fuente