我正在尝试编写一个shell脚本,它将安装我们所有的开发工具&依赖于干净的OSX机器。
有人知道自动安装Xcode的最佳方法吗?
我这样做是为了:
答案 0 :(得分:6)
首先,登录到Apple Developer Downloads Site并获取适用于您的OSX版本的XCode.dmg版本。您可能想要使用几个版本来支持不同的OSX平台(例如:10.10 Yosemite,10.9 Mavericks等...)。将dmg上传到您可以访问的文件主机(例如:Amazon S3,Dropbox,您选择的共享托管服务提供商等等)
更改以下脚本中的DOWNLOAD_BASE_URL
,然后使用版本&amp ;;更正重命名 dmgs内部版本号或将其添加到下面的脚本:
#!/bin/bash
DOWNLOAD_BASE_URL=http://example.com/path/to/xcode/dmgs/
## Figure out OSX version (source: https://www.opscode.com/chef/install.sh)
function detect_platform_version() {
# Matching the tab-space with sed is error-prone
platform_version=$(sw_vers | awk '/^ProductVersion:/ { print $2 }')
major_version=$(echo $platform_version | cut -d. -f1,2)
# x86_64 Apple hardware often runs 32-bit kernels (see OHAI-63)
x86_64=$(sysctl -n hw.optional.x86_64)
if [ $x86_64 -eq 1 ]; then
machine="x86_64"
fi
}
detect_platform_version
# Determine which XCode version to use based on platform version
case $platform_version in
"10.10") XCODE_DMG='XCode-6.1.1-6A2008a.dmg' ;;
"10.9") XCODE_DMG='XCode-5.0.2-5A3005.dmg' ;;
*) XCODE_DMG='XCode-5.0.1-5A2053.dmg' ;;
esac
# Bootstrap XCode from dmg
if [ ! -d "/Applications/Xcode.app" ]; then
echo "INFO: XCode.app not found. Installing XCode..."
if [ ! -e "$XCODE_DMG" ]; then
curl -L -O "${DOWNLOAD_BASE_URL}/${XCODE_DMG}"
fi
hdiutil attach "$XCODE_DMG"
export __CFPREFERENCES_AVOID_DAEMON=1
sudo installer -pkg '/Volumes/XCode/XCode.pkg' -target /
hdiutil detach '/Volumes/XCode'
fi
您可能有兴趣安装XCode命令行工具,并绕过XCode许可协议:
curl -Ls https://gist.github.com/trinitronx/6217746/raw/58456d6675e437cebbf771c60b6005b4491a0980/xcode-cli-tools.sh | sudo bash
# We need to accept the xcodebuild license agreement before building anything works
# Silly Apple...
if [ -x "$(which expect)" ]; then
echo "INFO: GNU expect found! By using this script, you automatically accept the XCode License agreement found here: http://www.apple.com/legal/sla/docs/xcode.pdf"
expect ./bootstrap-scripts/accept-xcodebuild-license.exp
else
echo -e "\x1b[31;1mERROR:\x1b[0m Could not find expect utility (is '$(which expect)' executable?)"
echo -e "\x1b[31;1mWarning:\x1b[0m You have not agreed to the Xcode license.\nBuilds will fail! Agree to the license by opening Xcode.app or running:\n
xcodebuild -license\n\nOR for system-wide acceptance\n
sudo xcodebuild -license"
exit 1
fi
另一种方法是使用this applescript I created。
使用:
git clone https://gist.github.com/6237049.git
cd 6237049/
# Edit the script with AppleScript Editor to replace your APPLE ID and PASSWORD
osascript Install_XCode.applescript
您可能也对我的回答感兴趣:How download and Install Command Line Tools for Xcode。
我建议使用另一种方法而不是AppleScript方法。 applescript依赖于UI元素层次结构,对于OSX上App Store应用程序的未来版本,它可能并不总是保持不变。这对我来说似乎很脆弱。通过命令行通过dmg安装XCode可能是最可靠的方法。
答案 1 :(得分:2)
从Xcode 4.3开始,它作为应用程序包提供。第一次启动应用程序时,它将继续安装。由于它是测试版,它仍然没有修复,但目前发布后的安装包位于名为 Contents / Resources / Packages 的目录中的应用程序包中。
因此,根据您的环境,您的安装脚本只需将Xcode.app软件包复制到Applications目录中,您的用户就可以在第一次启动它时完成安装。或者,您可以复制捆绑包,然后使用installer(8)
实用程序手动安装其他包。有关使用安装程序的详细信息,请参阅man pages。
答案 2 :(得分:1)
好吧,对于谁访问此页面,Fastlane的一位作者构建了一个gem来自动执行此过程。
答案 3 :(得分:0)
用于自动下载和安装的很多东西已经过时了。我一直在为另一个项目工作,并认为我有一个非常好的解决方案:
https://github.com/rockholla/macosa/blob/master/bin/macosa_xcode
以下是下载部分:
https://github.com/rockholla/macosa/blob/master/bin/macosa_xcode_download
答案 4 :(得分:0)
# Install Command-line tools as dependency for Homebrew
xcode-select --install # Sets the development directory path to /Library/Developer/CommandLineTools
# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install Mas (command-line interface for Mac App Store)
brew install mas
# Search for Xcode showing only the first 5 results
mas search xcode | head -5
# Install Xcode using App ID
mas install 497799835 # The appid for Xcode shown when doing search
sudo xcode-select -r # Reset the development directory path to put to Xcode /Applications/Xcode.app/Contents/Developer
#sudo xcodebuild -license
# Updaate all Apple software and auto agree to any licenses and restart if necessary
sudo softwareupdate --install --agree-to-license -aR