Eliminar las herramientas de línea de comandos desinstaladas de las actualizaciones de AppStore

Eliminé las herramientas de línea de comandos de Xcode de mi máquina simplemente eliminando la carpeta. Sin embargo, AppStore todavía muestra actualizaciones de las herramientas CLI, lo que obviamente no quiero.

He estado tratando de entender correctamente dónde busca AppStore para averiguar qué necesita actualizarse, pero aún no he podido encontrar una respuesta determinada. Intenté editar el archivo updatejournal, pero eso no ayudó, así que lo restauré desde entonces.

Empecé a sospechar que el hecho de que pkgutilmuestre algunos CLToolspaquetes podría ser la causa de esto. Sin embargo, olvidarlos no funciona ya que los bom no están ni en /var/db/receiptso /Library/Receipts( pkgutil --forgetesencialmente falla debido a esto).

Sin embargo, los encontré después de mucho buscar en /System/Library/Receipts. Sin embargo, aquellos que no puedo eliminar debido a la seguridad del sistema. Por supuesto, puedo omitir eso y eliminarlos para ver si funciona, pero no quiero hacer eso "solo para ver".

Me gustaría encontrar una solución adecuada a esto.

¿Alguna idea de lo que debería hacer aquí?

No del todo, como escribí en la parte superior, eliminé la carpeta, pero parece que otro comentarista sobre esa pregunta tiene el mismo problema que yo.
Gracias por la respuesta aquí. Lo estoy vinculando ya que otros tendrán el mismo problema. +1 aquí y en la respuesta, por supuesto

Respuestas (9)

Logré arreglarlo, parece que lo sospechaba, el problema eran los boms en la /System/Library/Receiptscarpeta.

Así que inicié el modo de recuperación, deshabilité SIP, moví todos los archivos de esa carpeta que tenían com.apple.pkg.CLTools*en su nombre y la actualización en la App Store desapareció. Luego reinicié la recuperación nuevamente para habilitar SIP.

No se siente muy bien desactivar la seguridad, pero lo intenté en este caso, ya que otros problemas similares parecían estar relacionados con archivos bom persistentes, por lo que tal vez tenga sentido.

Este archivo no existe en ninguna de las 100 Mac que revisé en el trabajo esta mañana y todas usaron App Store para obtener este paquete. ¿Cuál fue la fecha/hora de su recibo? Me pregunto si quedó de una instalación antigua (sin CLI) o una versión beta del sistema operativo o las herramientas de desarrollo.
Para ser honesto, mi memoria no está totalmente fresca. Todavía tengo los archivos en mi Papelera y tienen una creación del 17 de noviembre de 2017. Creo recordar que tuve este problema porque estaba ejecutando una versión beta de High Sierra y Homebrew no funcionaría correctamente sin las herramientas de la CLI a pesar de que tenía Xcode instalado (tuve que instalar CLI y Xcode en paralelo durante años), así que tuve que instalarlos manualmente. Pero High Sierra se lanzó en noviembre, ¿no? De todos modos, solo pensando en voz alta aquí, en realidad no puedo recordarlo con seguridad.
Además, ¿a qué te refieres con "usar la tienda de aplicaciones para obtener este paquete"? No existe en la App Store por sí mismo, debe instalarlo con xcode-select o descargarlo desde el portal de desarrollo (quizás desde dentro de Xcode también sea posible, no recuerdo eso específicamente).
Esto funcionó. Una alternativa a deshabilitar SIP, también puede iniciar desde una unidad externa y luego eliminar los archivos del /Systemuso de ese sistema operativo.
@KennyLövrin No es necesario deshabilitar SIP: elimine los archivos de recibo con la aplicación Terminal también disponible en el sistema operativo de recuperación.
En Big Sur, encontré los com.apple.pkg.CLTools*archivos ofensivos en /Library/Apple/System/Library/Receipts, pero aparte de eso, fue como se describe en esta respuesta. +1
Para eliminar los archivos com.apple.pkg.CLTools* de /Library/Apple/System/Library/Receipts, debe iniciar Recuperación y montar su Macintosh HD - Volumen de datos.

Hay 2 pasos para una eliminación limpia

  1. Elimine el directorio /Library/Developer/CommandLineTools (como se mencionó anteriormente).
  2. Restablezca las herramientas de línea de comandos predeterminadas ejecutando

xcode-seleccionar -r

Explicación: cuando se instalan las herramientas de línea de comandos, la ruta para las herramientas de línea de comandos se establece en "/Library/Developer/CommandLineTools". Esto se puede comprobar ejecutando

xcode-seleccionar -p

Incluso si eliminamos el directorio, el sistema irá y verificará allí. Una vez que restablece la ruta y ejecuta xcode-select -p, da un error

xcode-select: error: no se puede obtener el directorio de desarrolladores activo, use sudo xcode-select --switch path/to/Xcode.apppara configurar uno (o ver man xcode-select) Esto lo llevaría al estado inicial.

Ejecutar cualquier comando, diga "python3 --version" sin restablecer la ruta daría:

error: la herramienta 'python3' requiere Xcode, pero el directorio de desarrollador activo '/Library/Developer/CommandLineTools' es una instancia de herramientas de línea de comandos

y una vez que restablezca la ruta, se le pedirá que instale las herramientas de línea de comando junto con:

xcode-select: nota: no se encontraron herramientas de desarrollador en '/Applications/Xcode.app', solicitando la instalación. Elija una opción en el cuadro de diálogo para descargar las herramientas de desarrollo de la línea de comandos.

Esta parece ser la respuesta más apropiada dado que no requiere deshabilitar SIP.

Elimine esta carpeta y su dolor de cabeza desaparecerá para siempre:

/Biblioteca/Developer/CommandLineTools

La primera línea de mi pregunta dice que eliminé la carpeta.
Para ser justos, @KennyLövrin, no mencionaste el nombre de la carpeta, por lo que Vighnesh es correcto. Una edición de su publicación sobre qué carpeta se eliminó con precisión reduciría los informes como este que brindan detalles.
No creo que sea justo decir que Vighnesh está en lo correcto, ya que Kenny en realidad tiene razón al afirmar que se eliminó "la carpeta", pero el comentario de Vighnesh en realidad es incorrecto, y una lectura cuidadosa de la pregunta y el título habrían revelado que esto no tuvo nada que ver con la desinstalación de CLT. Creo que Vighnesh debe asumir cierta responsabilidad de considerar las preguntas cuidadosamente antes de apresurarse a dar respuestas básicas a una pregunta que en realidad no se hizo. Claro, nombra la carpeta con precisión, por todos los medios, pero la falla real aquí es con Vighnesh.

Acabo de pasar horas en este problema exacto y FINALMENTE LO DESCUBIERTO, para cualquiera que lea esto en el futuro.

Eliminar /Library/Developer/CommandLineTools no funcionó.

xcode-select -r no funcionó.

No había recibos ni boms en los lugares habituales (/var/db/receipts, /Library/Receipts y /System/Library/Receipts).

¿Sabes lo que era? Los recibos estaban en /Library/Apple/System/Library/Receipts. Se eliminó todo con CLTools o SDK en el nombre y desapareció la actualización del sistema para CLT. GRACIAS AL SEÑOR. No estoy seguro de si era necesario deshabilitar SIP para esto o no (lo tenía deshabilitado).

Debería probar esto en mi sistema Monterey antes de dar el paso a Ventura

Mi macOS Mojave reinstalado tenía exactamente el mismo problema. Instalé Xcode y CLT, luego salieron 6 o 7 actualizaciones de CLT de System Update, lo que me sugirió que instalara la versión anterior de CLT.

Luego eliminé esta carpeta /Library/Developer/CommandLineTools, reinicié, todas las actualizaciones desaparecieron.

No quité las cosas del recibo.

Esto coincide con mis experiencias en docenas de equipos . Gracias por confirmar que no todas las solicitudes de actualización necesitan un archivo de recibo.

Gracias Alex , esta era exactamente la información que necesitaba.

En una configuración de Mac bastante reciente (chip Apple Silicon, macOS 12.0 Monterey Beta), después de haber instalado las herramientas de línea de comandos y luego haberlas desinstalado borrándolas /Library/Developer/CommandLineToolsy ejecutándolas sudo xcode-select -r, seguía recibiendo actualizaciones de las herramientas en Preferencias del sistema > Actualización de software.

Efectivamente, los recibos están en /Library/Apple/System/Library/Receipts, en forma de archivos

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

Están protegidos por SIP: para eliminarlos, primero tuve que deshabilitar SIP (es decir, deshabilitar SIP, eliminar los archivos, volver a habilitar SIP).

Tras probar en macOS 12.4, Actualización de software en Preferencias del sistema tiene el plist y el bom almacenados en /Library/Apple/System como volumen de paquetes de instalación. El proceso para eliminarlos:

  1. deshabilitar SIP
  2. Ejecute la siguiente línea de comando
  3. habilitar SIP

la línea de comando:

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

explicación simple: si SIP está deshabilitado, lee todos los ID del paquete com.apple.pkg.CLTools_* y los elimina uno por uno asignando la ruta de volumen a "/Library/Apple/System".

Siguiendo lo dicho por TonyL. compartido, actualmente puede (a partir de macOS Ventura) olvidar cualquier paquete al:

  1. Deshabilitar temporalmente SIP
  2. Corrersudo pkgutil --forget _ANY_PACKAGE --volume "/Library/Apple/System"
  3. Habilitar SIP
  • Eliminar
    sudo rm -rf /Library/Developer/CommandLineTools
    
  • Si es necesario instalar de nuevo
    sudo xcode-select --install
    
Esto está en varias otras respuestas y la mayoría de ellas tienen más información. ¿Qué hace que su respuesta sea buena para este sitio?