Comando para averiguar el número de versión de un archivo .pkg

¿Alguien sabe cómo recuperar el número de versión de un archivo .pkg que aún no está instalado?

Me gustaría usar algo como pkgutil --pkg-info , pero eso solo funciona para paquetes instalados.

También probé installer -pkginfo -verbose , pero eso no muestra el número de versión.

¿Hay un comando incorporado para hacer esto o, alternativamente, alguien podría sugerir una sola línea, por favor?

Gracias.

Respuestas (3)

Lo mejor que se me ocurrió fue esto:

pkgutil --expand package.pkg /tmp/pkg; cat /tmp/pkg/PackageInfo | grep ./Applications | grep -m 1 .app\" | awk '{ print $3, $2 }'; rm -rf /tmp/pkg

No es la solución más elegante, así que todavía estoy buscando una forma de hacerlo sin tener que extraer primero el .pkg.

¿Has encontrado alguna solución mejor todavía? No veo ningún efecto en cambiar el número de versión del paquete al crear el archivo pkg. El paquete final siempre parece reemplazar los archivos existentes de todos modos, ¿no es así?

Variación de la respuesta de @d3Xt3r:

tar xOvf PackageName.pkg output.pkg/PackageInfo 2>/dev/null | grep '<pkg-info' \
    | sed "s#.* version=\"\([0-9\.]*\)\".*#\1#"

La ventaja es que esto es solo procesamiento de tuberías.

Tenga en cuenta que mi paquete tenía una estructura diferente, hay un directorio adicional output.pkgque contiene un archivoPackageInfo

para un paquete estructurado como se muestra a continuación,

PackageName.pkg
└── Package.pkg
    └── PackageInfo

adaptado de @Marek R

el comando para extraer información de la versión en línea es:

tar xOvf "PackageName.pkg" "Package.pkg/PackageInfo" 2>/dev/null | fgrep "<pkg-info" | grep -Po '(?<!-)version="[^"]+"'