Entfernen von nicht installierten Befehlszeilentools aus AppStore-Updates

Ich habe die Xcode-Befehlszeilentools von meinem Computer gelöscht, indem ich im Wesentlichen den Ordner entfernt habe. AppStore zeigt jedoch immer noch Updates von den CLI-Tools an, was ich natürlich nicht möchte.

Ich habe versucht, richtig zu verstehen, wo AppStore nachschaut, um herauszufinden, was aktualisiert werden muss, aber ich konnte noch keine bestimmte Antwort finden. Ich habe versucht, die Updatejournal-Datei zu bearbeiten, aber das hat nicht geholfen, also habe ich sie seitdem wiederhergestellt.

Ich begann zu vermuten, dass die Tatsache, dass pkgutileinige CLTools-Pakete angezeigt werden, die Ursache dafür sein könnte. Das Vergessen funktioniert aber nicht, da die bom weder in /var/db/receiptsnoch sind /Library/Receipts( pkgutil --forgetdaran scheitert das im Grunde).

Ich habe sie jedoch nach langem Suchen in gefunden /System/Library/Receipts. Diese kann ich aber aufgrund der Systemsicherheit nicht löschen. Ich kann das natürlich umgehen und sie löschen, um zu sehen, ob es funktioniert, aber ich möchte das nicht "nur um zu sehen".

Dafür würde ich gerne eine passende Lösung finden.

Irgendwelche Ideen, was ich hier tun sollte?

Nicht ganz, wie ich oben geschrieben habe, habe ich den Ordner gelöscht, aber es scheint, dass ein anderer Kommentator zu dieser Frage das gleiche Problem hat wie ich.
Danke für die Antwort hier. Ich verlinke darauf, da andere das gleiche Problem haben werden. +1 hier und natürlich auf die Antwort

Antworten (9)

Ich habe es geschafft, es zu reparieren, es scheint, als hätte ich vermutet, dass das Problem die Boms im /System/Library/ReceiptsOrdner waren.

Also habe ich in den Wiederherstellungsmodus gebootet, SIP deaktiviert, alle Dateien aus diesem Ordner verschoben, die com.apple.pkg.CLTools*ihren Namen hatten, und das Update im App Store war verschwunden. Dann habe ich wieder in die Wiederherstellung gebootet, um SIP zu aktivieren.

Es fühlt sich nicht ganz richtig an, die Sicherheit zu deaktivieren, aber ich habe es in diesem Fall versucht, da andere ähnliche Probleme mit verweilenden Bom-Dateien zusammenhängen, also macht es vielleicht Sinn.

Diese Datei existiert auf keinem der 100 Macs, die ich heute Morgen bei der Arbeit überprüft habe und die alle den App Store verwendet haben, um dieses Paket zu erhalten – wie lautete das Datum/die Uhrzeit Ihrer Quittung? Ich frage mich, ob es von einer alten Installation (nicht CLI) oder einem Beta-Build des Betriebssystems oder der Entwicklungstools übrig geblieben ist.
Um ehrlich zu sein, ist meine Erinnerung nicht ganz frisch. Ich habe die Dateien immer noch in meinem Papierkorb und sie haben eine Erstellung vom 17. November 2017. Ich erinnere mich, dass ich dieses Problem hatte, weil ich eine Beta von High Sierra ausgeführt habe und Homebrew ohne die CLI-Tools nicht richtig funktionieren würde, obwohl ich hatte Xcode installiert (ich musste jahrelang sowohl CLI als auch Xcode parallel installieren), also musste ich sie manuell installieren. Aber High Sierra wurde im November veröffentlicht, nicht wahr? Wie auch immer, wenn ich hier nur laut nachdenke, kann ich mich nicht genau erinnern.
Worauf beziehen Sie sich auch mit "App Store verwenden, um dieses Paket zu erhalten"? Es existiert nicht von selbst im App Store, Sie müssen es entweder mit xcode-select installieren oder vom Entwicklerportal herunterladen (möglicherweise ist es auch von innerhalb von Xcode möglich, kann mich nicht genau daran erinnern).
Das hat funktioniert. Als Alternative zum Deaktivieren von SIP können Sie auch von einem externen Laufwerk booten und dann Dateien von der /SystemVerwendung dieses Betriebssystems entfernen.
@KennyLövrin SIP muss nicht deaktiviert werden – entfernen Sie die Quittungsdateien mit der Terminal-App, die auch im Wiederherstellungsbetriebssystem verfügbar ist.
In Big Sur fand ich die beleidigenden com.apple.pkg.CLTools*Dateien in /Library/Apple/System/Library/Receipts, aber ansonsten war es so, wie in dieser Antwort beschrieben. +1
Um com.apple.pkg.CLTools*-Dateien aus /Library/Apple/System/Library/Receipts zu löschen, müssen Sie die Wiederherstellung starten und Ihr Macintosh HD-Datenvolume mounten.

Es gibt 2 Schritte zum sauberen Entfernen

  1. Löschen Sie das Verzeichnis /Library/Developer/CommandLineTools (wie oben erwähnt).
  2. Zurücksetzen auf Standard-Befehlszeilentools durch Ausführen

xcode-select-r

Erläuterung: Wenn Befehlszeilentools installiert sind, wird der Pfad für Befehlszeilentools auf „/Library/Developer/CommandLineTools“ gesetzt. Dies kann durch Laufen überprüft werden

xcode-select-p

Selbst wenn wir das Verzeichnis entfernen, würde das System dorthin gehen und es überprüfen. Sobald Sie den Pfad zurückgesetzt und xcode-select -p ausgeführt haben, wird ein Fehler ausgegeben

xcode-select: Fehler: aktives Entwicklerverzeichnis kann nicht abgerufen werden, verwenden Sie, sudo xcode-select --switch path/to/Xcode.appum eines festzulegen (oder siehe man xcode-select) Dies würde es in den Anfangszustand bringen.

Wenn Sie einen beliebigen Befehl ausführen, sagen Sie "python3 --version", ohne den Pfad zurückzusetzen, würde dies Folgendes ergeben:

Fehler: Das Tool „python3“ erfordert Xcode, aber das aktive Entwicklerverzeichnis „/Library/Developer/CommandLineTools“ ist eine Befehlszeilentools-Instanz

und sobald Sie den Pfad zurückgesetzt haben, werden Sie aufgefordert, Befehlszeilentools zusammen mit zu installieren:

xcode-select: Hinweis: Unter „/Applications/Xcode.app“ wurden keine Entwicklertools gefunden, die eine Installation anfordern. Wählen Sie im Dialogfeld eine Option aus, um die Befehlszeilen-Entwicklertools herunterzuladen.

Dies scheint die am besten geeignete Antwort zu sein, da SIP nicht deaktiviert werden muss.

Löschen Sie diesen Ordner und Ihre Kopfschmerzen werden für immer verschwunden sein:

/Library/Developer/CommandLineTools

Die allererste Zeile meiner Frage besagt, dass ich den Ordner gelöscht habe.
Um fair zu sein, @KennyLövrin, Sie haben den Namen des Ordners nicht erwähnt, also ist Vighnesh korrekt. Eine Bearbeitung Ihres Beitrags darüber, welcher Ordner genau entfernt wurde, würde Berichte wie diesen reduzieren, die Details enthalten.
Ich denke nicht, dass es fair ist zu sagen, dass Vighnesh richtig ist, da Kenny tatsächlich Recht hat, wenn er sagt, dass "der Ordner" gelöscht wurde, aber Vighneshs Kommentar ist tatsächlich falsch, und ein sorgfältiges Lesen der Frage und des Titels hätte das ergeben Dies hatte nichts mit der Deinstallation von CLT selbst zu tun. Ich denke, Vighnesh muss eine gewisse Verantwortung dafür tragen, Fragen tatsächlich sorgfältig zu prüfen, bevor er mit grundlegenden Antworten auf eine Frage voraneilt, die nicht wirklich gestellt wurde. Benennen Sie den Ordner auf jeden Fall genau, aber der eigentliche Fehler liegt hier bei Vighnesh.

Ich habe gerade Stunden mit genau diesem Thema verbracht und es ENDLICH HERAUSGEFUNDEN, für alle, die dies in Zukunft lesen.

Das Löschen von /Library/Developer/CommandLineTools hat nicht funktioniert.

xcode-select -r hat nicht funktioniert.

An den üblichen Orten (/var/db/receipts, /Library/Receipts und /System/Library/Receipts) gab es keine Quittungen oder Bücher.

Wissen Sie, was es war? Die Quittungen waren in /Library/Apple/System/Library/Receipts. Alles mit CLTools oder SDK im Namen entfernt und das Systemupdate für die CLT verschwunden. DANKE DEM HERRN. Nicht sicher, ob SIP dafür deaktiviert werden musste oder nicht (ich hatte es deaktiviert).

Ich sollte das auf meinem Monterey-System testen, bevor ich den Sprung nach Ventura wage

Mein neu installiertes macOS Mojave hatte genau das gleiche Problem. Ich habe sowohl Xcode als auch CLT installiert, dann kommen 6 oder 7 CLT-Updates von System Update heraus, was mir vorschlägt, CLTs der alten Version zu installieren.

Ich habe dann diesen Ordner entfernt /Library/Developer/CommandLineTools, neu gestartet, alle Updates sind weg.

Ich habe die Quittungssachen nicht entfernt.

Dies deckt sich mit meinen Erfahrungen in Dutzenden von Teams . Vielen Dank für die Bestätigung, dass nicht alle Upgrade-Eingabeaufforderungen eine Quittungsdatei erfordern.

Danke Alex , das war genau die Information, die ich brauchte.

Bei einem relativ neuen Mac-Setup (Apple Silicon Chip, macOS 12.0 Monterey Beta), nachdem ich die Befehlszeilentools installiert und dann durch Löschen /Library/Developer/CommandLineToolsund Ausführen deinstalliert sudo xcode-select -rhatte, erhielt ich immer noch Updates für die Tools in Systemeinstellungen > Softwareaktualisierung.

In der Tat sind die Quittungen /Library/Apple/System/Library/Receiptsin Form von Dateien vorhanden

com.apple.pkg.CLTools_Executables.{bom,plist}
com.apple.pkg.CLTools_SDK_macOS*.{bom,plist}
com.apple.pkg.CLTools_macOS_SDK.{bom,plist}

Sie sind durch SIP geschützt: Um sie zu löschen, musste ich zuerst SIP deaktivieren (dh SIP deaktivieren, Dateien löschen, SIP erneut aktivieren).

Beim Testen auf macOS 12.4 hat die Softwareaktualisierung in den Systemeinstellungen die plist und bom in /Library/Apple/System als Installationspaket-Volume gespeichert. Der Prozess, um sie zu entfernen:

  1. SIP deaktivieren
  2. Führen Sie die folgende Befehlszeile aus
  3. SIP aktivieren

die Kommandozeile:

Vol="/Library/Apple/System"; if [ "$(csrutil status | awk -F': ' '{print $2}')" = "disabled." ]; then /usr/sbin/pkgutil --pkgs="com.apple.pkg.CLTools_.*" --volume "$Vol" | while read -r pkg; do sudo /usr/sbin/pkgutil --forget "$pkg" --volume "$Vol"; done; else echo "After disbale SIP, run this command again, and then enable SIP."; fi

Einfache Erklärung: Wenn SIP deaktiviert ist, liest es alle com.apple.pkg.CLTools_*-Paket-IDs und entfernt sie nacheinander, indem der Volume-Pfad „/Library/Apple/System“ zugewiesen wird.

Nach dem, was TonyL. freigegeben, können Sie derzeit (ab macOS Ventura) jedes Paket vergessen, indem Sie:

  1. SIP vorübergehend deaktivieren
  2. Laufensudo pkgutil --forget _ANY_PACKAGE --volume "/Library/Apple/System"
  3. SIP aktivieren
  • Entfernen
    sudo rm -rf /Library/Developer/CommandLineTools
    
  • Bei Bedarf erneut installieren
    sudo xcode-select --install
    
Dies ist in mehreren anderen Antworten und die meisten von ihnen haben mehr Informationen. Was macht Ihre Antwort zu einer guten für diese Site?