diff --git a/setup_vps.sh b/setup_vps.sh index 81b4eb9..26df6f1 100644 --- a/setup_vps.sh +++ b/setup_vps.sh @@ -33,34 +33,42 @@ get_arch() { esac } -# Функция для установки dry с учетом архитектуры +# Функция для установки dry согласно официальной документации install_dry() { - ARCH=$(get_arch) - echo -e "${YELLOW}Определена архитектура: $ARCH${NC}" - - if [ "$ARCH" == "unsupported" ]; then - echo -e "${RED}Ваша архитектура не поддерживается. Пропускаем установку dry.${NC}" - return - fi - - # Для ARM устройств используем версию из репозиториев - if [[ "$ARCH" == "arm64" || "$ARCH" == "arm" ]]; then - echo -e "${YELLOW}Установка dry из репозиториев для ARM...${NC}" - sudo apt-get install -y dry + if command -v dry &> /dev/null; then + echo -e "${GREEN}dry уже установлен.${NC}" return fi echo -e "${YELLOW}Установка dry...${NC}" - DRY_URL="https://github.com/moncho/dry/releases/latest/download/dry-linux-${ARCH}" - echo -e "${YELLOW}Скачивание dry для архитектуры ${ARCH}...${NC}" - if curl -fsSL $DRY_URL -o dry; then - chmod +x dry - sudo mv dry /usr/local/bin/ + # Установка через go (если установлен) + if command -v go &> /dev/null; then + echo -e "${YELLOW}Установка через go...${NC}" + go install github.com/moncho/dry@latest + if [ $? -eq 0 ]; then + echo -e "${GREEN}dry успешно установлен через go.${NC}" + return + fi + fi + + # Установка через скачивание бинарника + ARCH=$(get_arch) + if [ "$ARCH" == "unsupported" ]; then + echo -e "${RED}Архитектура не поддерживается для dry.${NC}" + return + fi + + echo -e "${YELLOW}Скачивание dry для архитектуры ${ARCH}...${NC}" + LATEST_RELEASE=$(curl -s https://api.github.com/repos/moncho/dry/releases/latest | grep 'tag_name' | cut -d\" -f4) + DRY_URL="https://github.com/moncho/dry/releases/download/${LATEST_RELEASE}/dry-linux-${ARCH}" + + if curl -fsSL $DRY_URL -o /tmp/dry; then + chmod +x /tmp/dry + sudo mv /tmp/dry /usr/local/bin/ echo -e "${GREEN}dry успешно установлен.${NC}" else - echo -e "${RED}Ошибка при скачивании dry. Попробуем установить из репозиториев...${NC}" - sudo apt-get install -y dry || echo -e "${RED}Не удалось установить dry.${NC}" + echo -e "${RED}Не удалось установить dry.${NC}" fi } @@ -131,11 +139,7 @@ else fi # Установка dry -if ! command -v dry &> /dev/null; then - install_dry -else - echo -e "${GREEN}dry уже установлен.${NC}" -fi +install_dry # Установка btop if ! command -v btop &> /dev/null; then @@ -201,20 +205,25 @@ else echo -e "${GREEN}Репозиторий уже клонирован.${NC}" fi -# Копирование файлов tmux -if [ -d "$REPO_DIR/tmux" ]; then - echo -e "${YELLOW}Копирование файлов tmux в /root/...${NC}" - sudo cp -r "$REPO_DIR/tmux/"* /root/ || echo -e "${RED}Не удалось скопировать файлы tmux.${NC}" - echo -e "${GREEN}Файлы tmux успешно скопированы.${NC}" +# Копирование файлов tmux (с проверкой существования) +if [ -d "$REPO_DIR" ]; then + if [ -d "$REPO_DIR/tmux" ]; then + echo -e "${YELLOW}Копирование файлов tmux...${NC}" + sudo cp -r "$REPO_DIR/tmux/." /root/ 2>/dev/null && \ + echo -e "${GREEN}Файлы tmux успешно скопированы.${NC}" || \ + echo -e "${RED}Не удалось скопировать файлы tmux.${NC}" + else + echo -e "${YELLOW}Папка tmux не найдена в репозитории.${NC}" + fi else - echo -e "${YELLOW}Папка tmux не найдена в репозитории.${NC}" + echo -e "${YELLOW}Репозиторий не найден, копирование tmux файлов невозможно.${NC}" fi # Вывод версий установленных программ echo -e "\n${GREEN}=== Установленные версии ===${NC}" tmux -V || echo "tmux: не удалось получить версию" mc -V || echo "mc: не удалось получить версию" -command -v dry >/dev/null && dry --version || echo "dry: не установлен или не поддерживается" +command -v dry >/dev/null && (echo -n "dry: "; dry --version 2>/dev/null || echo "версия неизвестна") || echo "dry: не установлен" docker --version || echo "docker: не удалось получить версию" docker compose version || echo "docker compose: не удалось получить версию" git --version || echo "git: не удалось получить версию"