Bir Mac uygulamasını kaldırmanın üç yolu ve her birinin geride bıraktığı
Çöp Kutusu'na sürükle. Sistemde hazır, ücretsiz ve uygulama paketini
gerçekten kaldırıyor. Kaldırmadığı şey, uygulamanın kendi dışına yazdığı her
şey: tercihler, önbellekler, container klasörleri, kaydedilmiş pencere durumu,
launch agent'lar, kurulum makbuzları ve Sistem Ayarları'nda Gizlilik ve Güvenlik
altında duran kayıtlar. Sonuncular için macOS sana hiçbir düğme vermiyor.
Onları temizleyen araç olan tccutil, uygulamayı LaunchServices üzerinden
çözüyor; yani paket Çöp Kutusu'na gittiği anda "No such bundle identifier"
diyor ve verilmiş izinler izin veritabanında sonsuza kadar kalıyor. Geçen yıl
sildiğin uygulamaların hâlâ Erişilebilirlik listesinde durmasının sebebi bu.
Uygulamanın kendi kaldırıcısı. Böyle bir şey geliyorsa - Adobe, Microsoft, çoğu VPN istemcisi - doğru cevap odur, çünkü neyi nereye koyduğunu üretici bilir. Çoğu uygulamada yok.
Ayrı bir kaldırma uygulaması. AppCleaner bu işi yıllardır ücretsiz
yapıyor ve istediğin şey paket artı ~/Library içindeki bariz klasörlerse
yeterli; Pearcleaner aynı işin açık kaynaklı yorumu. Unroot
daha dar bir sorunun etrafında kurulu: ne bulabiliriz değil, neyi
kanıtlayabiliriz ve neyi geri koyabiliriz. Aşağıdaki her şey yayınlanan sürümde
var.
Nerelere bakıyor ve her satır neden eşleştiğini neden yazıyor
Bir tarama 58 konumu okuyor. Tahmin edeceklerin var (Application Support,
Preferences, Caches, Containers, Group Containers, Saved Application State) ve
etmeyeceklerin: HTTPStorages, WebKit, Cookies, /var/folders altındaki
kullanıcıya özel ağaçlar, ses eklentisi kökleri, QuickLook üreticileri. Ev
klasörünün dışında /Library/LaunchDaemons, /Library/PrivilegedHelperTools,
/var/db/receipts ve /Users/Shared okunuyor. Birkaçı özel okunuyor:
Application Support bir seviye daha derin, çünkü üreticiler iç içe yerleşiyor ve
önerilmesi gereken şey iç klasör - her kardeş ürünü de beraberinde götürecek
üretici klasörü değil; launch agent plist'leri ise dosya adına değil Label ve
ProgramArguments alanlarına bakılarak eşleşiyor, çünkü üreticiler dosyayı
uygulamanın değil daemon'ın adıyla adlandırıyor.
Sonra eşleştirme geliyor; bir kaldırma uygulaması ya burada güven kazanır ya da
burada veri yok eder. Birebir paket kimliği kesindir. Aynı kimliğin noktalarla
ayrılmış bütün bir parça olarak geçmesi de öyle - com.vendor.app.helper böyle
yakalanıyor; uygulamanın kendi imzasında beyan ettiği app group da öyle; ve
pkgutil'in bu paketi kurduğunu kanıtlayabildiği bir kurulum makbuzundaki yol
da. İsim eşleşmesi ise yalnızca ihtimaldir ve öyle derecelendiriliyor.
Asıl mesele o listede olmayan. İki parçalı üretici önekine ve imza ekibine dayanan kurallar vardı ve ikisi de silindi: ikisi birlikte iki gerçek taramada 45 kez eşleşti, her biri başka bir uygulamanın verisiydi ve bir kez bile gerçek bir kalıntı çıkmadı. Aynı geliştirici, aynı uygulama demek değil. En güçlü kural en sonda çalışıyor: bir dosya, kurulu başka bir uygulamanın kimliği altında duruyorsa o uygulamaya aittir, nokta. Ve her satır neden eşleştiğini gösteriyor; güvendiğin bir listeyle inanmak zorunda kaldığın bir liste arasındaki fark bu.
Üç seviye ve baştan işaretli gelenler

Bulgular kaldırılması güvenli, bakmaya değer ve hassas diye derecelendiriliyor ve bu derecelendirme tek bir soruya cevap veriyor: bu satır konusunda ne kadar dikkatli olmam gerekiyor. Güvenli, geri alınabilir, ev klasörünün içinde ve kesinlikle uygulamanın. Bakmaya değer, yalnızca isimle eşleşen ya da hâlâ kurulu bir uygulamayla paylaşılan şey. Hassas ise Anahtar Zinciri kayıtları, ayrıcalıklı yardımcılar, sistem eklentileri ve ev klasörünün dışındaki her şey - herkesin korktuğu hatayı üretebilecek tek seviye.
Sezgiye aykırı olan kısım baştan neyin işaretli geldiği, çünkü güvenli seviye değil. Bir satır, eşleşme kesin olduğunda işaretleniyor; geri alınabilir olduğunda değil. İkisini birbirine karıştırmak ürünü dürüst olmaktan çıkarmıştı: bir uygulamanın lisansı Anahtar Zinciri'nde durur, dolayısıyla o satırları işaretsiz bırakmak, varsayılan kaldırmanın uygulamayı sessizce etkin bırakması demekti. Hassas bir Anahtar Zinciri satırı işaretli gelir; yalnızca isimle eşleşen bir satır gelmez.
Aynı ekran diğer modu da taşıyor. Sıfırla, uygulamayı yerinde bırakıp
sakladığı her şeyi kaldırıyor - kurulum makbuzları hariç, çünkü hâlâ kurulu bir
paketi pkgutil'in unutması o paketin kendi güncelleyicisini bozuyor. Anahtar
Zinciri kayıtları bilerek kapsamda kalıyor: fabrika ayarlarına dönmüş bir
uygulama oturumu kapalı bir uygulamadır.
Hiçbir şey silinmiyor

Kaldırılan şeyler Çöp Kutusu'nun içindeki tarihli tek bir klasöre gidiyor -
Unroot - Spectacle - 2026-08-21 11-01-33 - ve her biri kendi numaralı
yuvasına, ki ~/Library/Preferences içindeki com.vendor.app.plist,
/Library/Preferences içindekinin üzerine sessizce yazmasın.
Dört yüz ayrı öğe yerine tek klasör olması kısmen okunabilirlik, kısmen de
yetenek meselesi: Finder'ın Geri Koy komutu bir gruptaki yalnızca ilk öğeyi geri
koyuyor ve programatik geri koymanın herkese açık bir API'si yok; yani bunun
üstüne kurulmuş bir geri alma, sistemin tutamayacağı bir söz olurdu. Dosyaların
yanında unroot-manifest.json duruyor: her öğenin nereden geldiğini yazan düz
bir liste. Geri Al'ın okuduğu şey o ve Unroot ortada olmasa bile okunabilir
kalıyor.
Bir kaldırmanın gerçekten kalıcı olan tek parçası var ve alt bar onu kırmızıyla sayıyor. Anahtar Zinciri kaydı bir dosya değil, dolayısıyla bir klasöre taşınamıyor; silmek uygulamanın oturumunu kapatıyor ve sakladığı lisansı da götürüyor. Onay sayfası bunları saymak yerine tek tek adlandırıyor, çünkü bir sayı onay değildir.
Çökmeden sağ çıkan bir geri alma
Manifest yalnızca başarılı olduğu gözlemlenen işlemleri kaydedebiliyor, yani ancak çalışma bittikten sonra yazılabiliyor - ve arada bir çökme, taşınmış dosyaları nereden geldikleri kayıtsız bırakırdı ki manifestin var olma sebebi tam olarak bu sözü tutmak. Bu yüzden hiçbir şey taşınmadan önce, planlanan her kaydın bir günlüğü aynı klasöre yazılıyor ve tamamlanan bir çalışma onu siliyor. Manifesti olmayan bir günlük böylece yarıda kalmış bir kaldırmanın imzası oluyor ve bir sonraki açılış manifesti ondan yeniden kuruyor: yalnızca dosyası gözle görülür biçimde yuvasında duran kayıtları tutarak.
Geri Al ise tersten bir tekrar oynatma. Özgün yolda artık başka bir şey varsa -
uygulamayı yeniden kurmuşsundur - geri koyma, üzerine yazmak yerine numaralı bir
kardeşe sapıyor, çünkü geri alma başarılı olmak için hiçbir şeyi yok etmemeli.
Launch görevleri yalnızca yerine konmuyor, yeniden başlatılıyor da: plist'i geri
koyup daemon'ı kapalı bırakmak dosyaları geri getirir ama davranışı sessizce
getirmez. İki yön de her şeyin yukarıda yanlış yapıldığını varsayan bir
politikadan geçiyor: /System, Anahtar Zinciri klasörleri, iCloud Drive ve
Belgeler, Masaüstü, İndirilenler, Resimler, Filmler ile Müzik klasörlerin ne
eşleşirse eşleşsin asla bir uç nokta olamıyor.
Geri Al'ın geri getirmediği tek adım izin sıfırlaması ve uygulama bunu dipnotta değil satırın üstünde söylüyor: gizlilik izinleri sıfırlanır, geri yüklenmez. Her uygulama bir dahaki ihtiyacında yeniden soruyor.
Bunların hiçbirinin son kullanma tarihi yok. Unroot'un yaptığı her kaldırma, tek bir ekranda, klasörünün tuttuğu yerle birlikte duruyor; iki ay önceki bir kaldırma tam olarak iki dakika öncekiyle aynı şekilde geri alınıyor. Hâlâ geri alınıp alınamayacağına da o sırada yazılmış bir işaret değil, diskin kendisi karar veriyor.
Her şeyi tutmanın bedeli, karantina klasörleriyle dolu bir Çöp Kutusu. Normal cevap onu boşaltmak; seçici olmak istersen Unroot tek bir klasörü istek üzerine siliyor. Uygulamada bir şeyi gerçekten silen tek yer burası, o yüzden çitle çevrili: yolun gerçekten kendi klasörlerinden biri olduğuna dair üç denetim ve sen açmadıkça kapalı duran otomatik bir süpürme.
Kimsenin elle temizleyemediği izin kayıtları
Sen hiçbir şeyi kaldırmadan önce Unroot izin veritabanını okuyor - salt okunur
ve zaten ~/Library'yi görmek için ihtiyaç duyduğu Tam Disk Erişimi ile - ve
uygulamanın nelere sahip olduğunu gösteriyor. Erişilebilirlik, Tam Disk Erişimi,
Ekran Kaydı, Girdi İzleme, Otomasyon ve yirmi beş kadar başka izin adlarıyla
çözülüyor, toplamda otuza yakın izin türü. Bunu neredeyse başka hiçbir şey
göstermiyor ve bir kaldırmada sıranın neden önemli olduğunun en ikna edici
kanıtı bu.
Çünkü önemli. Sıfırlamanın paket hâlâ diskteyken çalışması gerekiyor, bu yüzden paket en son taşınıyor: launch görevleri kapatıldıktan ve Anahtar Zinciri kayıtları silindikten sonra. Önce paketi kaldırmak tek yönlü hata ve kaldırılmış onca uygulamanın hâlâ Sistem Ayarları'nda dolaşmasının sebebi de bu.
Sonrasında rapor, araçların işini yaptığını varsaymak yerine veritabanını yeniden okuyor. macOS'in bazı Tam Disk Erişimi sıfırlamalarını reddettiği biliniyor; rapor ya izinlerin temizlendiğini doğrulanmış olarak söylüyor ya da hayatta kalanı adlandırıp elle temizlemeni istiyor.
Çalışan uygulamalar her şeyden önce ele alınıyor. Her birinden çıkması isteniyor ve reddederse sessiz bir zorla çıkıştansa sana bir karar düşüyor: zorla kapat ya da o uygulamayı atla ve bütün dosyalarına dokunma.
Yıllar önce sildiğin uygulamalar ve arkalarında çalışmaya devam edenler

Dar bir eşleştiricinin diğer yarısı, çoktan gitmiş uygulamalara ait kalıntıların ortaya çıkacak bir yerinin kalmaması. Bu yüzden onların kendi taraması var ve o tarama bilerek temkinli. Yalnızca kimlik biçimindeki şeyleri listeliyor - en az üç noktayla ayrılmış parçası olan ve boşluk içermeyen adlar - çünkü bir şirketin adını taşıyan klasör her şeye ait olabilir ve tahmin etmek, bir kaldırma uygulamasının dokunmaması gereken şeyi silme biçimidir.
Yalnızca önbellekler ve günlükler işaretli geliyor. Uygulama verileri ve ayarları gelmiyor ve ekran nedenini söylüyor: listedekilerin bir kısmı hâlâ kullandığın bir uygulamanın içindeki bir çatının yazdığı önbellek ve dışarıdan bakınca birebir aynı görünüyor. Bu liste bir başlangıç noktası, bir hüküm değil.
Artık bir dosya hareketsizdir; artık bir launch agent değildir. Yıllar önce
kaldırdığın bir uygulamanın Sistem Ayarları'nda hâlâ bir arka plan ögesi
bırakabilmesinin - ve Sistem Ayarları'nın onu kaldırmak için sana bir yol
vermemesinin - sebebi budur. Bu yüzden aynı fikir launchd'ye çevriliyor: tek bir
ekran, sorulmadan başlayan her şeyi listeliyor - launch agent'lar, daemon'lar ve
uygulamaların kendi paketlerinin içinden SMAppService ile kaydettiği giriş
görevleri - ve her birinin sahibini söylüyor.
Yalnızca programı kayıp olanlar toplu seçilebiliyor ve bu kısıtlama bir eksiklik
değil, tasarımın kendisi. com.docker.vmnetd gibi bir görev hâlâ kurulu bir
uygulamayla aynı üretici önekini paylaşıyor; onu öksüz değil ilişkili diye
derecelendirmek, tam olarak yaşayan bir şeyi "kaldırılması güvenli" başlıklı bir
listeden uzak tutmak için var. Çalıştıracak bir programı olan bir görev, adı ne
kadar terk edilmiş görünürse görünsün asla öksüz değildir.
Bilerek yapmadıkları
Tam Disk Erişimi gerekiyor ve elle açılması gerekiyor, çünkü macOS bir uygulamaya bunu isteme yolu bırakmıyor; o olmadan da tarama çalışıyor ama yalnızca ev klasörünün dışındaki konumları kapsıyor ve kısa bir listeyi temiz bir liste diye yutturmak yerine bunu söylüyor. Ev klasörünün dışındaki bir şeyi kaldırmak yönetici parolanı bir kez soruyor.
Bazı işleri baştan reddediyor: Apple'ın kendi yazılımını, kendisini ve sistem eklentilerini - sonuncular için "Unroot bunları kaldıramaz" başlıklı bir bölümde işi kendin nerede yapacağın yazıyor.
Menü çubuğunda oturmuyor ve bir uygulamayı Çöp Kutusu'na sürüklemeni bekleyen
bir şey de yok - Unroot sen açtığında tarıyor, geri kalan zamanda hiçbir şey
yapmıyor. Yerleşik tek parça bir Finder uzantısı ve sen Sistem Ayarları ->
Uzantılar -> Finder'dan açana kadar kapalı duruyor. Açtıktan sonra bir uygulamaya
sağ tıklamak uygulamayı kaldırmayı öneriyor. Bunun nereye düştüğünü bilmekte
fayda var, çünkü macOS bu konuda tutarlı değil: ~/Applications içinde
uygulamanın adını taşıyan üst seviye bir öge, diğer her yerde - uygulamaların
çoğunun yaşadığı /Applications dahil - Servisler alt menüsünde, daha yalın
"Uninstall with Unroot" adıyla. Kendi başına hiçbir şey kaldırmıyor; seçimini
uygulamaya devrediyor ve aynı inceleme ekranı açılıyor.
Bir disk temizleyicisi de değil. Adını verdiğin tek bir uygulamanın izlerini arıyor, "boşaltabileceğin şeyleri" değil; ve başka bir kullanıcının hesabına asla yaklaşmıyor.
Mac App Store sürümü yok, çünkü ~/Library'yi okumak, izin kayıtlarını
sıfırlamak ve root'a ait dosyaları taşımak bir kum havuzunun içinden mümkün
değil.
Ne kadar ve başka neye bakmalı
Unroot macOS 14 veya sonrasını istiyor, Apple Silicon ve Intel'de çalışıyor ve yaklaşık 10 MB yer kaplıyor. İstediğini öde modelinde, önerilen fiyat 4,99 dolar - sıfırı gerçekten kapsayan bir tutar - ve lisans her hâlükârda kalıcı. Tam dökümü Unroot sayfasında.
Peşinde olduğun şey belirli bir uygulama değil de disk alanıysa komşu Sweep - İndirilenler klasörünü senin yazdığın kurallara göre düzenliyor ve bir aydan eski kurulum dosyalarını çöpe atıyor; özellik özellik anlatımı Mac'te dosyaları otomatik sıralamak yazısında. Geri kalanının toplu bakışı ise Mac yardımcı uygulamaları yazısında.