Come posso installare completamente gli strumenti della riga di comando dalla riga di comando?

35

Mi piacerebbe scrivere l'installazione di Xcode Command Line Tools.

Su Mavericks,

xcode-select --install

aprirà una finestra di dialogo che richiede all'utente di installare, ma mi piacerebbe attivare l'installazione senza la finestra di dialogo, ad esempio utilizzando il comando softwareupdate .

C'è un modo per farlo?

Modifica

In particolare, xcode-select --install avvia un'applicazione che scarica e installa gli strumenti senza richiedere all'utente di scaricarli manualmente o di avere un account sviluppatore Apple. Sembra utilizzare /System/Library/CoreServices/Install Command Line Developer Tools.app per farlo.

Vorrei utilizzare lo stesso meccanismo di Apple, ma senza la GUI. Non voglio dover scaricare manualmente il file .dmg contenente gli strumenti in quanto ciò sembra fragile. Apple fornisce molti altri strumenti da riga di comando, come softwareupdate e install che scaricano o installano software direttamente da Apple, e sto cercando di trovare lo stesso per questo tipo di distribuzione.

    
posta also 28.10.2013 - 18:14
fonte

7 risposte

24

Vorrei poter richiedere il credito per questo, ma l'ho trovato sepolto nel link

Questo ha funzionato sulla mia VM senza testa 10.10 senza un'interfaccia utente registrata.

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;
    
risposta data 15.07.2015 - 00:07
fonte
19
  1. Scarica il pacchetto Strumenti riga di comando dal sito per sviluppatori Apple .

  2. Monta il DMG 1 scaricato

    .

    hdiutil attach "command_line_tools_os_x_mountain_lion_for_xcode__october_2013.dmg"
    
  3. Esegui il programma di installazione tramite la riga di comando:

    cd "/Volumes/Command Line Tools (Mountain Lion)"
    installer -verbose -pkg "Command Line Tools (Mountain Lion).mkpg" -target /
    
  4. Al termine, smonta il DMG ed elimina il download.

    1. Espelli il DMG 2 .

      cd /
      hdiutil detach /dev/disk3s2
      
    2. Elimina il DMG.

      rm "command_line_tools_os_x_mountain_lion_for_xcode__october_2013.dmg"
      

1 Al momento della stesura, il DMG scaricato e il nome del pacchetto sono accurati, tuttavia in futuro il nome potrebbe cambiare. Ricordarsi di modificare il comando (o utilizzare il completamento della tabulazione) per compilare la parte pertinente del comando.
2 Se il comando non funziona, controllare il disco corrisponde al nome della montatura (come per mount ).

    
risposta data 28.10.2013 - 18:32
fonte
5

Un'alternativa è quella di usare questo applescript che ho scritto:

link

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
    
risposta data 14.02.2014 - 21:20
fonte
3

Un tentativo di ripulire lo stile e la logica della risposta accettata, rendendolo il più possibile indipendente dalla versione, utilizzando softwareupdate fino alla sua piena capacità e introducendo una variabile os riutilizzabile:

#!/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
    
risposta data 11.05.2018 - 21:07
fonte
2

Questo è quello che uso, in parte basato sulla risposta di 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
    
risposta data 25.07.2018 - 01:11
fonte
1

Un paio di altre alternative possono essere trovate a queste risposte:

Scarica gli strumenti della riga di comando XCode

Puoi scaricare i pacchetti XCode 4.x di CLTools dal loro sito di download ufficiale tramite link diretti.

Ecco uno script che automatizzerà il processo di installazione per te 1 .

Per trovare collegamenti aggiornati per gli strumenti, puoi usare questo 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] Si prega di non abusare / sovraccaricare i loro server

Potresti scoprire che è più semplice accedere al sito di download per sviluppatori Apple e scaricare l'ultima Strumenti della riga di comando disponibili qui. Puoi quindi ospitare .dmg sul tuo server di repository di pacchetti ed essere in grado di installare in modo affidabile .dmg su molte macchine con hdiutil senza dover accedere a developer.apple.com.

A partire dal 06/10/2015, il link all'ultima riga di comando dmg è:

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

    
risposta data 07.06.2015 - 01:17
fonte
0

Ho scoperto che se installi Home Brew, installerà automaticamente gli strumenti da riga di comando.

Ho provato questo utilizzando questa immagine vagabonda .

Esegui il seguente comando per installare Homebrew , e così facendo installa gli strumenti della riga di comando.

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • So che la domanda originale mi ha solo chiesto come installare gli strumenti della riga di comando, ma al momento non conosco nessun Mac su cui non sia installato anche Home Brew.
risposta data 03.07.2018 - 21:23
fonte

Leggi altre domande sui tag