From a7613a55f81ed0a86c90325766fd60c9c5f66e8e Mon Sep 17 00:00:00 2001 From: NW Date: Tue, 13 May 2025 15:20:47 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20setup=5Fvps.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup_vps.sh | 85 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 50 insertions(+), 35 deletions(-) diff --git a/setup_vps.sh b/setup_vps.sh index 26df6f1..84b13d4 100644 --- a/setup_vps.sh +++ b/setup_vps.sh @@ -33,7 +33,7 @@ get_arch() { esac } -# Функция для установки dry согласно официальной документации +# Функция для установки dry install_dry() { if command -v dry &> /dev/null; then echo -e "${GREEN}dry уже установлен.${NC}" @@ -42,34 +42,39 @@ install_dry() { echo -e "${YELLOW}Установка dry...${NC}" - # Установка через 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}" + # Вариант 1: Установка через официальный скрипт + if curl -sSf https://moncho.github.io/dry/dryup.sh | sudo sh; then + sudo chmod 755 /usr/local/bin/dry + echo -e "${GREEN}dry успешно установлен через официальный скрипт.${NC}" + return + fi + + echo -e "${YELLOW}Официальный скрипт не сработал, пробуем альтернативные методы...${NC}" + + ARCH=$(get_arch) + echo -e "${YELLOW}Архитектура системы: $ARCH${NC}" + + # Вариант 2: Установка из репозиториев (для ARM) + if [[ "$ARCH" == "arm64" || "$ARCH" == "arm" ]]; then + echo -e "${YELLOW}Попытка установки dry из репозиториев...${NC}" + sudo apt-get install -y dry && return + fi + + # Вариант 3: Ручная установка бинарника + if [ "$ARCH" != "unsupported" ]; then + LATEST_VERSION=$(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_VERSION}/dry-linux-${ARCH}" + + echo -e "${YELLOW}Скачивание dry для архитектуры ${ARCH}...${NC}" + if curl -sSL $DRY_URL -o /tmp/dry; then + sudo mv /tmp/dry /usr/local/bin/dry + sudo chmod +x /usr/local/bin/dry + echo -e "${GREEN}dry успешно установлен вручную.${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}" - fi + echo -e "${RED}Не удалось установить dry. Пропускаем...${NC}" } # Функция для определения дистрибутива @@ -205,25 +210,35 @@ else echo -e "${GREEN}Репозиторий уже клонирован.${NC}" fi -# Копирование файлов 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}" +# Копирование файлов tmux с проверкой +TMUX_SRC_DIR="$REPO_DIR/tmux" +if [ -d "$TMUX_SRC_DIR" ]; then + echo -e "${YELLOW}Копирование файлов tmux из $TMUX_SRC_DIR в /root/...${NC}" + if sudo cp -r "$TMUX_SRC_DIR/"* /root/ 2>/dev/null; then + echo -e "${GREEN}Файлы tmux успешно скопированы.${NC}" else - echo -e "${YELLOW}Папка tmux не найдена в репозитории.${NC}" + echo -e "${YELLOW}Попытка копирования отдельных файлов...${NC}" + # Пробуем копировать файлы по одному + for file in "$TMUX_SRC_DIR"/*; do + if [ -f "$file" ]; then + sudo cp "$file" /root/ && echo -e "${GREEN}Скопирован $file${NC}" || echo -e "${RED}Ошибка при копировании $file${NC}" + fi + done fi else - echo -e "${YELLOW}Репозиторий не найден, копирование tmux файлов невозможно.${NC}" + echo -e "${YELLOW}Папка tmux не найдена в репозитории.${NC}" + echo -e "${YELLOW}Ищем tmux файлы в других местах...${NC}" + # Поиск tmux файлов в других местах репозитория + find "$REPO_DIR" -name "*.tmux" -exec sudo cp {} /root/ \; 2>/dev/null && \ + echo -e "${GREEN}Найдены и скопированы tmux файлы${NC}" || \ + echo -e "${RED}Tmux файлы не найдены${NC}" fi # Вывод версий установленных программ echo -e "\n${GREEN}=== Установленные версии ===${NC}" tmux -V || echo "tmux: не удалось получить версию" mc -V || echo "mc: не удалось получить версию" -command -v dry >/dev/null && (echo -n "dry: "; dry --version 2>/dev/null || echo "версия неизвестна") || echo "dry: не установлен" +command -v dry >/dev/null && (echo -n "dry: "; dry --version || echo "версия неизвестна") || echo "dry: не установлен" docker --version || echo "docker: не удалось получить версию" docker compose version || echo "docker compose: не удалось получить версию" git --version || echo "git: не удалось получить версию"