У меня есть файл pkg, созданный Install Maker для Mac. Хочу заменить один файл в pkg. Но я должен сделать это в системе Linux, потому что это часть процесса загрузки. Когда пользователь начинает загрузку, файловый сервер должен заменить один файл в pkg. У меня есть решение, как распаковать pkg и заменить файл, но я не знаю, как снова упаковать pkg. http://emresaglam.com/blog/1035 http://ilostmynotes.blogspot.com/2012/06/mac-os-x-pkg-bom-files-package.html
99
Ответы:
Пакеты - это просто архивы .xar с другим расширением и определенной иерархией файлов. К сожалению, часть этой файловой иерархии представляет собой архив cpio.gz с фактическими установками, и обычно это то, что вы хотите отредактировать. Также есть файл Bom, который включает информацию о файлах внутри этого архива cpio, и файл PackageInfo, который включает сводную информацию.
Если вам действительно нужно отредактировать один из информационных файлов, это просто:
Но если вам нужно отредактировать устанавливаемые файлы:
Я считаю, что вы можете получить mkbom (и lsbom) для большинства дистрибутивов Linux. (Если вы можете получить то же самое, это упростит задачу, но я не уверен, что это почти так же повсеместно доступно.)
источник
cat Payload | gunzip -dc |cpio -i
вас можно просто использоватьtar xzvf Payload
cat Payload | gunzip -dc |cpio -i
:gunzip: unknown compression format
;0 blocks
. Я пытаюсь открытьBSD.pkg
из установочного пакета OS X Yosemite.7z x <file>.pkg
и это сработало.Вот сценарий bash, вдохновленный ответом abarnert, который распакует пакет с именем
MyPackage.pkg
в подпапку с именем,MyPackage_pkg
а затем откроет папку в Finder.#!/usr/bin/env bash filename="$*" dirname="${filename/\./_}" pkgutil --expand "$filename" "$dirname" cd "$dirname" tar xvf Payload open .
Применение:
источник
В дополнение к тому, что сказал @abarnert, сегодня мне пришлось узнать, что
cpio
утилита по умолчанию в Mountain Lion использует другой формат архива по умолчанию (не уверен, какой), даже если на странице руководства указано, что он будет использовать старый формат cpio / odc. Итак, если кто-то наткнется наcpio read error: bad file format
сообщение при попытке установить измененные пакеты, обязательно включите формат на этапе повторной упаковки:источник
@shrx Мне удалось распаковать BSD.pkg (часть установщика Yosemite) с помощью команды "pbzx".
pbzx <pkg> | cpio -idmu
Команду "pbzx" можно скачать по следующей ссылке:
источник
Возможно, вы захотите заглянуть в мою вилку
pbzx
здесь: https://github.com/NiklasRosenstein/pbzxЭто позволяет передавать файлы pbzx, которые не заключены в архив XAR. Я испытал это с недавними образами дисков инструментов командной строки XCode (например, 10.12 XCode 8).
источник