Установка yc CLI — разбор официального скрипта
Для подключения Yandex Cloud к OpsMan AI удобно использовать yc — официальный CLI Yandex Cloud. Его устанавливают одной командой:
curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bashНиже — полный разбор скрипта. Если вы по понятным причинам не хотите запускать curl | bash вслепую — эта страница для вас.
- Скрипт официальный, публикуется Yandex и распространяется по лицензии MIT.
- Он не требует root, не трогает системные директории и не запускает демоны.
- Всё, что делает: определяет вашу ОС и архитектуру, скачивает бинарник
ycв~/yandex-cloud/bin/, и опционально добавляет одну строку в ваш~/.bashrc/~/.zshrc(для$PATHи автодополнения). - Перед установкой в
~/yandex-cloudбинарник сначала скачивается во временную директорию, проверяется (yc version), и только если проверка прошла — перемещается на место.
Источник скрипта
Заголовок раздела «Источник скрипта»- URL:
https://storage.yandexcloud.net/yandexcloud-yc/install.sh - Размер: ~10 KB, ~320 строк.
- Лицензия: MIT, Copyright (c) 2018 YANDEX LLC — прописана в самом скрипте.
- Тот же скрипт рекомендован в официальной документации Yandex Cloud.
Скачать скрипт без выполнения, чтобы сравнить самому:
curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh -o yc-install.shless yc-install.sh # читаемsha256sum yc-install.sh # фиксируем хешbash yc-install.sh # запускаем вручную после проверкиКлючевые свойства, которые важно знать
Заголовок раздела «Ключевые свойства, которые важно знать»| Свойство | Значение |
|---|---|
| Запускает sudo? | Нет |
Трогает системные пути (/usr/..., /etc/...)? | Нет |
Скачивает что-то помимо бинарника yc? | Нет |
| Запускает демоны / cron / службы? | Нет |
| Отправляет телеметрию? | Нет (сам скрипт — нет; CLI при работе может отправлять служебные запросы в API Yandex Cloud) |
| Куда кладёт файлы | ~/yandex-cloud/ |
| Какие env-переменные меняет | Добавляет ~/yandex-cloud/bin в $PATH через source файла в rc |
| Как удалить | rm -rf ~/yandex-cloud + удалить 2–3 строки из ~/.bashrc/~/.zshrc |
Что скрипт делает по порядку
Заголовок раздела «Что скрипт делает по порядку»1. Включает строгий режим bash
Заголовок раздела «1. Включает строгий режим bash»set -euo pipefailЛюбая ошибка, неинициализированная переменная или падение в pipeline — немедленный выход. Это хороший знак: скрипт написан аккуратно.
2. Определяет ОС и архитектуру
Заголовок раздела «2. Определяет ОС и архитектуру»SYSTEM=${CLI_INSTALL_SYSTEM:-$(uname -s)}MACHINE=${CLI_INSTALL_MACHINE:-$(uname -m)}- Linux, macOS (
Darwin), Windows (Cygwin/MinGW/MSYS) — поддерживаются. - Архитектуры:
amd64,386,arm64. Для Windows ARM — скрипт откажется с понятной ошибкой.
3. Определяет shell и целевой rc-файл
Заголовок раздела «3. Определяет shell и целевой rc-файл»SHELL_NAME=$(basename "${SHELL}")DEFAULT_RC_PATH="${HOME}/.bashrc"# для zsh → ~/.zshrc, для macOS + bash → ~/.bash_profileРешает, какой файл потом предлагать модифицировать. Это действие — опциональное; вы можете отказаться (см. ниже про флаг -n).
4. Разбирает опции командной строки
Заголовок раздела «4. Разбирает опции командной строки»while getopts "hi:r:na" opt ; do ...| Опция | Что делает |
|---|---|
-i DIR | Установить в DIR вместо ~/yandex-cloud |
-r FILE | Модифицировать указанный rc-файл |
-n | Не модифицировать rc и не спрашивать об этом |
-a | Автоматически модифицировать дефолтный rc без вопроса |
-h | Показать help |
5. Настраивает curl с retry и таймаутами
Заголовок раздела «5. Настраивает curl с retry и таймаутами»CURL_OPTIONS=("-fS")# + --retry 5 --retry-delay 0 --retry-max-time 120# + --connect-timeout 5 --max-time 300# + --retry-connrefusedВсе HTTP-запросы к storage.yandexcloud.net идут с нормальными таймаутами и ретраями — не повиснет намертво.
6. Получает номер текущей stable-версии
Заголовок раздела «6. Получает номер текущей stable-версии»SDK_STORAGE_URL="https://storage.yandexcloud.net/yandexcloud-yc"VERSION=$(curl_with_retry -s "${SDK_STORAGE_URL}/release/stable")Один HTTPS-запрос за номером версии. Переопределяется переменной CLI_VERSION=... — удобно, если нужно зафиксировать конкретный релиз.
7. Скачивает бинарник во временную директорию
Заголовок раздела «7. Скачивает бинарник во временную директорию»TMP_INSTALL_PATH=$(mktemp -d "${TMPDIR}/yc-install.XXXXXXXXX")trap cleanup EXIT # cleanup: rm -rf "${TMP_INSTALL_PATH}"
curl_with_retry "${SDK_STORAGE_URL}/release/${VERSION}/${GOOS}/${GOARCH}/yc" \ -o "${TMP_INSTALL_PATH}/yc"Бинарник сначала попадает в /tmp (или ваш $TMPDIR). При любом падении сработает trap cleanup EXIT — временная директория удалится. Никаких «частично установленных» состояний.
8. Проверяет, что бинарник живой
Заголовок раздела «8. Проверяет, что бинарник живой»chmod +x "${TMP_CLI}"${TMP_CLI} version || echo "Installation failed..."Запускает скачанный бинарник с флагом version. Если что-то не так — в stdout будет понятное сообщение. Ни одного действия в вашей системе на этом этапе ещё не сделано.
9. Перемещает бинарник в целевую директорию
Заголовок раздела «9. Перемещает бинарник в целевую директорию»mkdir -p "${CLI_INSTALL_PATH}/bin" # ~/yandex-cloud/binmv -f "${TMP_CLI}" "${CLI_BIN_FULL_PATH}"mkdir -p "${CLI_INSTALL_PATH}/.install"По умолчанию — ~/yandex-cloud/bin/yc. Одна директория в вашем $HOME, ничего вне её.
10. Генерирует файлы для PATH и автодополнения
Заголовок раздела «10. Генерирует файлы для PATH и автодополнения»# completion.bash.inc или completion.zsh.inc"${CLI_BIN_FULL_PATH}" completion bash > "${CLI_BASH_COMPLETION}"# path.bash.inc: добавляет ~/yandex-cloud/bin в $PATHДва вспомогательных файла внутри ~/yandex-cloud/:
completion.bash.incилиcompletion.zsh.inc— автодополнение команд.path.bash.inc— экспортирует~/yandex-cloud/binв$PATHдля текущей shell-сессии, когда этот файл будет подключён.
11. Опционально правит ваш rc-файл
Заголовок раздела «11. Опционально правит ваш rc-файл»Это единственное место, где скрипт трогает что-то вне ~/yandex-cloud/. Добавляются две строки в конец .bashrc / .zshrc / .bash_profile:
# The next line updates PATH for CLI.if [ -f '/.../yandex-cloud/path.bash.inc' ]; then source '/.../yandex-cloud/path.bash.inc'; fi
# The next line enables shell command completion for yc.if [ -f '/.../yandex-cloud/completion.bash.inc' ]; then source '/.../yandex-cloud/completion.bash.inc'; fiСкрипт проверяет grep -Fq, что таких строк ещё нет — значит повторный запуск не задублирует.
Поведение:
- Без флагов, в интерактивном терминале — спрашивает
[Y/n]перед правкой. На «n» не трогает ничего. - С флагом
-n— не трогает и не спрашивает. - С флагом
-aили приcurl | bash(stdin не TTY) — модифицирует дефолтный rc автоматически.
12. Выполняет yc components post-update
Заголовок раздела «12. Выполняет yc components post-update»"${CLI_BIN_FULL_PATH}" components post-updateФинальный шаг: yc подготавливает свои локальные компоненты в ~/yandex-cloud/.install/. Никаких сетевых запросов здесь нет.
Что скрипт не делает
Заголовок раздела «Что скрипт не делает»- Не требует root и не запрашивает пароль.
- Не пишет в
/usr/local/bin,/etc,/var, системные cron. - Не скачивает бинарников помимо
yc. - Не запускает никакие службы в фоне.
- Не модифицирует PATH окружения без вашего согласия — только через rc-файл, куда вы сами решаете, добавлять ли.
Проверка и контроль
Заголовок раздела «Проверка и контроль»Перед запуском можно:
-
Скачать без выполнения:
Окно терминала curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh -o yc-install.sh -
Прочитать:
less yc-install.sh— он читается за 5 минут. -
Проверить подпись источника (TLS-сертификат
storage.yandexcloud.netподтверждает, что это действительно Yandex). -
Запустить с контролем флагов:
Окно терминала bash yc-install.sh -n # без модификации rcbash yc-install.sh -i ~/bin/yc-install -n # в произвольную директорию
Что получаете в итоге
Заголовок раздела «Что получаете в итоге»~/yandex-cloud/├── bin/│ └── yc # бинарник, 50–70 MB├── completion.bash.inc # автодополнение для bash├── completion.zsh.inc # автодополнение для zsh├── path.bash.inc # экспорт PATH└── .install/ # локальные метаданные ycИ максимум две добавленные строки в ~/.bashrc / ~/.zshrc / ~/.bash_profile — легко находятся и легко удаляются.
Полная деинсталляция
Заголовок раздела «Полная деинсталляция»# 1. Удалить директориюrm -rf ~/yandex-cloud
# 2. Убрать ссылки из rc-файлаsed -i.bak '/yandex-cloud\/path.bash.inc/d;/yandex-cloud\/completion\./d' \ ~/.bashrc ~/.zshrc ~/.bash_profile 2>/dev/null || trueПосле этого в системе не остаётся следов yc.
Следующий шаг
Заголовок раздела «Следующий шаг»После установки — запустите yc init и следуйте подсказкам.
Далее выполняйте команды создания service account из раздела Подключение Yandex Cloud.