Як видалити будь-який файл пакета Apple pkg?


50

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

Зокрема, я встановив пакет PowerPC MySQL 5.4.1 на Intel MacBook, і я хотів би чітко змінити це, відновлення встановленої системи 5.1 x86, яку я бачу, все ще існує, але зараз не працює належним чином.

Відповіді:


83

https://wincent.com/wiki/Uninstalling_packages_(.pkg_files)_on_Mac_OS_X описує, як видалити .pkg за допомогою рідного 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

Зайве говорити, що при видаленні файлів з привілеями root, слід завжди бути дуже обережними. Зокрема, майте на увазі, що деякі пакети можуть оновлювати спільні компоненти системи, тому видалення їх може фактично зламати вашу систему, видаливши необхідний компонент.

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

Мабуть, колись був --unlinkдоступний варіант pkgutil, але про Лева він не згадується на сторінці людини. Можливо, її зняли, оскільки це було визнано занадто небезпечним.

Після видалення файлів ви можете видалити квитанцію за допомогою:

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

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

18
НЕ РАБИТИ sudo rm -ir ЧАСТИНА. Список включає батьківські каталоги! Тож якщо pkg встановив щось у / usr / ..., ви видалите ALL / usr /
FiloSottile

2
Я змінив команду для видалення каталогів для використання rmdir(яка не видаляє не-порожні-каталоги) і використовує tail -rдля їх переліку в кращому порядку.
brablc

1
За іронією долі, при використанні pgkutil я знайшов uninstaller.pl, витягнутий, який я міг би використати. Ідеально!
cmroanirgo

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

19

Вбудована в систему немає можливості видаляти файли за допомогою деінсталятора, тому ви можете зробити видалення самостійно або видалити файли вручну.

Найкращий спосіб визначити, які файли були встановлені - це, .pkgякщо можливо, захопити оригінал . Якщо це неможливо, ви також можете скористатися квитанціями, які можна знайти на /Library/Receipts. Ваша найбільша проблема полягає в тому, що ви маєте справу з файлом, .mpkgякий містить декілька .pkgфайлів, тому що вам доведеться знайти всі окремі .pkgфайли у цій папці (на щастя, це не так складно при сортування за датою).

Після того, як у вас є .pkgфайл (квитанція або файл повного встановлення), ви можете скористатися утилітою для створення або видалення файлів, або пошуку файлів, щоб ви могли їх видалити вручну:

Видалення

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

Вручну

Використовуючи таку програму, як Pacifist або плагін QuickLook, наприклад, підозрілий пакет, ви можете переглянути, які файли встановлені та в якому місці. За допомогою цього списку ви можете вручну перейти до цих папок і видалити файли. Я використовував цей метод особисто безлічі разів, перш ніж я виявив InstallEase, але це все ще часто швидше, якщо встановлення не поширюється серед багатьох локацій.


Дякую, поки звичайні пакети 5,1 mysql залишили квитанцію, бета-версії 5,4 mysql-пакетів цього не зробили. Це трохи дивно.
dlamblin

4
Нічого собі, якби я знав це, я ніколи не встановив би це .pkgдля початку. yu Програми та функції 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 . Також на цьому сайті є стаття щодо цього; ось посилання: http://support.adobe.com/devsup/devsup.nsf/docs/52355.htm .

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


1

Я зробив оболонку srcipt

ви можете спробувати

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

Він показує демонстрацію .gif, ви можете бачити вихідний код, просто загортайте командний рядок brablc . Ви можете запустити його для пошуку інформації, ви також можете видалити apk. Це інтерактивне.


що воно робить?
Pierre.Vriens

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