Befehl zum Ermitteln der Versionsnummer einer .pkg-Datei

Weiß jemand, wie man die Versionsnummer einer .pkg-Datei abruft, die noch nicht installiert ist?

Ich würde gerne so etwas wie pkgutil --pkg-info verwenden , aber das funktioniert nur für installierte Pakete.

Ich habe auch installer -pkginfo -verbose versucht , aber das zeigt nicht die Versionsnummer.

Gibt es dafür einen eingebauten Befehl, oder könnte alternativ jemand bitte einen Einzeiler vorschlagen?

Danke.

Antworten (3)

Das Beste was mir einfiel war folgendes:

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

Nicht die eleganteste Lösung, daher suche ich immer noch nach einer Möglichkeit, dies zu tun, ohne zuerst die .pkg-Datei extrahieren zu müssen.

Hast du schon eine bessere Lösung gefunden?? Ich sehe keine Auswirkungen auf die Änderung der Paketversionsnummer beim Erstellen der pkg-Datei. Das endgültige Paket scheint sowieso immer die vorhandenen Dateien zu ersetzen, oder?

Variante der Antwort von @d3Xt3r:

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

Vorteil ist, dass dies nur eine Rohrbearbeitung ist.

Beachten Sie, dass mein Paket eine andere Struktur hatte, es gibt ein zusätzliches Verzeichnis, output.pkgdas die Datei enthältPackageInfo

für ein Paket, das wie folgt aufgebaut ist,

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

adaptiert von @Marek R

Der Befehl zum Extrahieren von Versionsinformationen inline lautet:

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