Saltar al contenido

¿Cómo desempaquetar y empaquetar el archivo pkg?

Solución:

Los paquetes son simplemente archivos .xar con una extensión diferente y una jerarquía de archivos especificada. Desafortunadamente, parte de esa jerarquía de archivos es un archivo cpio.gz de los archivos instalables reales y, por lo general, eso es lo que desea editar. Y también hay un archivo Bom que incluye información sobre los archivos dentro de ese archivo cpio y un archivo PackageInfo que incluye información resumida.

Si realmente solo necesita editar uno de los archivos de información, es simple:

mkdir Foo
cd Foo
xar -xf ../Foo.pkg
# edit stuff
xar -cf ../Foo-new.pkg *

Pero si necesita editar los archivos instalables:

mkdir Foo
cd Foo
xar -xf ../Foo.pkg
cd foo.pkg
cat Payload | gunzip -dc |cpio -i
# edit Foo.app/*
rm Payload
find ./Foo.app | cpio -o | gzip -c > Payload
mkbom Foo.app Bom # or edit Bom
# edit PackageInfo
rm -rf Foo.app
cd ..
xar -cf ../Foo-new.pkg

Creo que puede obtener mkbom (y lsbom) para la mayoría de las distribuciones de Linux. (Si puede obtener lo mismo, eso hace las cosas aún más fáciles, pero no estoy seguro de que esté disponible de manera tan ubicua).

Aquí hay un script bash inspirado en la respuesta de abarnert que descomprimirá un paquete llamado MyPackage.pkg en una subcarpeta llamada MyPackage_pkg y luego abra la carpeta en Finder.

    #!/usr/bin/env bash
    filename="$*"
    dirname="${filename/./_}"
    pkgutil --expand "$filename" "$dirname"
    cd "$dirname"
    tar xvf Payload
    open .

Uso:

    pkg-upack.sh MyPackage.pkg

Advertencia: Esto no funcionará en todos los casos y fallará con ciertos archivos, por ejemplo, los PKG dentro del instalador del sistema OSX. Si desea echar un vistazo dentro del archivo pkg y ver qué hay dentro, puede probar SuspiciousPackage (aplicación gratuita), y si necesita más opciones, como descomprimir selectivamente archivos específicos, eche un vistazo a Pacifist (nagware).

Además de lo que dijo @abarnert, hoy tuve que descubrir que el valor predeterminado cpio La utilidad en Mountain Lion usa un formato de archivo diferente por defecto (no estoy seguro de cuál), incluso con la página de manual indicando que usaría el antiguo formato cpio / odc. Entonces, si alguien se topa con el cpio read error: bad file format mensaje mientras intenta instalar sus paquetes manipulados, asegúrese de incluir el formato en el paso de volver a empaquetar:

find ./Foo.app | cpio -o --format odc | gzip -c > Payload
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *