Кто-нибудь знает, как получить номер версии файла .pkg, который еще не установлен?
Я бы хотел использовать что-то вроде pkgutil --pkg-info , но это работает только для установленных пакетов.
Я также пробовал installer -pkginfo -verbose , но номер версии не отображается.
Есть ли встроенная команда для этого, или, в качестве альтернативы, может ли кто-нибудь предложить однострочник, пожалуйста?
Спасибо.
Лучшее, что я смог придумать, это:
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.
Вариант ответа @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="[^"]+"'
Ахмед