123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- #!/bin/bash
- #
- # Copyright (c) 2024, RT-Thread Development Team
- #
- # SPDX-License-Identifier: Apache-2.0
- #
- # Change Logs:
- # Date Author Notes
- # 2024-08-27 Supperthomas the first version
- #
- #这个脚本用于安装RT-Thread开发环境 请确保网络畅通
- # 设置环境变量 如果希望生效请在当前shell中执行source install.sh
- export RTT_ROOT=$(pwd)
- export RTT_CC=gcc
- echo "RTT_ROOT is set to: $RTT_ROOT"
- check_if_china_ip() {
- # 默认情况下不使用gitee
- use_gitee=false
- # 尝试通过IP地址判断
- ip=$(curl -s https://ifconfig.me/ip)
- if [ -n "$ip" ]; then
- location=$(curl -s http://www.ip-api.com/json/$ip | grep -o '"country":"China"')
- if [ "$location" == '"country":"China"' ]; then
- use_gitee=true
- echo "Detected China IP. Using gitee."
- else
- echo "IP location is not in China."
- fi
- else
- echo "Failed to retrieve IP address. Falling back to timezone check."
-
- # 通过时区判断
- if [ $(($(date +%z)/100)) -eq 8 ]; then
- use_gitee=true
- echo "Detected timezone UTC+8. Using gitee."
- else
- echo "Timezone is not UTC+8."
- fi
- fi
- echo $use_gitee
- }
- # 检测操作系统类型和发行版
- detect_os() {
- if command -v uname >/dev/null 2>&1; then
- OS=$(uname -s)
- else
- if [ -f "/etc/os-release" ]; then
- OS="Linux"
- elif [ -f "/System/Library/CoreServices/SystemVersion.plist" ]; then
- OS="macOS"
- elif [[ -d "/mnt/c/Windows" || -d "/c/Windows" ]]; then
- OS="WSL"
- else
- OS="UNKNOWN"
- fi
- fi
- if [ "$OS" == "Linux" ]; then
- if [ -f /etc/os-release ]; then
- . /etc/os-release
- DISTRO=$ID
- VERSION=$VERSION_ID
- elif [ -f /etc/lsb-release ]; then
- . /etc/lsb-release
- DISTRO=$DISTRIB_ID
- VERSION=$DISTRIB_RELEASE
- else
- DISTRO="UNKNOWN"
- VERSION="UNKNOWN"
- fi
- fi
- echo "Detected Operating System: $OS, Distribution: $DISTRO, Version: $VERSION"
- }
- # 修改的安装函数
- install_on_ubuntu() {
- echo "Installing on Debian/Ubuntu..."
- use_gitee=$(check_if_china_ip)
- # 根据检测结果决定是否使用--gitee参数
- if [ "$use_gitee" = true ]; then
- wget https://raw.githubusercontent.com/RT-Thread/env/master/install_ubuntu.sh
- chmod 777 install_ubuntu.sh
- echo "Installing on China gitee..."
- ./install_ubuntu.sh --gitee
- else
- wget https://raw.githubusercontent.com/RT-Thread/env/master/install_ubuntu.sh
- chmod 777 install_ubuntu.sh
- echo "Installing on no China..."
- ./install_ubuntu.sh
- fi
- rm install_ubuntu.sh
- }
- install_on_fedora() {
- echo "Installing on Fedora..."
- }
- install_on_centos() {
- echo "Installing on CentOS/RHEL..."
- }
- install_on_arch() {
- echo "Installing on Arch Linux..."
- }
- install_on_macos() {
- echo "Installing on macOS..."
- use_gitee=$(check_if_china_ip)
- # 根据检测结果决定是否使用--gitee参数
- if [ "$use_gitee" = true ]; then
- wget https://raw.githubusercontent.com/RT-Thread/env/master/install_macos.sh
- chmod 777 install_macos.sh
- echo "Installing on China gitee..."
- ./install_macos.sh --gitee
- else
- wget https://raw.githubusercontent.com/RT-Thread/env/master/install_macos.sh
- chmod 777 install_macos.sh
- echo "Installing on no China..."
- ./install_macos.sh
- fi
- rm ./install_macos.sh
- }
- install_on_wsl() {
- echo "Installing on Windows Subsystem for Linux (WSL)..."
- }
- install_on_windows() {
- echo "Installing on Windows using PowerShell..."
- use_gitee=$(check_if_china_ip)
- # 根据检测结果决定是否使用--gitee参数
- if [ "$use_gitee" = true ]; then
- wget https://raw.githubusercontent.com/RT-Thread/env/master/install_windows.ps1
- echo "Installing on China gitee..."
- ./install_windows.ps1 --gitee
- else
- wget https://raw.githubusercontent.com/RT-Thread/env/master/install_windows.ps1
- echo "Installing on no China..."
- ./install_windows.ps1
- fi
- rm ./install_windows.ps1
- }
- install_on_opensuse() {
- echo "Installing on openSUSE..."
- use_gitee=$(check_if_china_ip)
- if [ "$use_gitee" = true ]; then
- wget https://raw.githubusercontent.com/RT-Thread/env/master/install_suse.sh
- chmod 777 install_suse.sh
- echo "Installing on China gitee..."
- ./install_suse.sh --gitee
- else
- wget https://raw.githubusercontent.com/RT-Thread/env/master/install_suse.sh
- chmod 777 install_suse.sh
- echo "Installing on no China..."
- ./install_suse.sh
- fi
- rm ./install_suse.sh
- }
- # 主函数
- main() {
- detect_os
- case "$OS" in
- Linux)
- case "$DISTRO" in
- ubuntu|debian)
- install_on_ubuntu
- ;;
- fedora)
- install_on_fedora
- ;;
- centos|rhel)
- install_on_centos
- ;;
- arch)
- install_on_arch
- ;;
- *)
- echo "Unsupported Linux distribution: $DISTRO"
- exit 1
- ;;
- esac
- ;;
- macOS)
- install_on_macos
- ;;
- WSL)
- install_on_wsl
- ;;
- Windows)
- install_on_windows
- ;;
- *)
- echo "Unsupported Operating System: $OS"
- exit 1
- ;;
- esac
- echo "Installation completed!"
- }
- # 执行主函数
- main
|