Xcode.app proporciona un conjunto de herramientas de línea de comandos. El paquete independiente 'Xcode Command Line Tools' proporciona otro conjunto. Puedes cambiar entre ellos (ver xcode-select --help
).
git
, gcc
y muchos comandos en /usr/bin/
en realidad son un enlace simbólico al ejecutable real de la CLT seleccionada.
La CLT independiente es casi innecesaria si tienes Xcode.app instalado. Simplemente puedes eliminar /Library/Developer/CommandLineTools
para desinstalarla.
En mi caso, instaló estos paquetes (pkgutil --pkgs
antes y después de la instalación)
com.apple.pkg.DevSDK_macOS1013_Public
com.apple.pkg.CLTools_Executables
com.apple.pkg.DevSDK
com.apple.pkg.CLTools_SDK_macOSSDK
com.apple.pkg.macOS_SDK_headers_for_macOS_10.14
com.apple.pkg.DevSDK_OSX109
com.apple.pkg.CLTools_SDK_macOS1013
com.apple.pkg.CLTools_SDK_macOS1014
com.apple.pkg.DevSDK_OSX1012
com.apple.pkg.DevSDK_OSX1011
com.apple.pkg.DevSDK_OSX1010
Puedes usar pkgutil --files
para ver los archivos instalados. Están en /tmp
o /Library/Developer/CommandLineTools
.
Sin embargo,
-
brew
a veces te solicita instalar la CLT independiente aunque tengas Xcode.app instalado, específicamente python
. Dicen que algunas botellas (pre-compiladas) están enlazadas con la CLT independiente.
-
brew
también requiere la CLT independiente cuando quiero compilar algo en un sistema no actual (Mojave después de haber sido lanzado Catalina).
Por supuesto, puedes correr el riesgo y editar la fórmula de brew o brew mismo para evitar eso.
brew edit python
# setuptools recuerda las banderas de compilación con las que se compila python y las utiliza para
# construir paquetes más tarde. Los sistemas exclusivos de Xcode necesitan diferentes banderas.
pour_bottle? do
reason <<~EOS
La botella necesita que estén instaladas las Apple Command Line Tools.
Puedes instalarlas, si lo deseas, con:
xcode-select --install
EOS
satisfy { MacOS::CLT.installed? } # comenta esto
end
/usr/local/Homebrew/Library/Homebrew/os/mac/xcode.rb:
def needs_clt_installed?
return false # <- agrega esto
return false if latest_sdk_version?
without_clt?
end