Exactamente lo que dijo Marc Wilson. No tenía ni Xcode ni el paquete com.apple.pkg.CLTools_Executables
:
$ pkgutil --pkg-info com.apple.pkg.CLTools_Executables
No se encontró el recibo de 'com.apple.pkg.CLTools_Executables' en '/'.
$ pkgutil --pkg-info com.apple.pkg.CLTools_Base
No se encontró el recibo de 'com.apple.pkg.CLTools_Base' en '/'.
$ ls /Applications/Xcode.app
ls: /Applications/Xcode.app: No such file or directory
$
Sin embargo:
$ clang --version
Versión de Apple clang 12.0.0 (clang-1200.0.32.28)
Objetivo: x86_64-apple-darwin19.6.0
Modelo de subprocesos: posix
Directorio instalado: /Library/Developer/CommandLineTools/usr/bin
$ git --version
Versión de git 2.24.3 (Apple Git-128)
$
Confusamente, Homebrew funcionaba sin problemas y estaba reportando una versión para las Herramientas de Línea de Comandos (CLT) cuando ejecuté brew config
, lo que significa que cree que las CLT están instaladas.
Investigando en el código de Homebrew, entendí que este método detecta la versión de CLT:
def detect_version
version = nil
[EXECUTABLE_PKG_ID, MAVERICKS_NEW_PKG_ID].each do |id|
next unless File.exist?("#{PKG_PATH}/usr/bin/clang")
version = MacOS.pkgutil_info(id)[/version: (.+)$/, 1]
return version if version
end
detect_version_from_clang_version
end
donde:
EXECUTABLE_PKG_ID
está configurado como com.apple.pkg.CLTools_Executables
MAVERICKS_NEW_PKG_ID
está configurado como com.apple.pkg.CLTools_Base
en el mismo archivo. Es decir, estaba verificando la presencia de estos paquetes y, si ninguno se encuentra, ejecutaba el método detect_version_from_clang_version
para detectar la versión de CLT.
Utilicé la interfaz de GitHub para git blame
en ese archivo y entendí que la línea detect_version_from_clang_version
se agregó en este commit, reemplazando la línea detect_clang_version
.
Para entender cuándo, a su vez, se agregó la línea detect_clang_version
, comencé a revisar el historial de commits del archivo comenzando desde ese commit. Mientras revisaba el historial de commits, noté este mensaje de commit:
os/mac/xcode: fallback to clang version for detecting CLT.
Por alguna razón, pkgutil --pkgs
ya no lista el CLT después de la actualización complementaria de Catalina.
Corrige #6610
Abrí ese commit y entendí que efectivamente es el commit que introdujo la línea detect_clang_version
al método detect_version
.
Por lo tanto, probablemente algunas actualizaciones de software están causando que algunos recibos de paquetes sean eliminados, aunque el paquete siga estando presente.
0 votos
¿Qué te hace pensar que tienes herramientas de línea de comandos instaladas?