Tengo un archivo pkg creado por Install Maker para Mac. Quiero reemplazar un archivo en pkg. Pero debo hacer esto en el sistema Linux, porque esto es parte del proceso de descarga. Cuando el usuario comienza a descargar el servidor de archivos debe reemplazar un archivo en pkg. Tengo una solución para descomprimir un paquete y reemplazar un archivo, pero no sé cómo volver a empacar el paquete. http://emresaglam.com/blog/1035 http://ilostmynotes.blogspot.com/2012/06/mac-os-x-pkg-bom-files-package.html¿Cómo descomprimir y empaquetar el archivo pkg?
Respuesta
Los paquetes son simplemente .xar archivos con una extensión diferente y una jerarquía de archivos especificado. Desafortunadamente, parte de esa jerarquía de archivos es un archivo cpio.gz de las instancias reales, y generalmente 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 de resumen.
Si realmente sólo tiene que editar uno de los archivos de información, eso es simple:
mkdir Foo
cd Foo
xar -xf ../Foo.pkg
# edit stuff
xar -cf ../Foo-new.pkg *
Pero si tiene que 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 se puede conseguir mkbom (y lsbom) para la mayoría de las distribuciones de Linux. (Si puede hacerlo, eso hace que las cosas sean aún más fáciles, pero no estoy seguro si eso está disponible de forma casi omnipresente).
Sí. He intentado este método antes (solo desempaquetar/empacar sin cambiar ningún archivo), pero después de instalar este paquete no pasó nada. En la consola Tengo este mensaje: posix_spawn ("/ Library/Application Support/Project1/Project1.app/Contents/MacOS/Proyecto1", ...): No existe el fichero o directorio. he investigado ese archivo de carga útil de edad tiene /./ Project1.app/... y la nueva carga útil tiene /Project1.app/... en el interior. – dream2work
Bueno, esa última parte es fácil. No sé si hace una diferencia, pero podría (¿quizás porque el Bom y la carga no coinciden?). Simplemente use ./Foo.app en lugar de Foo.app en el comando find | cpio | gzip. Editaré la respuesta. – abarnert
@abarnert: en lugar de 'cat Carga útil | gunzip -dc | cpio -i' simplemente podría usar 'tar xzvf Payload' – ccpizza
Además de lo que dijo @abarnert, hoy tuve que descubrir que la utilidad predeterminada es cpio
en Mountain Lion usa un formato de archivo diferente por defecto (no estoy seguro de cuál), incluso con la página man indicando que usaría el formato cpio/odc anterior. Por lo tanto, si alguien tropieza con el mensaje cpio read error: bad file format
al intentar instalar su/sus paquetes manipulados, asegúrese de incluir el formato en la etapa de re-pack:
find ./Foo.app | cpio -o --format odc | gzip -c > Payload
Inspirado por la respuesta de abarnert, hice una fiesta script que descomprimirá un paquete llamado MyPackage.pkg
en una subcarpeta llamada MyPackage_pkg
y luego abrirá la carpeta en Finder. Elimine la última línea si no desea el paso 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 solo desea echar un vistazo dentro del archivo pkg y ver qué hay adentro, puede probar SuspiciousPackage (aplicación gratuita), y si desea realizar un desempaquetado serio, incluida la extracción de archivos específicos, eche un vistazo a Pacifist (nagware).
@shrx He logrado descomprimir el BSD.pkg (parte del instalador de Yosemite) utilizando el comando "pbzx".
El comando "pbzx" se puede descargar desde el siguiente enlace:
Es posible que desee buscar en el tenedor de pbzx
aquí: https://github.com/NiklasRosenstein/pbzx
Le permite transmitir archivos pbzx que no son wra pip en un archivo XAR. Lo he experimentado con las recientes imágenes de disco de las herramientas de línea de comandos de XCode (por ejemplo, 10.12 XCode 8).
pbzx -n Payload | cpio -i
- 1. Descomprimir el archivo BZIP2
- 2. Cómo descomprimir un archivo javascript?
- 3. Comprimir y descomprimir archivo 7z en java
- 4. Linux glib necesita pkg-config y pkg-config necesita glib?
- 5. ¿Cómo descomprimir un archivo 7zip en Android?
- 6. Cómo descomprimir/descomprimir dentro de Emacs
- 7. descomprimir archivo .gz en el lote
- 8. Android: Cómo descomprimir un archivo zip encriptado
- 9. Cómo descomprimir un archivo zip C#
- 10. Cómo descomprimir un archivo gzip y escribirlo en un archivo descomprimido, en el iPhone
- 11. ¿cómo podemos descomprimir un archivo en el objetivo c?
- 12. comando MAC para ejecutar un archivo .pkg en el terminal
- 13. ¿Cómo descomprimir el contenido de un archivo JavaScript?
- 14. Cómo empaquetar el programa Twisted con py2exe?
- 15. Descomprimir archivo gz usando R
- 16. JavaScript: Descomprimir/inflar/descomprimir/descomprimir cadenas
- 17. Cómo empaquetar C++ con DLL y bibliotecas
- 18. descomprimir un archivo usando C#
- 19. ¿Cómo descomprimir artefactos y filtrar recursos?
- 20. ¿Comprimir y descomprimir un archivo programmatically en iphone?
- 21. Descomprimir un archivo de InputStream y devolver otro InputStream
- 22. Ejecutar archivos .pkg en Linux
- 23. Cómo comprimir y descomprimir los archivos?
- 24. ¿Cómo se relacionan los programas `ghc-pkg` y` cabal`? (Haskell)
- 25. Cómo utilizar el SDK 7z para comprimir y descomprimir un archivo
- 26. descomprimir un archivo tar.gz en R?
- 27. Cómo organizar, probar, documentar y empaquetar un proyecto de Clojure
- 28. ¿Cómo descomprimir un archivo en Ruby on Rails?
- 29. ¿Cómo debo descomprimir un archivo de datos grande en AsyncTask.doInBackground?
- 30. Cómo descomprimir un archivo TAR utilizando Apache Commons
(Para los futuros visitantes) http://gabrielrinaldi.me/how-to-install-jdk-7-on-yosemite-10-10/ podría darle una visión –
MacOS parece venir con el comando XAR . – MikeP