How to unpack and pack pkg file?

后端 未结 5 1105
北恋
北恋 2020-11-30 16:58

I have a pkg file created by Install Maker for Mac. I want to replace one file in pkg. But I must do this under Linux system, because this is a part of download process. Whe

5条回答
  •  醉酒成梦
    2020-11-30 17:09

    Packages are just .xar archives with a different extension and a specified file hierarchy. Unfortunately, part of that file hierarchy is a cpio.gz archive of the actual installables, and usually that's what you want to edit. And there's also a Bom file that includes information on the files inside that cpio archive, and a PackageInfo file that includes summary information.

    If you really do just need to edit one of the info files, that's simple:

    mkdir Foo
    cd Foo
    xar -xf ../Foo.pkg
    # edit stuff
    xar -cf ../Foo-new.pkg *
    

    But if you need to edit the installable files:

    mkdir Foo
    cd Foo
    xar -xf ../Foo.pkg
    cd foo.pkg
    cat Payload | gunzip -dc |cpio -i
    # edit Foo.app/*
    rm Payload
    find ./Foo.app | cpio -o | gzip -c > Payload
    mkbom Foo.app Bom # or edit Bom
    # edit PackageInfo
    rm -rf Foo.app
    cd ..
    xar -cf ../Foo-new.pkg
    

    I believe you can get mkbom (and lsbom) for most linux distros. (If you can get ditto, that makes things even easier, but I'm not sure if that's nearly as ubiquitously available.)

提交回复
热议问题