Jak odinstalować dowolny plik pakietu Apple pkg?


50

Pomimo opinie na Przeciwnie , nie wszystkie pakiety są zainstalowane czysto tylko w jednym katalogu. Czy istnieje sposób na odwrócenie procesu instalacji pliku pkg, najlepiej z oryginalnym pakietem (lub z repozytorium informacji o zainstalowanych pakietach)?

Konkretnie zainstalowałem pakiet PowerPC MySQL 5.4.1 na MacBooku Intel i chciałbym całkowicie to odwrócić, odzyskując instalację 5.1 x86, którą widzę, nadal tam jest, ale teraz nie działa poprawnie.

Odpowiedzi:


83

https://wincent.com/wiki/Uninstalling_packages_(.pkg_files)_on_Mac_OS_X opisuje jak odinstalować .pkg przy użyciu natywnego pkgutil.

Zmodyfikowany fragment

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

Po wizualnym przejrzeniu listy plików możesz zrobić coś takiego:

$ 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

Nie trzeba dodawać, że należy zawsze zachować szczególną ostrożność podczas usuwania plików z uprawnieniami administratora. W szczególności pamiętaj, że niektóre pakiety mogą aktualizować współużytkowane komponenty systemu, więc ich odinstalowanie może faktycznie uszkodzić system, usuwając niezbędny komponent.

W przypadku mniejszych pakietów prawdopodobnie bezpieczniej jest po prostu ręcznie usunąć pliki po wizualnym sprawdzeniu listy plików pakietu.

Najwyraźniej kiedyś była --unlinkdostępna opcja pkgutil, ale w Lionie nie jest wspomniana na stronie man. Być może został usunięty, ponieważ uznano go za zbyt niebezpieczny.

Po odinstalowaniu plików możesz usunąć pokwitowanie za pomocą:

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

1
Polecam używać rmdirzamiast rm -r; można również użyć taclub tail -rodwrócić listę nazw katalogów, aby zostały usunięte we właściwej kolejności
Sam Mason,

18
NIE URUCHAMIAJ sudo rm -ir PART. Lista zawiera katalogi nadrzędne! Więc jeśli pkg zainstalował coś w / usr / ... usuniesz WSZYSTKIE / usr /
FiloSottile

2
Zmieniłem polecenie usuwania katalogów, które mają być używane rmdir(co nie usuwa niepustych katalogów) i używa ich tail -rdo wyświetlania w lepszej kolejności.
brablc

1
jak na ironię, podczas korzystania z pgkutil znalazłem deinstalator.pl schowany, że mógłbym użyć. Doskonały!
cmroanirgo

Jedną z rzeczy, których pkgs nie śledzą, są dowiązania symboliczne utworzone przez pkgs. Możliwe, że wyczyszczenie pakietu z powyższych instrukcji (lub dowolnej z metod tutaj) pozostawi po sobie zepsute dowiązania symboliczne.
James McMahon,

19

Wbudowane w system nie ma opcji odinstalowywania plików za pomocą dezinstalatora, więc możesz samodzielnie wykonać deinstalator lub ręcznie usunąć pliki.

Najlepszą metodą ustalenia, które pliki zostały zainstalowane, jest uzyskanie oryginału, .pkgjeśli to możliwe. Jeśli nie jest to możliwe, możesz również użyć paragonów znajdujących się na stronie /Library/Receipts. Największym problemem jest to, że masz do czynienia z .mpkgwieloma .pkgplikami, ponieważ wtedy będziesz musiał znaleźć wszystkie oddzielne .pkgpliki w tym folderze (na szczęście nie jest to trudne, jeśli posortujesz według daty).

Po uzyskaniu .pkgpliku (Potwierdzenie lub plik pełnej instalacji) możesz użyć narzędzia do utworzenia deinstalatora lub znalezienia plików, aby można je było usunąć ręcznie:

Deinstalator

Absolute Software InstallEase to darmowy program, który może tworzyć dezinstalatory z istniejących plików .pkg. Utwórz .pkgplik dezinstalatora (uwaga: aby faktycznie utworzyć .pkgplik, musisz zainstalować narzędzia programistyczne Apple )

Ręcznie

Za pomocą programu takiego jak Pacifist lub wtyczki QuickLook, takiej jak Suspicious Package , możesz zobaczyć, jakie pliki są zainstalowane i w jakiej lokalizacji. Za pomocą tej listy możesz następnie ręcznie przejść do tych folderów i usunąć pliki. Użyłem tej metody osobiście niezliczoną ilość razy, zanim odkryłem InstallEase, ale nadal jest to często szybsze, jeśli instalacja nie jest rozłożona na wiele lokalizacji.


Dzięki, podczas gdy zwykłe pakiety 5.1 mysql pozostawiły pokwitowanie, pakiety beta 5.4 mysql nie. To trochę dziwne.
dlamblin

4
Wow, gdybym to wiedział, nigdy bym nie zainstalował .pkg. nie masz programów i funkcji OS X?
NobleUplift


1

Możesz wypróbować sugestie z tej strony: http://www.entropy.ch/software/macosx/mysql/remove-old-mysql.html . Jest też artykuł na ten temat na stronie wsparcia Adobe; Oto link: http://support.adobe.com/devsup/devsup.nsf/docs/52355.htm .

Ponadto aplikacje, które zwykle mają plik pkg w pliku dmg, zwykle mają również inny pakiet pkg, który służy do odinstalowania. Nie jestem pewien, czy jest to prawda tutaj, ale chciałem poinformować Cię, aby zachować oryginalny plik dmg.


1

Zrobiłem srcipt z muszli

możesz tego spróbować

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

Pokazuje demo .gif, możesz zobaczyć kod źródłowy, po prostu zawiń linię poleceń brablc . Możesz go uruchomić, aby wyszukać informacje, możesz także usunąć apk. Jest interaktywny.


co to robi?
Pierre.Vriens

Pokazuję demo .gif, możesz zobaczyć kod źródłowy, po prostu zawiń linię poleceń brablc . możesz go uruchomić, aby wyszukać informacje, możesz także usunąć apk. jest interaktywny. :)
rToday Lin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.