Bagaimana cara mencopot file Apple pkg Package?

51

Terlepas dari pendapat yang bertentangan , tidak semua paket diinstal dengan bersih hanya dalam satu direktori. Apakah ada cara untuk membalikkan proses instalasi file pkg, lebih disukai dengan paket asli (atau dari repositori informasi tentang paket yang diinstal)?

Secara khusus saya telah menginstal paket PowerPC MySQL 5.4.1 pada intel MacBook, dan ingin membalikkan hal itu, memulihkan pemasangan 5.1 x86 yang dapat saya lihat masih ada di sana, tetapi sekarang tidak berfungsi dengan baik.

dlamblin
sumber

Jawaban:

83

https://wincent.com/wiki/Uninstalling_packages_(.pkg_files)_on_Mac_OS_X menjelaskan cara menghapus instalan .pkg menggunakan asli pkgutil.

Kutipan yang dimodifikasi

$ pkgutil --pkgs # list all installed packages
$ pkgutil --files the-package-name.pkg # list installed files

Setelah secara visual memeriksa daftar file Anda dapat melakukan sesuatu seperti:

$ pkgutil --pkg-info the-package-name.pkg # check the location
$ cd / # assuming the package is rooted at /...
$ pkgutil --only-files --files the-package-name.pkg | tr '\n' '\0' | xargs -n 1 -0 sudo rm -f
$ pkgutil --only-dirs --files the-package-name.pkg | tail -r | tr '\n' '\0' | xargs -n 1 -0 sudo rmdir

Tidak perlu dikatakan, kehati-hatian harus selalu diambil ketika menghapus file dengan hak akses root. Khususnya, perlu diketahui bahwa beberapa paket dapat memperbarui komponen sistem yang dibagikan, sehingga mencopotnya benar-benar dapat merusak sistem Anda dengan menghapus komponen yang diperlukan.

Untuk paket yang lebih kecil mungkin lebih aman untuk menghapus file secara manual setelah memeriksa daftar file paket secara visual.

Rupanya, pernah ada --unlinkopsi yang tersedia di pkgutil, tetapi pada Lion tidak disebutkan di halaman manual. Mungkin sudah dihapus karena dianggap terlalu berbahaya.

Setelah Anda menghapus instalan file, Anda dapat menghapus tanda terima dengan:

$ sudo pkgutil --forget the-package-name.pkg
brablc
sumber
1
Saya akan merekomendasikan menggunakan rmdirdaripada rm -r; kita juga bisa menggunakan tacatau tail -rmembalikkan daftar nama direktori sehingga dihapus dalam urutan yang benar
Sam Mason
18
JANGAN MENJALANKAN sudo rm -ir BAGIANnya. Daftar ini termasuk direktori induk! Jadi jika pkg memasang sesuatu di / usr / ... Anda akan menghapus ALL / usr /
FiloSottile
2
Saya telah mengubah perintah untuk menghapus direktori yang akan digunakan rmdir(yang tidak menghapus direktori yang tidak kosong) dan menggunakannya tail -runtuk membuat daftar dengan urutan yang lebih baik.
brablc
1
Ironisnya, ketika menggunakan pgkutil saya menemukan uninstaller.pl tersimpan yang bisa saya gunakan. Sempurna!
cmroanirgo
Satu hal yang sepertinya tidak dicatat oleh pkg adalah symlink yang dibuat oleh pkg. Ada kemungkinan bahwa membersihkan paket dari instruksi di atas (atau salah satu metode di sini) akan meninggalkan symlink yang rusak.
James McMahon
19

Dibangun di dalam sistem tidak ada opsi untuk menghapus file menggunakan uninstaller sehingga Anda dapat membuat uninstaller sendiri atau menghapus file secara manual.

Metode terbaik untuk menentukan file apa yang telah diinstal adalah untuk mendapatkan yang asli .pkgjika memungkinkan. Jika ini tidak memungkinkan, Anda juga dapat menggunakan tanda terima yang ditemukan di /Library/Receipts. Masalah terbesar Anda adalah ketika Anda berurusan dengan file .mpkgyang berisi banyak .pkgfile karena Anda kemudian harus menemukan semua .pkgfile yang terpisah di folder itu (untungnya tidak sulit ketika diurutkan berdasarkan tanggal).

Setelah Anda memiliki .pkgfile (Kwitansi atau file instal lengkap) Anda kemudian dapat menggunakan utilitas untuk membuat uninstaller atau menemukan file sehingga Anda dapat menghapusnya secara manual:

Penghapus Instalasi

Absolute Software InstallEase adalah program gratis yang dapat membuat uninstaller dari file .pkg yang ada. Buat .pkgfile uninstaller (catatan: Anda harus menginstal Alat Pengembang Apple untuk benar-benar membuat .pkgfile)

Secara manual

Menggunakan program seperti Pacifist atau plugin QuickLook seperti Paket Mencurigakan Anda dapat melihat file apa yang diinstal dan di lokasi apa. Dengan menggunakan daftar itu, Anda kemudian dapat menavigasi secara manual ke folder itu dan menghapus file. Saya telah menggunakan metode ini secara pribadi berkali-kali sebelum saya menemukan InstallEase, tetapi ini masih sering lebih cepat jika pemasangannya tidak tersebar di banyak lokasi.

Chealion
sumber
Terima kasih, sementara paket mysql 5.1 biasa tidak memberikan tanda terima, paket mysql beta 5.4 tidak. Itu agak aneh.
dlamblin
4
Wow, jika saya tahu ini saya tidak akan pernah menginstal .pkguntuk memulai. yu tidak ada Program dan Fitur OS X?
NobleUplift
10

Anda juga dapat menghapus paket .pkg dengan UninstallPKG ( http://www.corecode.at/uninstallpkg/ )

[pengungkapan penuh: ya saya penulisnya]

pengguna1259710
sumber
Perlu dicatat bahwa ini tidak gratis tetapi termasuk uji coba gratis
Ron E
1

Anda dapat mencoba saran dari situs ini: http://www.entropy.ch/software/macosx/mysql/remove-old-mysql.html . Juga, ada artikel tentang ini di situs dukungan Adobe; inilah tautannya: http://support.adobe.com/devsup/devsup.nsf/docs/52355.htm .

Selain itu, aplikasi yang biasanya memiliki file pkg di dmg biasanya juga memiliki pkg lain yang digunakan untuk menghapus instalan. Saya tidak yakin apakah ini benar di sini, tetapi saya ingin memberi tahu Anda untuk menyimpan file dmg asli.

alex
sumber
1

Saya membuat shell srcipt

kamu bisa mencobanya

https://github.com/iamrToday/pkg-remove

Ini menunjukkan demo .gif, Anda dapat melihat kode sumber, cukup bungkus baris perintah brablc . Anda dapat menjalankannya untuk mencari informasi, Anda juga dapat menghapus apk. Ini interaktif.

4 Hari ini Lin
sumber
apa fungsinya?
Pierre.Vriens
Saya menunjukkan demo .gif, Anda dapat melihat kode sumber, cukup bungkus baris perintah brablc . Anda dapat menjalankannya untuk mencari informasi, Anda juga dapat menghapus apk. ini interaktif. :)
rToday Lin