Làm cách nào để gỡ cài đặt bất kỳ tệp Gói pkg nào của Apple?


50

Mặc dù có ý kiến ngược lại , không phải tất cả các gói được cài đặt sạch sẽ chỉ trong một thư mục. Có cách nào để đảo ngược quá trình cài đặt của tệp pkg, tốt nhất là với gói ban đầu (hoặc từ kho lưu trữ thông tin về các gói đã cài đặt) không?

Cụ thể, tôi đã cài đặt gói PowerPC MySQL 5.4.1 trên MacBook intel và muốn hoàn toàn đảo ngược điều đó, khôi phục cài đặt 5.1 x86 mà tôi có thể thấy vẫn còn đó, nhưng hiện không hoạt động bình thường.

Câu trả lời:


83

https://wincent.com/wiki/Uninstalling_packages_(.pkg_files)_on_Mac_OS_X mô tả cách gỡ cài đặt .pkg bằng cách sử dụng nguồn gốc pkgutil.

Trích đoạn sửa đổi

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

Sau khi kiểm tra trực quan danh sách các tập tin, bạn có thể làm một cái gì đó như:

$ 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

Không cần phải nói, phải luôn luôn cẩn thận khi xóa các tệp có quyền root. Đặc biệt, lưu ý rằng một số gói có thể cập nhật các thành phần hệ thống dùng chung, vì vậy việc gỡ cài đặt chúng thực sự có thể phá vỡ hệ thống của bạn bằng cách xóa một thành phần cần thiết.

Đối với các gói nhỏ hơn có thể an toàn hơn khi chỉ xóa các tệp theo cách thủ công sau khi kiểm tra trực quan danh sách tệp gói.

Rõ ràng, đã từng có một --unlinktùy chọn có sẵn pkgutil, nhưng đối với Lion, nó không được đề cập trong trang người đàn ông. Có lẽ nó đã được gỡ bỏ vì nó được coi là quá nguy hiểm.

Khi bạn đã gỡ cài đặt các tệp, bạn có thể xóa biên nhận bằng:

$ sudo pkgutil --forget the-package-name.pkg

1
Tôi khuyên bạn nên sử dụng rmdirthay vì rm -r; người ta cũng có thể sử dụng tachoặc tail -rđảo ngược danh sách tên thư mục để chúng bị xóa theo đúng thứ tự
Sam Mason

18
ĐỪNG CHẠY PHẦN sudo rm -ir PHẦN. Danh sách bao gồm các thư mục cha! Vì vậy, nếu pkg đã cài đặt một cái gì đó trong / usr / ... bạn sẽ xóa TẤT CẢ / usr /
FiloSottile

2
Tôi đã thay đổi lệnh xóa các thư mục để sử dụng rmdir(không xóa các thư mục không trống) và sử dụng tail -rđể liệt kê chúng theo thứ tự tốt hơn.
brablc

1
trớ trêu thay, khi sử dụng pgkutil tôi đã tìm thấy một trình gỡ cài đặt. Đã giấu đi mà tôi có thể sử dụng. Hoàn hảo!
cmroanirgo

Một điều mà pkgs dường như không theo dõi được là các liên kết tượng trưng được tạo bởi pkgs. Có thể việc dọn dẹp gói từ các hướng dẫn ở trên (hoặc bất kỳ phương pháp nào ở đây) sẽ để lại các liên kết tượng trưng bị hỏng.
James McMahon

19

Được tích hợp vào hệ thống, không có tùy chọn để gỡ cài đặt các tệp bằng trình gỡ cài đặt để bạn có thể tự mình gỡ cài đặt hoặc xóa các tệp theo cách thủ công.

Phương pháp tốt nhất để xác định tập tin nào đã được cài đặt là giữ bản gốc .pkgnếu có thể. Nếu điều này là không thể, bạn cũng có thể sử dụng biên lai thay thế được tìm thấy tại /Library/Receipts. Vấn đề lớn nhất của bạn là khi bạn đang xử lý một tệp .mpkgchứa nhiều .pkgtệp vì bạn sẽ phải tìm tất cả các .pkgtệp riêng biệt trong thư mục đó (rất may không khó khi sắp xếp theo ngày).

Khi bạn có .pkgtệp (Biên nhận hoặc tệp cài đặt đầy đủ), sau đó bạn có thể sử dụng tiện ích để tạo trình gỡ cài đặt hoặc tìm tệp để bạn có thể xóa chúng theo cách thủ công:

Trình gỡ cài đặt

Phần mềm tuyệt đối InstallEase là một chương trình miễn phí có thể tạo trình gỡ cài đặt từ các tệp .pkg hiện có. Tạo .pkgtệp gỡ cài đặt (lưu ý: Bạn sẽ cần Công cụ dành cho nhà phát triển của Apple được cài đặt để thực sự tạo .pkgtệp)

Thủ công

Sử dụng một chương trình như Pacifist hoặc plugin QuickLook như Gói đáng ngờ, bạn có thể xem các tệp được cài đặt và tại vị trí nào. Sử dụng danh sách đó, sau đó bạn có thể điều hướng thủ công đến các thư mục đó và xóa các tệp. Tôi đã sử dụng phương pháp này cá nhân vô số lần trước khi tôi phát hiện ra InstallEase, nhưng điều này vẫn thường nhanh hơn nếu cài đặt không trải rộng giữa nhiều địa điểm.


Cảm ơn, trong khi các gói mysql 5.1 thông thường để lại một biên nhận, các gói mysql beta 5.4 đã không. Điều đó hơi kỳ quặc.
dlamblin

4
Wow, nếu tôi biết điều này tôi sẽ không bao giờ cài đặt .pkgđể bắt đầu. Bạn không có Chương trình và Tính năng OS X?
NobleUplift


1

Bạn có thể thử các đề xuất từ ​​trang web này: http://www.entropy.ch/software/macosx/mysql/remove-old-mysql.html . Ngoài ra, có một bài viết liên quan đến điều này trên trang web hỗ trợ Adobe; đây là đường dẫn: http://support.adobe.com/devsup/devsup.nsf/docs/52355.htm .

Ngoài ra, các ứng dụng thường có tệp pkg trong dmg thường cũng có một pkg khác được sử dụng để gỡ cài đặt. Tôi không chắc điều này có đúng ở đây không, nhưng tôi muốn cho bạn biết để giữ tệp dmg gốc.


1

Tôi đã tạo một srcipt vỏ

bạn có thể thử nó

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

Nó hiển thị bản demo .gif, bạn có thể xem mã nguồn, chỉ cần bọc dòng lệnh của brablc . Bạn có thể chạy nó để tìm kiếm thông tin, bạn cũng có thể xóa apk. Đó là tương tác.


nó làm gì?
Pierre.Vriens

Tôi hiển thị bản demo .gif, bạn có thể thấy mã nguồn, chỉ cần bọc dòng lệnh của brablc . bạn có thể chạy nó để tìm kiếm thông tin, bạn cũng có thể xóa apk. nó là tương tác. :)
rToday Lin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.