Soru Pkg dosyası nasıl açılır ve paketlenir?


Mac için Install Maker tarafından oluşturulan bir pkg dosyası var. Bir dosyayı pkg olarak değiştirmek istiyorum. Ama bunu Linux sistemi altında yapmalıyım, çünkü bu indirme işleminin bir parçası. Kullanıcı indirmeye başladığında dosya sunucusu bir dosyayı pkg olarak değiştirmelidir. Pkg paketini nasıl açacağım ve bir dosyayı nasıl değiştireceğime dair bir çözümüm var ama pkg için tekrar nasıl paketlendiğimi bilmiyorum. http://emresaglam.com/blog/1035 http://ilostmynotes.blogspot.com/2012/06/mac-os-x-pkg-bom-files-package.html


76
2017-07-02 18:06


Menşei


(Gelecek ziyaretçiler için) gabrielrinaldi.me/how-to-install-jdk-7-on-yosemite-10-10 size fikir verebilir - james_womack
MacOS'un xar komutuyla geldiği görülüyor. - MikeP


Cevaplar:


Paketler sadece farklı bir uzantıya ve belirtilen bir dosya hiyerarşisine sahip .xar arşivleridir. Ne yazık ki, bu dosya hiyerarşisinin bir kısmı, gerçek kurulum programlarının bir cpio.gz arşividir ve genellikle düzenlemek istediğiniz şeydir. Ayrıca, bu cpio arşivi içindeki dosyalar ve özet bilgileri içeren bir PackageInfo dosyası içeren bir Bom dosyası da var.

Gerçekten sadece bilgi dosyalarından birini düzenlemeniz gerekiyorsa, bu basittir:

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

Ancak, yüklenebilir dosyaları düzenlemeniz gerekiyorsa:

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

En Linux dağıtımları için mkbom (ve lsbom) alabileceğinizi düşünüyorum. (Eğer ditto alırsanız, bu işleri daha da kolaylaştırır, ancak neredeyse her yerde mevcut olduğundan emin değilim.)


147
2017-07-02 19:23



Evet. Bu yöntemi daha önce denedim (herhangi bir dosyayı değiştirmeden sadece paketini aç), ancak bu pkg'yi yükledikten sonra hiçbir şey olmadı. Konsolda şu mesajı aldım: posix_spawn ("/ Library / Application Support / Project1 / Project1.app / Contents / MacOS / Project1", ...): Böyle bir dosya veya dizin yok. Eski Payload dosyasının /./ Project1.app / ... ve yeni yükün /Project1.app / ... içerdiğini araştırdım. - dream2work
Eh, bu son kısım kolay. Fark yaratıp yaratmadığını bilmiyorum, ama belki de (belki de Bom ve Yük Yükü eşleşmediği için) olabilir. Sadece, | cpio | gzip komutundaki Foo.app yerine ./Foo.app kullanın. Cevabı ben düzenleyeceğim. - abarnert
@abarnert: yerine cat Payload | gunzip -dc |cpio -i sadece kullanabilirsiniz tar xzvf Payload - ccpizza
Çalışan bir hata alıyorum cat Payload | gunzip -dc |cpio -i: gunzip: unknown compression format;0 blocks. Açmaya çalışıyorum BSD.pkg OS X Yosemite kurulum paketinden. - shrx
@ccpizza Senin önerin de çalışmıyor, ben elde ederim: tar: Unrecognized archive format;tar: Error exit delayed from previous errors.. - shrx


Cevabından esinlenildi abarnert, Adında bir paket açacak bir bash betiği yaptım MyPackage.pkg adında bir alt klasöre MyPackage_pkg ve sonra Finder'da klasörü açın. Finder adımını istemiyorsanız son satırı kaldırın.

    #!/usr/bin/env bash
    filename="$*"
    dirname="${filename/\./_}"
    pkgutil --expand "$filename" "$dirname"
    cd "$dirname"
    tar xvf Payload
    open .

Kullanımı:

    pkg-upack.sh MyPackage.pkg

Uyarı: Bu, her durumda çalışmayacaktır ve belirli dosyalarla, ör. OSX sistem yükleyicisi içindeki PKG'ler. Sadece pkg dosyasının içine bakmak ve içinde ne olduğunu görmek istiyorsanız, deneyebilirsiniz SuspiciousPackage (ücretsiz uygulama) ve belirli dosyaları ayıklamak da dahil olmak üzere bazı ciddi açma işlemleri yapmak istiyorsanız, o zaman bir göz atın. barışsever (Nagware).


17
2018-05-30 09:00



tar xvf Payload Yosemite üzerinde harika çalıştı - cde
tar: Tanınmayan arşiv biçimi - malhal
Kullanım pbzx -n macOSUpd10.12.1.pkg / Payload | Daha yeni arşivler için cpio -i (buradan alınmıştır: stackoverflow.com/a/41598227/5688277) - Adrian O'Connor


@Abarnert'in söylediklerine ek olarak, bugün bu varsayılanı bulmak zorundaydım cpio Mountain Lion yardımcı programı, varsayılan olarak (hangisi olduğundan emin değil), eski cpio / odc biçimini kullanacağını belirten man sayfasıyla bile farklı bir arşiv biçimi kullanır. Öyleyse, eğer kimse cpio read error: bad file format manipüle edilmiş paketlerini kurmaya çalışırken mesajınızı yeniden paketin içine koyduğunuzdan emin olun:

find ./Foo.app | cpio -o --format odc | gzip -c > Payload

3
2018-02-27 10:02





@shrx "pbzx" komutunu kullanarak BSD.pkg (Yosemite yükleyicisinin bir parçası) paketini açmayı başardım.

pbzx <pkg> | cpio -idmu

"Pbzx" komutu aşağıdaki linkten indirilebilir:


2
2018-01-09 15:39





Çatalımın içine bakmak isteyebilirsiniz. pbzx İşte: https://github.com/NiklasRosenstein/pbzx

Bir XAR arşivinde bulunmayan pbzx dosyalarını yayınlamanıza olanak tanır. Bunu son XCode Komut Satırı Araçları Disk Görüntüleri ile yaşadım (örneğin 10.12 XCode 8).

pbzx -n Payload | cpio -i

2
2018-01-11 18:01