2 votos

Organización de archivos .dmg

Hoy necesitaba ver el contenido de los SDK de OS X, que se publican como .dmg.

Para mi sorpresa, descubrí que la estructura es la siguiente :

  • El .dmg contiene un archivo .pkg oculto
  • Los archivos .pkg contienen un archivo Payload, que es un .gz o un .bz2, depende
  • El .gz contiene un único archivo comprimido en cpio
  • Este archivo cpio contiene todos los archivos.

¿Puede alguien aportar razones técnicas y/o históricas de por qué se hace así?

Para que quede claro: no tengo ningún problema técnico, sólo tengo curiosidad.

2voto

  • El .dmg es la imagen de disco que se puede montar como un archivo externo. El valor que proporciona aquí es que los .dmgs se comprueban para la consistencia/corrección en el montaje, por lo que si la descarga salió mal se le notificará
  • El .pkg es el formato estándar para el software instalable y suele contener no sólo la aplicación en sí, sino también todas las demás cosas que aparecen durante la instalación: ReadMe, información legal/de licencia, paquetes opcionales, etc.
  • El .gz es para comprimir los datos y mantener los paquetes más pequeños en el disco (y para la descarga)
  • .cpio es un formato de archivo similar a tar, etc.

2voto

Bojan Markovic Puntos 21

Históricamente hablando, pkg proviene de los paquetes Unix (más directamente de los BSD), que son esencialmente la carga útil comprimida (archivos en una estructura de carpetas equivalente a la que tendrían en el disco), y algunos metadatos e instrucciones adicionales para manejar el asistente de instalación, y escribir información en varias bases de datos del sistema.

A dmg es sólo una imagen de disco similar a la que se obtendría con una utilidad de tipo dd. En la distribución de aplicaciones de Mac está en un formato HFS similar al que contienen las particiones formadas por HFS en medios ópticos.

Ahora bien, no todos los DMG contienen archivos .pkg. Algunas imágenes DMG sólo contienen .app bundles (que, de nuevo, no es más que una carpeta con todos los recursos que contiene una aplicación, pero como la carpeta tiene la extensión .app Quartz/Finder la tratan como un solo archivo, al igual que hacen con las carpetas que terminan en .kext o .component, etc.)

Los archivos ocultos están ahí para ocultar la complejidad, y por otras razones de tipo "experiencia de usuario".

0voto

Ryccardo Puntos 1021

Bueno, la estructura de un .pkg no es que más compleja u oscura que la de un .deb de Debian - ambos son archivos que contienen otro archivo comprimido para el contenido real más los metadatos a lo largo de él (¡que en un .deb está dentro de otra capa de compresión al igual que la carga útil!)

Sobre los archivos ocultos en el DMG No hay una respuesta científicamente probada: uno podría simplemente especular sobre la protección anticopia (un argumento que obviamente no se sostiene) o un intento excesivamente entusiasta de ocultar el "trasfondo técnico" al usuario (como lo corrobora el contenido de un InstallESD.dmg de [Mountain] Lion que, al no estar destinado a ser accedido por un usuario humano, tiene algunas carpetas visibles con funcionalidades que cumplían las invisibles en las versiones de CD y DVD de Mac OS X)

A esto hay que añadir que desde 10.5 puede haber una capa más debido a la existencia de paquetes y distribuciones/metapaquetes (se utiliza para agrupar paquetes con un selector de componentes a instalar y aparentemente se requiere, al menos con el anticuado y limitante PackageMaker de Apple, para utilizar varias características avanzadas como firmas digitales o algunas comprobaciones de requisitos del sistema).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X