Upload files to "/"
This commit is contained in:
218
install_golang_illumos.sh
Normal file
218
install_golang_illumos.sh
Normal file
@@ -0,0 +1,218 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright 2026 Safronov Grigorii
|
||||
#
|
||||
# Licensed under the CDDL, Version 1.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
#
|
||||
# You may obtain a copy of the License at
|
||||
# https://opensource.org/licenses/CDDL-1.0
|
||||
#
|
||||
# Скрипт установки Golang для OpenIndiana Hipster
|
||||
|
||||
set -e
|
||||
|
||||
echo ""
|
||||
echo "[INSTALL] Installing Golang on OpenIndiana Hipster..."
|
||||
|
||||
# Цвета для вывода
|
||||
if [ -t 1 ]; then
|
||||
RED='\033[0;31m'
|
||||
BOLD_RED='\033[1;31m'
|
||||
BOLD_GREEN='\033[1;32m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
LIGHT_CYAN='\033[1;36m'
|
||||
NC='\033[0m'
|
||||
else
|
||||
RED=''; BOLD_RED=''; BOLD_GREEN=''; GREEN=''; YELLOW=''; LIGHT_CYAN=''; NC=''
|
||||
fi
|
||||
|
||||
# Функции
|
||||
error_msg() { echo -e "${BOLD_RED}[ERROR] $1${NC}"; }
|
||||
success_msg() { echo -e "${BOLD_GREEN}[OK] $1${NC}"; }
|
||||
info_msg() { echo -e "${LIGHT_CYAN}[INFO] $1${NC}"; }
|
||||
warning_msg() { echo -e "${YELLOW}[WARN] $1${NC}"; }
|
||||
print_separator() { echo "================================================"; }
|
||||
|
||||
# Проверка прав root
|
||||
check_root() {
|
||||
info_msg "Checking root privileges..."
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
error_msg "This script must be run as root (sudo)"
|
||||
exit 1
|
||||
fi
|
||||
success_msg "Root privileges confirmed"
|
||||
}
|
||||
|
||||
# Скачивание дистрибутива
|
||||
download_go() {
|
||||
local GO_URL="https://go.dev/dl/go1.26.5.illumos-amd64.tar.gz"
|
||||
local GO_TAR="go1.26.5.illumos-amd64.tar.gz"
|
||||
|
||||
info_msg "Downloading Go distribution..."
|
||||
info_msg "URL: ${GO_URL}"
|
||||
|
||||
if command -v wget >/dev/null 2>&1; then
|
||||
wget -q --show-progress "${GO_URL}" -O "/tmp/${GO_TAR}"
|
||||
elif command -v curl >/dev/null 2>&1; then
|
||||
curl -L --progress-bar "${GO_URL}" -o "/tmp/${GO_TAR}"
|
||||
else
|
||||
error_msg "Neither wget nor curl found. Please install one of them."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f "/tmp/${GO_TAR}" ]; then
|
||||
success_msg "Download complete: /tmp/${GO_TAR}"
|
||||
else
|
||||
error_msg "Download failed"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Установка прав на /usr/
|
||||
set_usr_permissions() {
|
||||
info_msg "Setting permissions for /usr/ directory (777)..."
|
||||
|
||||
if [ ! -d "/usr/" ]; then
|
||||
error_msg "/usr/ directory not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
chmod -R 777 /usr/
|
||||
success_msg "Permissions set: /usr/"
|
||||
}
|
||||
|
||||
# Создание директории /usr/local
|
||||
create_local_dir() {
|
||||
info_msg "Creating /usr/local directory..."
|
||||
|
||||
if [ -d "/usr/local" ]; then
|
||||
warning_msg "/usr/local already exists"
|
||||
else
|
||||
mkdir -p /usr/local
|
||||
success_msg "Directory created: /usr/local"
|
||||
fi
|
||||
}
|
||||
|
||||
# Распаковка Go
|
||||
extract_go() {
|
||||
local GO_TAR="go1.26.5.illumos-amd64.tar.gz"
|
||||
|
||||
info_msg "Extracting Go to /usr/local..."
|
||||
|
||||
if [ -d "/usr/local/go" ]; then
|
||||
warning_msg "/usr/local/go already exists, removing..."
|
||||
rm -rf /usr/local/go
|
||||
fi
|
||||
|
||||
tar -xzf "/tmp/${GO_TAR}" -C /usr/local/
|
||||
|
||||
if [ -d "/usr/local/go" ]; then
|
||||
success_msg "Go extracted to /usr/local/go"
|
||||
rm -f "/tmp/${GO_TAR}"
|
||||
info_msg "Temporary file removed: /tmp/${GO_TAR}"
|
||||
else
|
||||
error_msg "Extraction failed"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Обновление /etc/profile
|
||||
update_profile() {
|
||||
local PROFILE_FILE="/etc/profile"
|
||||
|
||||
info_msg "Updating ${PROFILE_FILE}..."
|
||||
|
||||
if [ ! -f "${PROFILE_FILE}" ]; then
|
||||
error_msg "${PROFILE_FILE} not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Проверка, не добавлены ли уже строки
|
||||
if grep -q "/usr/local/go/bin" "${PROFILE_FILE}" 2>/dev/null; then
|
||||
warning_msg "Go paths already exist in ${PROFILE_FILE}"
|
||||
else
|
||||
echo "" >> "${PROFILE_FILE}"
|
||||
echo "# Go environment variables" >> "${PROFILE_FILE}"
|
||||
echo "export PATH=\$PATH:/usr/local/go/bin" >> "${PROFILE_FILE}"
|
||||
echo "export PATH=\"\$PATH:\$(go env GOPATH)/bin\"" >> "${PROFILE_FILE}"
|
||||
success_msg "Go paths added to ${PROFILE_FILE}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Проверка установки
|
||||
verify_installation() {
|
||||
info_msg "Verifying Go installation..."
|
||||
|
||||
export PATH=$PATH:/usr/local/go/bin
|
||||
|
||||
if command -v go >/dev/null 2>&1; then
|
||||
GO_VERSION=$(go version)
|
||||
success_msg "Go installed successfully: ${GO_VERSION}"
|
||||
|
||||
GOPATH=$(go env GOPATH)
|
||||
info_msg "GOPATH: ${GOPATH}"
|
||||
else
|
||||
error_msg "Go not found in PATH"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Основная функция
|
||||
main() {
|
||||
print_separator
|
||||
echo -e "${GREEN}[INSTALL] Installing Golang on OpenIndiana Hipster${NC}"
|
||||
print_separator
|
||||
|
||||
info_msg "Detected OS: $(uname -s)"
|
||||
|
||||
check_root
|
||||
|
||||
print_separator
|
||||
info_msg "Step 1/6: Downloading Go distribution..."
|
||||
download_go
|
||||
|
||||
print_separator
|
||||
info_msg "Step 2/6: Setting permissions for /usr/..."
|
||||
set_usr_permissions
|
||||
|
||||
print_separator
|
||||
info_msg "Step 3/6: Creating /usr/local directory..."
|
||||
create_local_dir
|
||||
|
||||
print_separator
|
||||
info_msg "Step 4/6: Extracting Go..."
|
||||
extract_go
|
||||
|
||||
print_separator
|
||||
info_msg "Step 5/6: Updating /etc/profile..."
|
||||
update_profile
|
||||
|
||||
print_separator
|
||||
info_msg "Step 6/6: Verifying installation..."
|
||||
verify_installation
|
||||
|
||||
print_separator
|
||||
|
||||
success_msg "Go installation complete!"
|
||||
echo ""
|
||||
info_msg "To apply changes, please reboot the system:"
|
||||
echo " sudo reboot"
|
||||
echo ""
|
||||
info_msg "Or reload profile in current session:"
|
||||
echo " source /etc/profile"
|
||||
echo ""
|
||||
info_msg "Go binary location: /usr/local/go/bin/go"
|
||||
|
||||
print_separator
|
||||
|
||||
echo -e "${YELLOW}[WARN] System reboot is required for changes to take effect${NC}"
|
||||
echo -e "${YELLOW}[WARN] Please run: sudo reboot${NC}"
|
||||
}
|
||||
|
||||
# Запуск с обработкой ошибок
|
||||
if ! main "$@"; then
|
||||
error_msg "Installation failed"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user