70 votes

Comment puis-je installer les outils de ligne de commande entièrement à partir de la ligne de commande ?

Je voudrais script l'installation des outils de ligne de commande Xcode.

Sur les Mavericks,

xcode-select --install

ouvrira une boîte de dialogue invitant l'utilisateur à procéder à l'installation, mais j'aimerais déclencher l'installation sans boîte de dialogue, comme en utilisant la commande softwareupdate commandement.

Y a-t-il un moyen de le faire ?

Edit :

Plus précisément, xcode-select --install lance une application qui télécharge et installe les outils sans que l'utilisateur ait à les télécharger manuellement ou à posséder un compte Apple Developer. Il semble utiliser /System/Library/CoreServices/Install Command Line Developer Tools.app pour le faire.

Je voudrais utiliser le même mécanisme que celui d'Apple, mais sans l'interface graphique. Je ne veux pas avoir à télécharger manuellement le fichier .dmg contenant les outils, car cela me semble fragile. Apple fournit plusieurs autres outils en ligne de commande, comme softwareupdate y install qui téléchargent ou installent des logiciels directement depuis Apple, et je cherche à trouver la même chose pour ce type de distribution.

2voto

TrinitronX Points 1132

EDIT (2021-2022) : Les serveurs d'Apple répondent maintenant avec un 302 Rediriger vers https://developer.apple.com/unauthorized/

Post-apocalypt ... euh... solution post-2021

Cette courte extrait de mon MacOS bootstrap.sh script a été testé à partir de décembre 2021.

# Try the AppleScript automation method rather than relying on manual .xip / .dmg download & mirroring
# Note: Apple broke automated Xcode installer downloads.  Now requires manual Apple ID sign-in.
# Source: https://web.archive.org/web/20211210020829/https://techviewleo.com/install-xcode-command-line-tools-macos/
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

Anciennes solutions (avant 2021)

Vous trouverez quelques autres solutions dans ces réponses :

Télécharger XCode Command Line Tools

Vous pouvez télécharger les paquets CLTools de XCode 4.x depuis leur site de téléchargement officiel via des liens directs.

Voici un script qui automatisera le processus d'installation pour vous 1 .

EDIT (2021-2022) : Les serveurs Apple répondent désormais par un 302 Rediriger vers https://developer.apple.com/unauthorized/ en essayant de télécharger les paquets CLT. Sur cette base, Apple a cassé tous les téléchargements directs non surveillés sans connexion préalable avec un identifiant Apple. Le nombre de cerceaux qu'un script devrait franchir pour se connecter, stocker des cookies et télécharger est prohibitif.

Pour trouver les liens mis à jour pour les outils, vous pouvez utiliser cette commande :

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

EDIT (2021-2022) : Cette URL semble maintenant avoir des certificats SSL cassés, et la dernière version disponible est la suivante Xcode.CLTools.10.8 version 2014.4 ( command_line_tools_for_osx_mountain_lion_april_2014.dmg )...

Note : Le site curl La commande ci-dessus a maintenant l'option -k ajouté pour contourner ce problème de validation de certificat. Sachez que le -k / --insecure permet de contourner les contrôles de sécurité des certificats SSL. Ce n'est pas sûr et il n'y a aucun moyen de vérifier, à l'aide d'une chaîne de confiance PKI + CA, que ce domaine est digne de confiance et appartient toujours à Apple. Il est recommandé d'utiliser l'alternative xcode-select --install + osascript solution ci-dessus.

[1] Veuillez ne pas abuser/surcharger leurs serveurs.

Vous constaterez peut-être qu'il est plus facile de se connecter d'abord à l'adresse suivante Site de téléchargement pour les développeurs Apple et téléchargez les derniers outils de ligne de commande qui y sont disponibles. Vous pouvez ensuite héberger le .dmg sur votre propre serveur de repo de paquets et être en mesure d'installer de manière fiable les .dmg sur de nombreuses machines avec hdiutil sans avoir à se connecter à developer.apple.com.

À partir du 06/10/2015, le lien vers les derniers outils en ligne de commande. dmg est :

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

EDIT (2021-2022) : Cette URL ne fonctionne plus... Les serveurs d'Apple répondent maintenant avec un 302 Rediriger vers https://developer.apple.com/unauthorized/ si vous n'êtes pas connecté avec un identifiant Apple.

Veuillez voir l'alternative xcode-select --install + osascript solution ci-dessus.

2voto

SCM Points 190

C'est ce que j'utilise, en partie basé sur la réponse de brysgo.

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

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

mise à jour : Apple continue d'ajouter de nouvelles colonnes à la base de données Access, vous devez seulement spécifier des valeurs pour les 5 premières, j'ai mis à jour le code pour refléter cela.

1voto

ThatDude Points 23

J'ai dû modifier légèrement le code pour Monterey 12.0.1.

#!/bin/bash
echo "Checking Xcode CLI tools"
# Only run if the tools are not installed yet
# To check that try to print the SDK path
xcode-select -p &> /dev/null
if [ $? -ne 0 ]; then
  echo "Xcode CLI tools not found. Installing them..."
  touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress;
  PROD=$(softwareupdate -l |
    grep "\*.*Command Line" |
    tail -n 1 | sed 's/^[^C]* //')
  softwareupdate -i "$PROD" --verbose;
else
  echo "Xcode CLI tools OK"
fi

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X