ฉันจะเปิดไฟล์. pkg ด้วยตนเองได้อย่างไร


60

แอปพลิเคชั่นบางตัวมีไฟล์. pkg และขอรหัสผ่านผู้ดูแลระบบของคุณแม้ว่าสิ่งที่พวกเขาทำคือคัดลอกไบนารีไปยัง / Applications

ฉันชอบที่จะมีแอปพลิเคชันของฉันใน ~ / แอปพลิเคชันและฉันไม่ต้องการให้สิทธิ์การดูแลระบบแก่สิ่งที่ไม่ได้มาจากการเป็นแม่

มีวิธีที่ฉันสามารถเปิดไฟล์. pkg ด้วยตนเองและดึงแอปพลิเคชันออกมาได้หรือไม่? มี PackageMaker ในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ แต่ดูเหมือนจะไม่ทำเช่นนั้น (มันสร้างผลลัพธ์บางอย่างที่ทำให้ฉันคิดว่าไม่มีสคริปต์หรือส่วนอื่น ๆ ในโปรแกรมติดตั้งเพียงแอปพลิเคชัน)


2
ลองunpkg
lhf

คำตอบ:


67

หากคุณคลิกขวาและคลิกแสดงเนื้อหาแพ็คเกจคุณจะได้รับไฟล์สองสามไฟล์ในโฟลเดอร์เนื้อหา (หมายเหตุ: หากคุณไม่เห็นแสดงเนื้อหาแพ็คเกจคุณจะต้องเปิด Terminal.app และเรียกใช้pkgutil --expand mystubbornpackage.pkg path/to/expand)

หนึ่งคือไฟล์ BOM (รายการวัสดุ) ซึ่งกลายเป็นใบเสร็จรับเงินที่คุณสามารถใช้เพื่อถอนการติดตั้งแอป ไฟล์นี้มีรายการของทุกสิ่งที่แพคเกจจะติดตั้งและสถานที่; เพื่ออ่านไฟล์นี้ใช้คำสั่งlsbom

แพ็คเกจส่วนใหญ่ (ฉันใช้ Office 2008 ที่นี่) มีไฟล์ Archive.pax.gz ซึ่งประกอบด้วยทุกอย่างที่โปรแกรมติดตั้งจะย้ายเข้าไปในโฟลเดอร์ต่างๆตามคำแนะนำในไฟล์ BOM แอพส่วนใหญ่ดูเหมือนจะมี. แอปในที่เก็บถาวรนี้แม้ว่าการลากไปที่ / แอปพลิเคชันอาจปล่อยไว้โดยไม่มีเฟรมเวิร์กที่จำเป็นต้องรัน ดังนั้นคุณจะต้องคิดออกว่าจะต้องใช้ไฟล์อื่นใดและต้องการให้ไฟล์เหล่านั้นทำงานที่ไหน

นอกจากนี้แพคเกจทั้งหมดสามารถบันทึกข้อความได้หากคุณกดCmd-L (หรือเลือกตัวเลือกบันทึกการติดตั้งจากเมนูหน้าต่างคุณสามารถดูได้ในขณะที่กำลังสร้างขึ้นซึ่งอาจทำให้คุณทราบว่ามีอะไรพิเศษติดตั้งอยู่ อย่างน้อยก็มีข้อมูลเพิ่มเติมถ้าคุณไม่ไว้วางใจแพ็คเกจ


3
ฉันไม่ได้รับ "แสดงเนื้อหาแพ็คเกจ" ในเมนูคลิกขวา
Thilo

3
@Thilo หากคุณไม่ได้รับตัวเลือก "แสดงเนื้อหาของแพคเกจ" ไฟล์ pkg จะถูกสร้างเป็นไฟล์แบบแฟลต Apple แนะนำ pkg แบบแบนเมื่อสองสามปีก่อน
ชื่อผู้ใช้

@ ชื่อผู้ใช้: ดังนั้นฉันจะเปิดเหล่านั้นได้อย่างไร
Thilo

10
pkgutilจะทำเช่นนั้น คุณสามารถขยายโดยใช้pkgutil --expand file.pkg path_to_expandและมันจะแปลงเป็นแพ็คเกจสไตล์ไดเรกทอรี
Mathew Hall

@ ชื่อผู้ใช้ "แบน" หมายความว่าอะไร
Pacerier

34

นอกเหนือจากที่ Matthew Hall บอกไว้คุณยังสามารถกด Cmd-I ในแอพ Installer เพื่อดูว่าไฟล์ใดที่โปรแกรมติดตั้งจะติดตั้งและตำแหน่ง


3
+1 ด้วยสิ่งนี้ฉันสามารถตรวจสอบได้อย่างรวดเร็วว่ามีเพียงไบนารีแอปพลิเคชันในนั้นไม่มีสิ่งอื่นทั้งระบบ
Thilo

7

หากคุณไม่เชื่อถือโปรแกรมติดตั้งเพียงพอที่จะให้สิทธิ์ระดับผู้ดูแลระบบในการติดตั้งทำไมคุณถึงเชื่อถือไบนารีใน / Applications

Pacifistจะให้คุณดูไฟล์แพ็คเกจ นี่ไม่จำเป็นต้องให้คุณ "ดึงไบนารี" ออกไป


1
ฉันไม่เชื่อถือไบนารีเช่นกัน ฉันไม่ต้องการให้สิทธิ์การดูแลระบบ (ซึ่งไม่ควรต้องการ)
Thilo

3
ตราบใดที่คุณไม่เรียกใช้แอพจากผู้ใช้ที่มีสิทธิ์ของผู้ดูแลระบบความเชื่อถือของคุณจะถูกยึดถือ อย่าลืมว่าแม้แต่แอปในระดับผู้ใช้ก็สามารถทำการร้องขอได้จากกระบวนการระดับผู้ดูแลระบบดังนั้นจึงเป็นงานที่ต้องใช้แอพที่คุณไม่เชื่อถือ
bmike

@ghoppe เป็นเพราะบางครั้งค่าเริ่มต้นไม่ได้รับการปรับให้เหมาะสมสำหรับผู้ใช้ แต่เป็นผู้สร้างแอป เช่นแทนที่จะติดตั้งขยะที่ติดตั้งทั้งหมดที่มาจากค่าเริ่มต้นฉันสามารถเลือกที่จะใช้ไฟล์ที่มีความสำคัญเท่านั้น เช่นเมื่อดาวน์โหลด Mysql / Java / ฯลฯ
Pacerier

4

หรือคุณสามารถลอง

sudo installer -pkg ~/Downloads/packagename.pkg -target ~/Applications/

หรือ

installer -pkg ~/Downloads/packagename.pkg -target ~/Applications/

ที่ไม่ได้ทำงานอย่างน่าเสียดาย มันยังคงยืนยันที่จะ "ติดตั้งที่เส้นทางฐาน /" แล้วขอรหัสผ่านผู้ดูแลระบบ
Thilo

1
เป็นไปได้ที่จะติดตั้งลงในดิสก์อิมเมจที่สร้างขึ้นด้วยสิ่งที่ชอบhdiutil create -size 200m -fs HFS+ -volname Scratch scratch.dmgแล้วคัดลอกไฟล์ไปยังตำแหน่งที่คุณต้องการ คุณยังต้องใช้ sudo เพื่อเรียกใช้ตัวติดตั้ง
mjs

2
  1. หลังจากคุณเปิดแพคเกจสำเร็จให้ค้นหาไฟล์ Archive.pax.gz ที่กล่าวถึงก่อนหน้านี้

  2. สร้างโฟลเดอร์ว่างใหม่บนเดสก์ท็อปของคุณตั้งชื่อตามที่คุณต้องการ ฉันมักจะตั้งชื่อพวกเขาว่า "xxxx" หรือ "zzzz" ฯลฯ เพื่อให้การพิมพ์ง่ายขึ้นในภายหลัง

  3. ตัวเลือกลากสำเนาของไฟล์ Archive.pax.gz ไปที่โฟลเดอร์ใหม่ "xxxx" บนเดสก์ท็อปของคุณ

    หากไฟล์อยู่ในสื่ออ่านอย่างเดียวคุณสามารถลากไปยังโฟลเดอร์ "xxxx" ของคุณโดยไม่ต้องใช้ปุ่มตัวเลือกเพื่อสร้างสำเนา

  4. ตอนนี้เปิด Terminal.app และที่บรรทัดคำสั่งนำทางไปยังไดเรกทอรี "xxxx" ใหม่ของคุณและแสดงรายการเนื้อหาของไดเรกทอรีเพื่อยืนยันว่าไฟล์ Archive.pax.gz ของคุณอยู่ที่นั่น:

    cd ~/Desktop/xxxx
    ls -al
    
  5. ขณะนี้มีสองคำสั่งง่าย ๆ ในการป้อน:

    gunzip -v Archive.pax.gz
    

    Gzip จะบอกคุณว่าได้แทนที่ "Archive.pax.gz" ด้วย "Archive.pax") ตอนนี้แสดงรายการเนื้อหาของไดเรกทอรีอีกครั้งเพื่อยืนยันสิ่งนี้

    pax -r -f Archive.pax
    

    (คุณต้องแยก-rและ-fเป็น-rfจะไม่ทำงาน)

  6. ls -alในที่สุดรายการเนื้อหาของไดเรกทอรีอีกครั้งกับ นอกเหนือจากไฟล์ Archive.pax ของคุณคุณจะเห็นลำดับชั้นของไดเรกทอรีที่อาจมีอย่างน้อยหนึ่งไดเรกทอรี

    ไฟล์ในลำดับชั้นของไดเรกทอรีนั้นจะแสดงให้คุณเห็นว่าตัวติดตั้ง OS X จะติดตั้งไฟล์บนระบบของคุณอย่างไรถ้าไดเรกทอรี "xxxx" ของคุณคือรูทไดเร็กทอรี "/"

  7. คุณสามารถคัดลอกไฟล์เหล่านั้นไปยังจุดหมายปลายทางด้วยตนเองได้หากต้องการ


3
cd ~/Desktop; cp Package.pkg/Contents/Archive.pax.gz .; gunzip -v Archive.pax.gz; pax -r -f Archive.paxกล่าวอีกนัยหนึ่ง คุณไม่จำเป็นที่จะอธิบายทุกอย่างที่ว่าระดับของรายละเอียด
Lri

6
ใช่ฉันให้รายละเอียดจำนวนนั้นเพื่อให้ผู้ใช้ในทุกระดับของความเชี่ยวชาญจะสามารถติดตามและประสบความสำเร็จได้ จริงอยู่ที่รุ่นลับของคุณจะได้ผลลัพธ์เดียวกัน อย่างไรก็ตามผู้ใช้รายอื่นที่อ่านสิ่งนี้ในอนาคตซึ่งอาจไม่คุ้นเคยกับบรรทัดคำสั่งอาจหายไปอย่างสิ้นหวัง
stargood

1

pkgutil --expand ฉันล้มเหลวด้วยข้อผิดพลาดต่อไปนี้:

Error encountered while creating .. Error 17: File exists

แต่ฉันจัดการเพื่อแยกไฟล์ด้วยxarแทน:

xar -xvf foo.pkg


1
มันใช้งานได้สำหรับฉัน แต่เห็นได้ชัดว่าถ้าคุณให้ pkgutil ไดเรกทอรีที่ไม่มีอยู่เป็นปลายทางที่ทำให้ 17 ข้อผิดพลาดหายไป
Michael

1

เครื่องมือที่ดีที่สุดสำหรับการตรวจสอบไฟล์แพคเกจแพ็กเกจที่น่าสงสัย นอกจากนี้ยังช่วยให้คุณสามารถคัดลอกไฟล์ออกจากแพ็คเกจ

ไม่เพียง แต่จะให้ข้อมูลทั้งหมดที่คุณต้องการในแอปเท่านั้น แต่ยังติดตั้งปลั๊กอิน Quick Look ดังนั้นเพียงแค่เลือกไฟล์แพคเกจแล้วกดปุ่ม space bar เพื่อเปิดหน้าต่างขึ้นมาพร้อมกับข้อมูลที่สำคัญที่สุด


0

Unarchiverสามารถทำนี้ มันจะทำเช่นเดียวกับpkgutil --expandแต่ใช้การลากและวาง มันเป็นการทดแทนที่ดีกว่าสำหรับ Apple Archive Utility.app อย่างไรก็ตาม


0

UnArchiverทำการหลอกลวง

ติดตั้ง UnArchiver เปิด UnArchiver ในขณะที่เปิดอยู่ให้ดับเบิลคลิกที่น่ารำคาญMAMP_MAMP_3.5.pkg

ทำตามขั้นตอนเพื่อติดตั้ง MAMP

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.