¿Cómo puedo instalar las Herramientas de línea de comandos completamente desde la línea de comandos?

35

Me gustaría crear una secuencia de comandos para la instalación de las Herramientas de la línea de comandos de Xcode.

En Mavericks,

xcode-select --install

abrirá un cuadro de diálogo que le pedirá al usuario que instale, pero me gustaría activar la instalación sin el cuadro de diálogo, como usar el comando softwareupdate .

¿Hay alguna manera de hacer esto?

Editar:

Específicamente, xcode-select --install lanza una aplicación que descarga e instala las herramientas sin requerir que el usuario las descargue manualmente o tenga una cuenta de desarrollador de Apple. Parece que usa /System/Library/CoreServices/Install Command Line Developer Tools.app para hacer esto.

Me gustaría usar el mismo mecanismo que Apple, pero sin la GUI. No quiero tener que descargar manualmente el archivo .dmg que contiene las herramientas, ya que parece frágil. Apple proporciona otras herramientas de línea de comandos, como softwareupdate y install que descargan o instalan software directamente desde Apple, y estoy buscando la misma para este tipo de distribución.

    
pregunta also 28.10.2013 - 18:14

7 respuestas

24

Ojalá pudiera reclamar crédito por este, pero lo encontré enterrado en enlace

Esto funcionó en mi VM sin cabeza 10.10 sin una UI registrada.

touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress;
PROD=$(softwareupdate -l |
  grep "\*.*Command Line" |
  head -n 1 | awk -F"*" '{print $2}' |
  sed -e 's/^ *//' |
  tr -d '\n')
softwareupdate -i "$PROD" --verbose;
    
respondido por el keen 15.07.2015 - 00:07
19
  1. Descargue el paquete de herramientas de línea de comandos desde el sitio para desarrolladores de Apple .

  2. Monte el 1 DMG descargado:

    hdiutil attach "command_line_tools_os_x_mountain_lion_for_xcode__october_2013.dmg"
    
  3. Ejecute el instalador a través de la línea de comando:

    cd "/Volumes/Command Line Tools (Mountain Lion)"
    installer -verbose -pkg "Command Line Tools (Mountain Lion).mkpg" -target /
    
  4. Cuando haya terminado, desmonte el DMG y elimine la descarga.

    1. Expulsa el DMG 2 .

      cd /
      hdiutil detach /dev/disk3s2
      
    2. Eliminar el DMG.

      rm "command_line_tools_os_x_mountain_lion_for_xcode__october_2013.dmg"
      

1 Al momento de escribir, el DMG descargado y el nombre del paquete son correctos; sin embargo, en el futuro, el nombre puede cambiar. Recuerde modificar el comando (o usar la tabulación completa) para completar la parte relevante del comando.
2 Si el comando no funciona, verifique el disco coincide con el nombre del montaje (según mount ).

    
respondido por el grg 28.10.2013 - 18:32
5

Una alternativa es usar este Applecript que escribí:

enlace

do shell script "xcode-select --install"
do shell script "sleep 1"

tell application "System Events"
    tell process "Install Command Line Developer Tools"
        keystroke return
        click button "Agree" of window "License Agreement"
    end tell
end tell
xcode-select --install
sleep 1
osascript <<EOD
  tell application "System Events"
    tell process "Install Command Line Developer Tools"
      keystroke return
      click button "Agree" of window "License Agreement"
    end tell
  end tell
EOD
    
respondido por el brysgo 14.02.2014 - 21:20
3

Un intento de limpiar el estilo y la lógica de la respuesta aceptada, haciéndolo tan independiente de la versión como sea posible, utilizando softwareupdate en toda su capacidad e introduciendo una variable os reutilizable:

#!/bin/bash
# Requires root
os=$(sw_vers -productVersion | awk -F. '{print $1 "." $2}')
if softwareupdate --history | grep --silent "Command Line Tools.*${os}"; then
    echo 'Command-line tools already installed.' 
else
    echo 'Installing Command-line tools...'
    in_progress=/tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
    touch ${in_progress}
    product=$(softwareupdate --list | awk "/\* Command Line.*${os}/ { sub(/^   \* /, \"\"); print }")
    softwareupdate --verbose --install "${product}" || echo 'Installation failed.' 1>&2 && rm ${in_progress} && exit 1
    rm ${in_progress}
    echo 'Installation succeeded.'
fi
    
respondido por el BaseZen 11.05.2018 - 21:07
2

Esto es lo que uso, basado en parte en la respuesta de brysgo.

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db \
  "INSERT or REPLACE INTO access
   VALUES('kTCCServiceAccessibility','com.apple.Terminal',0,1,1,NULL,NULL);"

if [[ "$(xcode-select -p)" == "" ]]; then
  printf "\n### Installing Xcode command line tools\n"
  xcode-select --install
  sleep 2
  osascript <<EOD
    tell application "System Events"
      tell process "Install Command Line Developer Tools"
        click button "Install" of window ""
        click button "Agree" of window "License Agreement"
        repeat until exists button "Done" of window ""
          delay 1
        end repeat
        click button "Done" of window ""
      end tell
    end tell
EOD
fi
    
respondido por el Cyberbeni 25.07.2018 - 01:11
1

Se pueden encontrar un par de alternativas más en estas respuestas:

Descargar XCode Command Line Tools

Puede descargar los paquetes de CLTools de XCode 4.x desde su sitio de descarga oficial a través de enlaces directos.

Aquí hay un script que automatizará el proceso de instalación para usted 1 .

Para encontrar enlaces actualizados para las herramientas, puede usar este comando:

curl -Ls https://devimages.apple.com.edgekey.net/downloads/xcode/simulators/index-3905972D-B609-49CE-8D06-51ADC78E07BC.dvtdownloadableindex | plutil -convert json -o - - | python -mjson.tool | less

[1] No abuse / sobrecargue sus servidores

Puede encontrar que es más fácil iniciar sesión en el Sitio de descarga de desarrolladores de Apple y descargar la última versión. Herramientas de línea de comando disponibles allí. Luego, puede alojar .dmg en su propio servidor de repositorios de paquetes y poder instalar de manera confiable .dmg en muchas máquinas con hdiutil sin tener que iniciar sesión en developer.apple.com.

A partir del 06/10/2015, el enlace a las últimas Herramientas de línea de comando dmg es:

http://adcdownload.apple.com/Developer_Tools/Command_Line_Tools_OS_X_10.10_for_Xcode_6.3.2/commandlinetoolsosx10.10forxcode6.3.2.dmg

    
respondido por el TrinitronX 07.06.2015 - 01:17
0

Encontré que si instala Home Brew, automáticamente instalará las herramientas de la línea de comandos.

Probé esto usando esta imagen errante .

Ejecute el siguiente comando para instalar Homebrew y, al hacerlo, instale las Herramientas de la línea de comandos.

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • Sé que la pregunta original solo preguntaba cómo instalar las Herramientas de la línea de comandos, pero no conozco ningún Mac en estos días que no tenga instalado Home Brew.
respondido por el Nathan Fiscaletti 03.07.2018 - 21:23

Lea otras preguntas en las etiquetas