Как удалить файл пакета Apple pkg?


51

Несмотря на мнения об обратном , не все пакеты установлены чисто в одном каталоге. Есть ли способ отменить процесс установки файла pkg, желательно с оригинальным пакетом (или из хранилища информации об установленных пакетах)?

В частности, я установил пакет PowerPC MySQL 5.4.1 на Intel MacBook и хотел бы полностью изменить это, восстановив установку 5.1 x86, которую я вижу, все еще там, но сейчас она не работает должным образом.

Ответы:


83

https://wincent.com/wiki/Uninstall_packages_(.pkg_files)_on_Mac_OS_X описывает, как удалить .pkg, используя native pkgutil.

Модифицированная выдержка

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

После визуальной проверки списка файлов вы можете сделать что-то вроде:

$ 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

Излишне говорить, что при удалении файлов с правами суперпользователя всегда следует соблюдать особую осторожность. В частности, имейте в виду, что некоторые пакеты могут обновлять общие системные компоненты, поэтому их удаление может фактически сломать вашу систему, удалив необходимый компонент.

Для небольших пакетов, вероятно, безопаснее просто вручную удалить файлы после визуальной проверки списка файлов пакета.

Очевидно, когда-то была --unlinkдоступна опция pkgutil, но на Lion она не упоминалась на странице руководства. Возможно это было удалено, потому что это было посчитано слишком опасным.

После удаления файлов вы можете удалить квитанцию ​​с помощью:

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

1
Я бы рекомендовал использовать rmdirвместо rm -r; можно также использовать tacили tail -rперевернуть список имен каталогов, чтобы они были удалены в правильном порядке
Сэм Мейсон,

18
Не запускайте часть sudo rm -ir. Список включает в себя родительские каталоги! Так что если pkg установил что-то в / usr / ... вы удалите ВСЕ / usr /
FiloSottile

2
Я изменил команду для удаления используемых каталогов rmdir(которая не удаляет не-пустые каталоги) и использует tail -rдля их перечисления в лучшем порядке.
Brablc

1
по иронии судьбы, при использовании pgkutil я обнаружил, что uninstaller.pl спрятан, и я могу его использовать. Отлично!
cmroanirgo

Одна вещь, которую pkgs не отслеживает, это символические ссылки, созданные pkgs. Возможно, что очистка пакета из вышеприведенных инструкций (или любого из методов здесь) оставит неработающие символические ссылки.
Джеймс МакМэхон

19

Встроенная в систему опция удаления файлов с помощью деинсталлятора отсутствует, поэтому вы можете сделать деинсталлятор самостоятельно или удалить файлы вручную.

Лучший способ определить, какие файлы были установлены, - это получить оригинал, .pkgесли это возможно. Если это невозможно, вы также можете использовать квитанции вместо /Library/Receipts. Ваша самая большая проблема, когда вы имеете дело с файлом, .mpkgкоторый содержит несколько .pkgфайлов, так как вам нужно будет найти все отдельные .pkgфайлы в этой папке (к счастью, это не так сложно при сортировке по дате).

Когда у вас есть .pkgфайл (квитанция или файл полной установки), вы можете использовать утилиту, чтобы создать деинсталлятор или найти файлы, чтобы вы могли удалить их вручную:

Uninstaller

Absolute Software InstallEase - бесплатная программа, которая может создавать деинсталляторы из существующих файлов .pkg. Создайте .pkgфайл для удаления (примечание: для создания .pkgфайла вам понадобятся инструменты разработчика Apple )

Вручную

Используя такую ​​программу, как Pacifist или плагин QuickLook, такой как Suspicious Package, вы можете посмотреть, какие файлы установлены и в каком месте. Используя этот список, вы можете вручную перейти к этим папкам и удалить файлы. Я лично использовал этот метод бесчисленное количество раз, прежде чем обнаружил InstallEase, но он все еще часто быстрее, если установка не распространяется во многих местах.


Спасибо, в то время как обычные пакеты mysql 5.1 оставили квитанцию, пакеты beta 5.4 mysql этого не сделали. Это немного странно.
Дламблин

4
Ничего себе, если бы я знал это, я бы никогда не установил его .pkgс самого начала. Ю нет программ и возможностей OS X?
NobleUplift

10

Вы также можете удалить пакеты .pkg с помощью UninstallPKG ( http://www.corecode.at/uninstallpkg/ )

[полное раскрытие: да, я автор]


Стоит отметить, что это не бесплатно, но включает в себя бесплатную пробную версию
Ron E

1

Вы можете попробовать предложения с этого сайта: http://www.entropy.ch/software/macosx/mysql/remove-old-mysql.html . Кроме того, на сайте поддержки Adobe есть статья об этом; вот ссылка: http://support.adobe.com/devsup/devsup.nsf/docs/52355.htm .

Кроме того, приложения, которые обычно имеют файл pkg в dmg, обычно также имеют другой pkg, который используется для удаления. Я не уверен, правда ли это, но я хотел, чтобы вы сохранили исходный файл dmg.


1

Я сделал снаряд

можешь попробовать

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

Он показывает демо .gif, вы можете увидеть исходный код, просто оберните командную строку brablc . Вы можете запустить его для поиска информации, вы также можете удалить apk. Это интерактивно.


Что это делает?
Pierre.Vriens

Я показываю демоверсию .gif, вы можете увидеть исходный код, просто оберните командную строку brablc . Вы можете запустить его для поиска информации, вы также можете удалить apk. это интерактивно. :)
rToday Lin
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.