Bagaimana saya bisa membuka file .pkg secara manual?

60

Beberapa aplikasi datang dalam file .pkg, dan meminta kata sandi administrator Anda, meskipun yang mereka lakukan hanyalah menyalin biner ke / Aplikasi.

Saya suka memiliki aplikasi saya di ~ / Aplikasi, dan saya tidak suka memberikan izin administratif untuk apa pun yang bukan dari induk.

Apakah ada cara agar saya dapat membuka file .pkg secara manual dan mengeluarkan aplikasi? Ada PackageMaker di Alat Pengembang, tetapi sepertinya tidak melakukannya (itu memang menghasilkan beberapa output yang membuat saya berpikir bahwa sebenarnya tidak ada skrip atau potongan lain di installer, hanya aplikasi).

Thilo
sumber
2
Coba undkg .
lhf

Jawaban:

67

Jika Anda mengklik kanan itu, dan klik Tampilkan Paket Isi Anda akan mendapatkan beberapa file di folder Konten. (Catatan: jika Anda tidak melihat Tampilkan Isi Paket, Anda perlu membuka Terminal.app dan menjalankan pkgutil --expand mystubbornpackage.pkg path/to/expand)

Salah satunya adalah file BOM (bill of material) yang akan berubah menjadi tanda terima yang dapat Anda gunakan untuk menghapus instalasi aplikasi. File ini berisi manifes segala sesuatu yang paket akan instal dan ke mana; untuk membaca file ini, gunakan perintah lsbom .

Sebagian besar paket (saya menggunakan Office 2008 di sini) juga memiliki file Archive.pax.gz, ini berisi semua yang Installer akan pindah ke berbagai folder seperti yang diperintahkan dalam file BOM. Sebagian besar aplikasi tampaknya memiliki .app dalam arsip ini, meskipun menyeret ke / Aplikasi mungkin meninggalkannya tanpa kerangka kerja yang harus dijalankan; jadi Anda harus mencari tahu file mana yang dibutuhkan dan di mana ia membutuhkannya agar bisa berfungsi.

Selain itu, semua paket dapat mencatat pesan, jika Anda menekan Cmd-L (atau memilih opsi Installer Log dari menu Window , Anda dapat melihatnya saat dibuat. Ini mungkin memberi Anda gambaran tentang hal-hal tambahan apa yang sedang dipasang, di paling tidak itu beberapa informasi lebih lanjut jika Anda tidak percaya paket.

Mathew Hall
sumber
3
Saya tidak mendapatkan "Tampilkan Isi Paket" di menu klik kanan.
Thilo
3
@Thilo Jika Anda tidak mendapatkan opsi untuk "Tampilkan Isi Paket" maka file pkg dibuat sebagai file datar. Apple memperkenalkan pkg gaya datar beberapa tahun yang lalu
nama pengguna
@namapengguna: Jadi bagaimana cara saya membukanya?
Thilo
10
pkgutilakan melakukan itu. Anda dapat mengembangkannya menggunakan pkgutil --expand file.pkg path_to_expanddan itu akan mengubahnya menjadi paket gaya direktori.
Mathew Hall
@namapengguna, Apa artinya "flat"?
Pacerier
34

Selain apa yang dikatakan Matthew Hall, Anda juga dapat menekan Cmd-I di aplikasi Installer untuk melihat file apa yang akan diinstal oleh installer dan di mana.

CajunLuke
sumber
3
+1. Dengan ini saya dapat dengan cepat memverifikasi bahwa hanya ada aplikasi biner di sana, tidak ada hal lain di seluruh sistem.
Thilo
7

Jika Anda tidak cukup mempercayai penginstal untuk memberikan izin administratif untuk menginstal, lalu mengapa Anda mempercayai biner di / Aplikasi?

Pacifist akan membiarkan Anda melihat file paket. Ini tidak selalu membiarkan Anda "mengeluarkan biner".

ghoppe
sumber
1
Saya juga tidak mempercayai binernya. Saya ingin tidak pernah memberikan izin administratif (yang seharusnya tidak perlu).
Thilo
3
Selama Anda tidak menjalankan aplikasi dari pengguna mana pun yang memiliki hak admin, kepercayaan Anda akan ditegakkan. Jangan lupa bahwa bahkan aplikasi tingkat pengguna dapat membuat permintaan dari proses tingkat admin sehingga banyak pekerjaan untuk menjalankan aplikasi yang sebenarnya tidak Anda percayai.
bmike
@ ghoppe, Itu karena default terkadang tidak dioptimalkan untuk pengguna tetapi pembuat aplikasi. Misalnya alih-alih menginstal semua sampah instalasi yang datang secara default, saya dapat memilih untuk hanya mengambil file yang penting. Misalnya saat mengunduh Mysql / Java / dll.
Pacerier
4

Atau Anda dapat mencoba,

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

ATAU

installer -pkg ~/Downloads/packagename.pkg -target ~/Applications/
karmatis
sumber
Sayangnya itu tidak berhasil. Masih bersikeras untuk "Menginstal di jalur dasar /" dan kemudian meminta kata sandi admin.
Thilo
1
Dimungkinkan untuk menginstal ke disk image yang dibuat dengan sesuatu seperti hdiutil create -size 200m -fs HFS+ -volname Scratch scratch.dmgdan kemudian menyalin file ke lokasi yang Anda inginkan. Sayangnya Anda masih membutuhkan sudo untuk menjalankan installer.
mjs
2
  1. Setelah Anda berhasil membuka paket, cari file Archive.pax.gz yang disebutkan sebelumnya.

  2. Buat folder kosong baru di desktop Anda dan beri nama apa pun yang Anda inginkan. Saya biasanya menamai mereka "xxxx" atau "zzzz" dll untuk memudahkan pengetikan nanti.

  3. Opsi-seret salinan file Archive.pax.gz ke folder baru "xxxx" di desktop Anda.

    Jika file berada di dalam media baca-saja, Anda cukup menyeretnya ke folder "xxxx" Anda tanpa kunci Opsi untuk membuat salinan.

  4. Sekarang buka Terminal.app dan pada baris perintah navigasikan ke direktori "xxxx" baru Anda dan daftarkan konten direktori untuk mengonfirmasi bahwa file Archive.pax.gz Anda ada di sana:

    cd ~/Desktop/xxxx
    ls -al
    
  5. Sekarang ada dua perintah sederhana untuk dimasukkan:

    gunzip -v Archive.pax.gz
    

    Gzip akan memberi tahu Anda bahwa ia telah mengganti "Archive.pax.gz" dengan "Archive.pax") Sekarang daftar lagi isi direktori untuk mengonfirmasi hal ini.

    pax -r -f Archive.pax
    

    (Anda harus berpisah -rdan -f, karena -rftidak akan berfungsi)

  6. Akhirnya, daftarkan kembali isi direktori dengan ls -al. Selain file Archive.pax Anda, Anda sekarang akan melihat hierarki direktori yang mungkin mengandung satu atau lebih direktori.

    File-file dalam hierarki direktori akan menggambarkan kepada Anda di mana installer OS X akan menginstal file pada sistem Anda seolah-olah direktori "xxxx" Anda adalah direktori root "/".

  7. Anda kemudian dapat secara manual menyalin file-file itu ke tujuan mereka jika Anda mau.

stargood
sumber
3
Dengan kata lain cd ~/Desktop; cp Package.pkg/Contents/Archive.pax.gz .; gunzip -v Archive.pax.gz; pax -r -f Archive.pax. Anda tidak perlu untuk menjelaskan segala sesuatu di yang tingkat detail.
Lri
6
Lri, saya memberikan jumlah detail sehingga pengguna di tingkat keahlian apa pun akan dapat mengikutinya dan menjadi sukses. Memang, versi samar Anda akan mencapai hasil yang sama. Namun, pengguna lain yang membaca ini di masa depan yang mungkin tidak akrab dengan baris perintah mungkin akan hilang harapan.
stargood
1

pkgutil --expand gagal bagi saya dengan kesalahan berikut:

Error encountered while creating .. Error 17: File exists

Tapi saya berhasil mengekstrak file dengan xar:

xar -xvf foo.pkg

gregschlom
sumber
1
ini bekerja untuk saya. tetapi ternyata, jika Anda memberikan pkgutil direktori tidak ada sebagai tujuan yang membuat 17 kesalahan hilang.
Michael
1

Alat terbaik untuk memeriksa file paket adalah Paket Mencurigakan . Ini juga memungkinkan Anda untuk menyalin file dari paket.

Tidak hanya menyediakan semua informasi yang Anda butuhkan di aplikasi, tetapi juga menginstal plug Quick Look jadi hanya memilih file paket dan menekan spasi akan membuka jendela dengan informasi yang paling penting.

Tony Williams
sumber
0

The Unarchiver dapat melakukan hal ini; itu akan melakukan hal yang sama seperti pkgutil --expandtetapi menggunakan drag-and-drop. Ini pengganti yang lebih baik untuk Apple's Archive Utility.app lagian.

Rekomendasi Quinn
sumber
0

UnArchiver melakukan trik.

Instal UnArchiver, buka UnArchiver; sementara terbuka - klik dua kali pada sial ituMAMP_MAMP_3.5.pkg

Ikuti langkah-langkah untuk menginstal MAMP.

Bll
sumber