Pkg ফাইলটি আনপ্যাক এবং প্যাক করবেন কীভাবে?


99

আমার কাছে ম্যাকের জন্য ইনস্টল মেকার দ্বারা তৈরি একটি পিকেজি ফাইল রয়েছে। আমি একটি ফাইলকে পিকেজিতে প্রতিস্থাপন করতে চাই। তবে আমার অবশ্যই এটি লিনাক্স সিস্টেমের অধীনে করা উচিত, কারণ এটি ডাউনলোড প্রক্রিয়ার একটি অংশ। যখন ব্যবহারকারী ফাইল সার্ভার ডাউনলোড শুরু করেন অবশ্যই একটি ফাইলকে পিকেজিতে প্রতিস্থাপন করতে হবে। আমার কাছে পিকিজি আনপ্যাক করে কোনও ফাইল প্রতিস্থাপন করার সমাধান রয়েছে তবে আমি কীভাবে আবার প্যাক করতে পারি তা জানি না। http://emresaglam.com/blog/1035 http://ilostmynotes.blogspot.com/2012/06/mac-os-x-pkg-bom-files-package.html


(ভবিষ্যতের দর্শকদের জন্য) gabrielrinaldi.me/how-to-install-jdk-7-on-yosemite-10-10 আপনাকে অন্তর্দৃষ্টি দিতে পারে
james_womack

ম্যাকোস এক্সার কমান্ড নিয়ে উপস্থিত হবে।
মাইকেপ

উত্তর:


187

প্যাকেজগুলি আলাদা এক্সটেনশান এবং একটি নির্দিষ্ট ফাইল শ্রেণিবিন্যাসের সাথে কেবল .xar সংরক্ষণাগার। দুর্ভাগ্যক্রমে, সেই ফাইলের স্তরক্রমের অংশটি হ'ল প্রকৃত ইনস্টলযোগ্যগুলির একটি সিপিও.gz সংরক্ষণাগার, এবং সাধারণত আপনি এটি সম্পাদনা করতে চান। এবং এমন একটি বম ফাইলও রয়েছে যা সেই সিপিও সংরক্ষণাগারটির ভিতরে থাকা ফাইলগুলির তথ্য এবং একটি প্যাকেজইনফোর ফাইল অন্তর্ভুক্ত করে যা সংক্ষিপ্তসার তথ্য অন্তর্ভুক্ত করে।

আপনার যদি সত্যিই কোনও তথ্য ফাইল সম্পাদনা করতে হয় তবে তা সহজ:

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

তবে আপনার যদি ইনস্টলযোগ্য ফাইলগুলি সম্পাদনা করতে চান:

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

আমি বিশ্বাস করি আপনি বেশিরভাগ লিনাক্স ডিস্ট্রোজের জন্য এমকেবম (এবং lsbom) পেতে পারেন। (আপনি যদি ডিট্টো পেতে পারেন, এটি জিনিসগুলিকে আরও সহজ করে তোলে তবে এটি প্রায় সর্বব্যাপী উপলব্ধ কিনা তা আমি নিশ্চিত নই))


হ্যাঁ. আমি আগে এই পদ্ধতিটি চেষ্টা করেছি (কোনও ফাইল পরিবর্তন না করেই কেবল প্যাক প্যাক / প্যাক করুন), তবে এই পিকেজি ইনস্টল করার পরে কিছুই হ্যান্ড হবে না। কনসোলে আমি এই বার্তাটি পেয়েছি: পিক্সিক্স_স্পন ("/ লাইব্রেরি / অ্যাপ্লিকেশন সহায়তা / প্রজেক্ট 1 / প্রজেক্ট 1. অ্যাপ / সামগ্রী / ম্যাকোস / প্রজেক্ট 1", ...): এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই। আমি তদন্ত করেছি যে পুরানো পেলোড ফাইলটিতে / / / প্রজেক্ট 1.এপ / ... রয়েছে এবং নতুন পে-লোডের ভিতরে /Project1.app / ... রয়েছে।
স্বপ্ন

ভাল, যে শেষ অংশটি সহজ। আমি জানি না যে এটি কোনও পার্থক্য করে কিনা, তবে এটি হতে পারে (কারণ বম এবং পে-লোড মেলে না?) সন্ধান | সিপিও | জিজিপ কমান্ডে Foo.app এর পরিবর্তে কেবল ./Foo.app ব্যবহার করুন। আমি উত্তরটি সম্পাদনা করব।
অবার্নেট

4
@ বার্নার্ট: আপনি পরিবর্তে cat Payload | gunzip -dc |cpio -iকেবল ব্যবহার করতে পারতেনtar xzvf Payload
সিসিপিজ্জা

আমি একটি ত্রুটি চলমান পেতে cat Payload | gunzip -dc |cpio -i: gunzip: unknown compression format; 0 blocks। আমি BSD.pkgওএস এক্স ইয়োসেমাইট ইনস্টলেশন প্যাকেজটি থেকে খোলার চেষ্টা করছি ।
shx

4
আমার কাছে এক্সার নেই তাই আমি চেষ্টা করেছি: 7z x <file>.pkgএবং এটি কার্যকর হয়েছে।

21

এখানে অ্যাবারনার্টের উত্তরে অনুপ্রাণিত একটি বাশ স্ক্রিপ্ট রয়েছে যা MyPackage.pkgএকটি সাবফোল্ডার নামের একটি প্যাকেজটিকে আনপ্যাক করবে MyPackage_pkgএবং তারপরে ফাইন্ডারে ফোল্ডারটি খুলবে।

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

ব্যবহার:

    pkg-upack.sh MyPackage.pkg

সতর্কতা: এটি সমস্ত ক্ষেত্রে কার্যকর হবে না এবং নির্দিষ্ট ফাইলগুলি যেমন ব্যর্থ হবে যেমন ওএসএক্স সিস্টেম ইনস্টলারের মধ্যে থাকা পিকেজি। আপনি pkg ফাইল ভিতরে উঁকি এবং দেখুন সেখানে কি ভিতরে করতে চান তাহলে, আপনি চেষ্টা করতে পারেন SuspiciousPackage (বিনামূল্যে অ্যাপ্লিকেশন), এবং যদি আপনি এই ধরনের বেছে বেছে নির্দিষ্ট ফাইল unpacking যেমন আরও বিকল্প প্রয়োজন, তারপর কটাক্ষপাত আছে শান্তিকামী (nagware)।


4
Pbzx -n macOSUpd10.12.1.pkg / পেলোড | ব্যবহার করুন সিপিও-আই নতুন সংরক্ষণাগারগুলির জন্য (এখান থেকে নেওয়া: stackoverflow.com/a/41598227/5688277 )
অ্যাড্রিয়ান ও'কনোর

3

@ বার্নার্ট যা বলেছিলেন তা ছাড়াও, আজ আমাকে খুঁজে বের করতে হয়েছিল যে cpioমাউন্টেন সিংহের ডিফল্ট ইউটিলিটি ডিফল্ট হিসাবে আলাদা সংরক্ষণাগার ফর্ম্যাট ব্যবহার করে (কোনটি নিশ্চিত নয়) এমনকি ম্যান পেজটি এটি পুরাতন সিপিও / ওএডসি ফর্ম্যাটটি ব্যবহার করবে বলে উল্লেখ করে। সুতরাং, কেউ যদি cpio read error: bad file formatতার ম্যানিপুলেটেড প্যাকেজগুলি ইনস্টল করার চেষ্টা করে বার্তাটিতে হোঁচট খায় তবে ফর্ম্যাটটি পুনরায় প্যাক ধাপে অন্তর্ভুক্ত করার বিষয়ে নিশ্চিত হন:

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

3

@ shrx আমি "pbzx" কমান্ড ব্যবহার করে BSD.pkg (যোসাইমাইট ইনস্টলার এর অংশ) আনপ্যাক করতে সক্ষম হয়েছি।

pbzx <pkg> | cpio -idmu

"Pbzx" কমান্ডটি নিম্নলিখিত লিঙ্ক থেকে ডাউনলোড করা যেতে পারে:


2

আপনি pbzxএখানে আমার কাঁটাচামড়া দেখতে চাইতে পারেন : https://github.com/NiklasRosenstein/pbzx

এটি আপনাকে পিবিজেএক্স ফাইলগুলি স্ট্রিম করতে দেয় যা XAR সংরক্ষণাগারটিতে আবৃত নয় wra আমি এটি সাম্প্রতিক এক্সকোড কমান্ড-লাইন সরঞ্জাম ডিস্ক চিত্রগুলির সাথে অভিজ্ঞতা করেছি (উদা। 10.12 এক্সকোড 8)।

pbzx -n Payload | cpio -i
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.