Команда, чтобы узнать номер версии файла .pkg

Кто-нибудь знает, как получить номер версии файла .pkg, который еще не установлен?

Я бы хотел использовать что-то вроде pkgutil --pkg-info , но это работает только для установленных пакетов.

Я также пробовал installer -pkginfo -verbose , но номер версии не отображается.

Есть ли встроенная команда для этого, или, в качестве альтернативы, может ли кто-нибудь предложить однострочник, пожалуйста?

Спасибо.

Ответы (3)

Лучшее, что я смог придумать, это:

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

Не самое элегантное решение, поэтому я все еще ищу способ сделать это без предварительного извлечения .pkg.

Вы нашли лучшее решение еще ?? Я не вижу никакого эффекта от изменения номера версии пакета при сборке файла pkg. Окончательный пакет все равно всегда заменяет существующие файлы, не так ли?

Вариант ответа @d3Xt3r:

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

Преимущество в том, что это только обработка трубы.

Обратите внимание, что мой пакет имел другую структуру, есть дополнительный каталог output.pkg, содержащий файлPackageInfo

для пакета, структурированного как показано ниже,

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

адаптировано из @Marek R

команда для извлечения встроенной информации о версии:

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