diff --git a/README.md b/README.md index d821503..3cc2755 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,10 @@ Python скрипт теперь автоматически загружает **Вариант 1: Автоматическая установка одной командой** ```bash -# Скачать и запустить установочный скрипт напрямую с GitHub +# Метод 1: Через pipe (рекомендуется) +curl -fsSL https://github.com/DFofanov/configure_nginx_manager/raw/refs/heads/master/letsencrypt_regru.sh | sudo bash + +# Метод 2: Через bash -c sudo bash -c "$(curl -fsSL https://github.com/DFofanov/configure_nginx_manager/raw/refs/heads/master/letsencrypt_regru.sh)" ``` @@ -176,21 +179,73 @@ tail -f /var/log/letsencrypt-regru/letsencrypt_regru.log ### Управление установкой +#### Обновление + ```bash -# Обновить приложение до последней версии (из локального репозитория) +# Способ 1: Из локального репозитория (если клонировали) cd configure_nginx_manager +git pull # Получить последние изменения sudo bash letsencrypt_regru.sh update -# Обновить приложение одной командой (без клонирования) +# Способ 2: Обновление одной командой с GitHub (рекомендуется) curl -fsSL https://github.com/DFofanov/configure_nginx_manager/raw/refs/heads/master/letsencrypt_regru.sh | sudo bash -s update -# Полностью удалить приложение (из репозитория) +# ❌ НЕ РАБОТАЕТ (неправильный синтаксис): +# sudo bash -c "$(curl -fsSL ...) update" # Аргументы не передаются! +``` + +#### Удаление + +```bash +# Способ 1: Из локального репозитория sudo bash letsencrypt_regru.sh uninstall -# Удалить приложение одной командой (без клонирования) +# Способ 2: Удаление одной командой с GitHub curl -fsSL https://github.com/DFofanov/configure_nginx_manager/raw/refs/heads/master/letsencrypt_regru.sh | sudo bash -s uninstall ``` +**💡 Совет:** При обновлении/удалении через curl скрипт автоматически скачивает необходимые файлы с GitHub. + +#### 📚 Техническая справка: Синтаксис команд + +
+Почему используется | sudo bash -s update вместо bash -c "$(curl ...) update"? + +**Правильный способ (с аргументами):** +```bash +curl -fsSL https://url/script.sh | sudo bash -s update +# ↑ +# -s передает аргументы скрипту +``` + +**Неправильный способ (аргументы игнорируются):** +```bash +sudo bash -c "$(curl -fsSL https://url/script.sh) update" +# ↑ +# Это НЕ аргумент для скрипта! +# Это аргумент для bash -c +``` + +**Объяснение:** +- `bash -c "command"` - выполняет команду как строку, дополнительные аргументы становятся позиционными параметрами для bash, а не для скрипта +- `bash -s arg1 arg2` - читает скрипт из stdin и передает arg1, arg2 как аргументы скрипту ($1, $2) + +**Альтернативные способы:** +```bash +# Вариант 1: Через pipe (рекомендуется) +curl -fsSL https://url/script.sh | sudo bash -s update + +# Вариант 2: Через временный файл +curl -fsSL https://url/script.sh -o /tmp/install.sh +sudo bash /tmp/install.sh update +rm /tmp/install.sh + +# Вариант 3: Через wget +wget -qO- https://url/script.sh | sudo bash -s update +``` + +
+ ### Расположение файлов После установки файлы находятся: diff --git a/letsencrypt_regru.sh b/letsencrypt_regru.sh index 0858367..1891a56 100644 --- a/letsencrypt_regru.sh +++ b/letsencrypt_regru.sh @@ -532,7 +532,7 @@ display_summary() { update_application() { header "Обновление приложения" - local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" 2>/dev/null && pwd)" local github_raw_url="https://raw.githubusercontent.com/DFofanov/configure_nginx_manager/refs/heads/master" msg_info "Остановка сервиса..." @@ -541,13 +541,13 @@ update_application() { msg_info "Обновление файлов..." # Попытка скопировать локально или скачать с GitHub - if [ -f "${script_dir}/letsencrypt_regru_api.py" ]; then + if [ -n "${script_dir}" ] && [ -f "${script_dir}/letsencrypt_regru_api.py" ]; then msg_info "Копирование из локальной директории..." cp "${script_dir}/letsencrypt_regru_api.py" "${APP_DIR}/" chmod 755 "${APP_DIR}/letsencrypt_regru_api.py" msg_ok "Файл скопирован локально" else - msg_info "Локальный файл не найден, скачивание с GitHub..." + msg_info "Скачивание обновления с GitHub..." if command -v curl &> /dev/null; then if curl -fsSL "${github_raw_url}/letsencrypt_regru_api.py" -o "${APP_DIR}/letsencrypt_regru_api.py"; then chmod 755 "${APP_DIR}/letsencrypt_regru_api.py"