Установка GitHub CLI на Debian 13, 12 и 11

💡 Что такое GitHub CLI и зачем он вам — это официальная утилита командной строки от GitHub, которая позволяет управлять репозиториями, пулл-реквестами, ишью, релизами и workflow’ами прямо из терминала. Всё, что вы делаете в браузере на GitHub, можно автоматизировать через gh.

Мы установим GitHub CLI из официального APT-репозитория GitHub — это даст самую свежую версию на любой версии Debian (13, 12 и 11). Альтернатива — устаревшие пакеты из репозиториев Debian (на Debian 11 их вообще нет).

⚠️ Важное предупреждение: GitHub CLI работает вместе с Git, а не заменяет его. Команды git clone, git push, git commit остаются. gh добавляет GitHub-специфичные действия (пулл-реквесты, ишью, релизы). Убедитесь, что Git установлен и настроен.

Оглавление

Предварительные требования

Прежде чем начать, убедитесь, что ваша система готова:

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает:

  • sudo — выполняет команду от имени суперпользователя
  • whoami — показывает имя текущего пользователя

Зачем: Проверяет, может ли ваш пользователь выполнять команды с правами root.

✅ Если выводит root — всё в порядке, можете продолжать.

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.

Дополнительные требования:

  • Git — должен быть установлен и настроен (имя пользователя, email)
  • Интернет-соединение — для скачивания пакета и авторизации
  • Аккаунт на GitHub — для авторизации

Какой метод установки выбрать?

Источник установкиDebian 13Debian 12Debian 11Когда использовать
Официальный
репозиторий GitHub
Актуальная версияАктуальная версияАктуальная версияРекомендуется — всегда свежая версия
от GitHub
Репозитории Debian2.46.x (устаревшая)2.23.x
(сильно устаревшая)
Нет пакетаТолько если вас
устраивает старая
версия

💡 GitHub предупреждает: Некоторые старые сборки (2.45.x, 2.46.x) из репозиториев Debian используют устаревшее поведение GitHub API, которое может работать некорректно. Используйте официальный репозиторий.

Установка GitHub CLI из официального репозитория

Шаг 1: Обновление системы

sudo apt update

Что делает: Обновляет список доступных пакетов.

Зачем: Всегда обновляйте список пакетов перед добавлением нового репозитория.

Шаг 2: Установка зависимостей

sudo apt install -y curl ca-certificates gpg

Что делает:

  • curl — для скачивания ключа
  • ca-certificates — сертификаты для HTTPS
  • gpg — для работы с GPG-ключами

Зачем: Эти пакеты нужны для безопасного добавления репозитория GitHub.

Шаг 3: Скачивание и проверка ключа подписи GitHub

curl -fsSLo githubcli-archive-keyring.gpg https://cli.github.com/packages/githubcli-archive-keyring.gpg

Что делает: Скачивает готовый связку ключей (keyring) для APT-репозитория GitHub CLI.

Что означают флаги curl:

  • -f — вернуть ошибку при серверной ошибке
  • -s — тихий режим
  • -S — но показывать ошибки
  • -L — следовать за перенаправлениями
  • -o — сохранить в файл
gpg --quiet --show-keys --with-fingerprint githubcli-archive-keyring.gpg

Что делает: Показывает отпечатки ключей, содержащихся в keyring’е.

Ожидаемый вывод (должны быть оба отпечатка):

    2C61 0620 1985 B60E 6C7A  C873 23F3 D4EA 7571 6059
    7F38 BBB5 9D06 4DBC B3D8  4D72 5612 B364 6231 3325

Зачем: Проверка отпечатков гарантирует, что keyring не был подменён. Второй ключ (7F38…) — это новый ключ подписи, добавленный GitHub в апреле 2026 года.

Шаг 4: Установка ключа в систему

sudo install -m 0755 -d /etc/apt/keyrings
sudo install -m 0644 githubcli-archive-keyring.gpg /etc/apt/keyrings/githubcli-archive-keyring.gpg
rm -f githubcli-archive-keyring.gpg

Что делает:

  • Создаёт директорию для ключей (если её нет)
  • Устанавливает keyring в системную директорию с правами на чтение
  • Удаляет временную копию

Шаг 5: Создание APT-источника GitHub CLI

printf '%s\n' \
'Types: deb' \
'URIs: https://cli.github.com/packages' \
'Suites: stable' \
'Components: main' \
"Architectures: $(dpkg --print-architecture)" \
'Signed-By: /etc/apt/keyrings/githubcli-archive-keyring.gpg' \
| sudo tee /etc/apt/sources.list.d/github-cli.sources > /dev/null

Что делает: Создаёт современный DEB822-файл источника APT.

Что означают поля:

  • Types: deb — тип пакетов
  • URIs — адрес репозитория
  • Suites: stable — кодовое имя (GitHub использует stable, не привязываясь к Debian)
  • Components: main — компонент репозитория
  • Architectures — архитектура вашего процессора (автоматически)
  • Signed-By — путь к ключу для проверки подписи

Шаг 6: Обновление APT и установка GitHub CLI

sudo apt update

Что делает: Обновляет список пакетов, теперь включая репозиторий GitHub.

Ожидаемый вывод (должна быть строка с cli.github.com):

Get:1 https://cli.github.com/packages stable InRelease [3,917 B]
Get:2 https://cli.github.com/packages stable/main amd64 Packages [356 B]
apt-cache policy gh

Что делает: Показывает, откуда будет установлен пакет.

Что ищем: В выводе должна быть строка с https://cli.github.com/packages.

sudo apt install -y gh

Что делает: Устанавливает GitHub CLI.

Примечание: APT может установить git, если его ещё нет в системе — это нормально.

Шаг 7: Проверка установки

gh --version

Ожидаемый вывод:

gh version 2.92.0 (2026-04-28)
https://github.com/cli/cli/releases/tag/v2.92.0

Настройка GitHub CLI

После установки нужно авторизоваться и подключить GitHub CLI к вашему аккаунту.

Авторизация через браузер (рекомендуется)

gh auth login

Что делает: Запускает интерактивный мастер авторизации.

Что отвечать на вопросы:

ВопросРекомендуемый ответПочему
What account do you want to log into?GitHub.comДля обычного аккаунта
What is your preferred protocol for Git
operations?
HTTPSПроще настройка
(не нужны SSH-ключи)
Authenticate with a web browser?YesСамый удобный способ
How would you like to authenticate
GitHub CLI?
Login with a web browserБезопасно и просто

Что произойдёт:

  1. Терминал покажет код для входа (например, ABCD-1234)
  2. Откроется браузер (или будет ссылка)
  3. Вы вводите код на GitHub
  4. Подтверждаете авторизацию
gh auth status

Что делает: Показывает статус авторизации (какой аккаунт, какой хост).

Ожидаемый вывод:

github.com
  ✓ Logged in to github.com as your-username (oauth_token)

Настройка Git для использования GitHub CLI (для HTTPS)

Если вы выбрали HTTPS при авторизации:

gh auth setup-git

Что делает: Настраивает Git так, чтобы он использовал токен от GitHub CLI вместо запроса пароля.

Зачем: После этого обычные git push и git pull будут работать без дополнительной авторизации.

Настройка редактора для GitHub CLI

GitHub CLI открывает редактор для длинных сообщений (пулл-реквестов, ишью):

gh config set editor "nano"

Что делает: Устанавливает редактор по умолчанию (здесь nano — простой редактор в терминале).

Для VS Code:

gh config set editor "code --wait"

Что означает --wait: VS Code откроется и будет ждать, пока вы не закроете окно редактора.

Использование GitHub CLI

Базовые команды

# Клонировать репозиторий (не копируя URL)
gh repo clone username/repo

# Список открытых ишью
gh issue list

# Создать пулл-реквест (из текущей ветки)
gh pr create

# Проверить пулл-реквест локально
gh pr checkout 123

# Список релизов
gh release list

# Список GitHub Actions workflow
gh workflow list

Пример рабочего процесса

  1. Клонируете репозиторий:
   gh repo clone octocat/Hello-World
   cd Hello-World
  1. Создаёте ветку и вносите изменения:
   git checkout -b fix-bug
   # ... редактируете файлы ...
   git add .
   git commit -m "Fix bug"
   git push origin fix-bug
  1. Создаёте пулл-реквест:
   gh pr create --title "Fix bug" --body "Description of the fix"
  1. Проверяете статус CI:
   gh run list

Работа с расширениями

GitHub CLI поддерживает расширения:

# Поиск расширений
gh extension search

# Список установленных
gh extension list

Управление и обновление

Обновление GitHub CLI

sudo apt update
sudo apt install --only-upgrade gh

Что делает: Обновляет только gh, если он уже установлен (не установит заново).

Переключение между аккаунтами

Если у вас несколько аккаунтов GitHub:

# Авторизовать другой аккаунт
gh auth login

# Переключиться между аккаунтами
gh auth switch

Обновление токена (если истёк)

gh auth refresh

Что делает: Обновляет scopes (разрешения) токена, не требуя повторной авторизации.

Решение типичных проблем

8.1 Ошибка: Unable to locate package gh

Симптом: При sudo apt install gh пишет E: Unable to locate package gh.

Причина: Репозиторий GitHub не добавился или APT не обновился.

Пошаговое решение:

Шаг 1: Проверьте, существует ли файл источника:

cat /etc/apt/sources.list.d/github-cli.sources

Шаг 2: Проверьте, обновлялся ли APT:

sudo apt update
apt-cache policy gh

Шаг 3: Если файла нет — повторите шаги 3-6 из раздела установки.

8.2 Ошибка: Signature verification failed (ошибка GPG)

Симптом: sudo apt update выдаёт:

The following signatures couldn't be verified because the public key is not available

Причина: Ключ подписи не добавлен или повреждён.

Пошаговое решение:

Шаг 1: Удалите старые файлы репозитория:

sudo rm -f /etc/apt/sources.list.d/github-cli.list

Шаг 2: Скачайте и установите keyring заново:

curl -fsSLo githubcli-archive-keyring.gpg https://cli.github.com/packages/githubcli-archive-keyring.gpg
sudo install -m 0755 -d /etc/apt/keyrings
sudo install -m 0644 githubcli-archive-keyring.gpg /etc/apt/keyrings/githubcli-archive-keyring.gpg
rm -f githubcli-archive-keyring.gpg

Шаг 3: Обновите APT:

sudo apt update

8.3 Ошибка: gh: command not found (после установки через Snap)

Симптом: Вы установили gh через Snap, но команда не найдена.

Причина: /snap/bin не в PATH текущей сессии.

Решение: Откройте новый терминал или выполните:

source /etc/profile

(Если устанавливали через APT — эта проблема не должна возникнуть).

8.4 Ошибка: Permission denied (publickey) при git push

Симптом: После настройки GitHub CLI не работает git push с ошибкой:

git@github.com: Permission denied (publickey).

Причина: GitHub CLI настроен на SSH, но SSH-ключ не добавлен в аккаунт GitHub.

Пошаговое решение:

Шаг 1: Проверьте, какой протокол использует GitHub CLI:

gh config get git_protocol

Шаг 2: Если выводит ssh, а ключ не настроен — переключитесь на HTTPS:

gh config set git_protocol https

Шаг 3: Если хотите остаться на SSH — добавьте ключ:

# Сгенерировать ключ (если нет)
ssh-keygen -t ed25519 -C "your-email@example.com"

# Вывести публичный ключ
cat ~/.ssh/id_ed25519.pub

Скопируйте вывод и добавьте ключ в GitHub: Settings → SSH and GPG keys → New SSH key.

8.5 Ошибка: Token expired или scopes недостаточно

Симптом: gh команды работают, но некоторые (например, работа с оргнаизациями) выдают ошибку.

Причина: Токен авторизации устарел или имеет недостаточно разрешений.

Решение:

gh auth refresh

Что делает: Обновляет токен и его scopes без повторной авторизации.

8.6 Ошибка: GH_TOKEN environment variable overrides login

Симптом: gh auth status показывает Logged in через токен окружения, а не через обычную авторизацию.

Причина: Переменные GH_TOKEN или GITHUB_TOKEN установлены в окружении.

Пошаговое решение:

Шаг 1: Проверьте, установлены ли переменные:

echo $GH_TOKEN
echo $GITHUB_TOKEN

Шаг 2: Если они не нужны — уберите их:

unset GH_TOKEN
unset GITHUB_TOKEN

Шаг 3: Выполните авторизацию заново:

gh auth login

Удаление GitHub CLI

Шаг 1: Удаление авторизации (опционально)

gh auth logout

Что делает: Удаляет локальную конфигурацию авторизации (токен). Не отзывает токен на стороне GitHub.

Шаг 2: Удаление пакета

sudo apt remove gh

Что делает: Удаляет пакет GitHub CLI.

Шаг 3: Удаление репозитория и ключа

sudo rm -f /etc/apt/sources.list.d/github-cli.sources
sudo rm -f /etc/apt/sources.list.d/github-cli.list
sudo rm -f /etc/apt/keyrings/githubcli-archive-keyring.gpg
sudo apt update

Что делает: Удаляет файлы репозитория и ключ подписи.

Шаг 4: Удаление пользовательских данных (опционально)

rm -rf ~/.config/gh

Что делает: Удаляет все настройки GitHub CLI для текущего пользователя.

Шаг 5: Удаление неиспользуемых зависимостей

sudo apt autoremove

Что делает: Удаляет пакеты, которые были установлены как зависимости, но больше не нужны (например, Git, если он не требовался отдельно).

Чек-лист: что проверить после установки

  • [ ] sudo whoami выводит root
  • [ ] gh --version показывает версию (например, 2.92.0)
  • [ ] gh auth status показывает Logged in to github.com as username
  • [ ] gh repo clone username/repo работает (клонирует репозиторий)
  • [ ] gh issue list работает (внутри репозитория)
  • [ ] git push работает (если выводит успешно — всё настроено)

Заключение

GitHub CLI успешно установлен на Debian из официального репозитория GitHub. Теперь вы можете управлять пулл-реквестами, ишью, релизами и workflow’ами не выходя из терминала.

Что дальше:

💡 Важно: GitHub CLI дополняет Git, но не заменяет его. Изучайте git параллельно — вместе они делают работу с GitHub максимально эффективной. Всегда проверяйте версию gh и регулярно обновляйте её через APT.