Инфраструктура и автоматизация

​

Как подготовить Ubuntu для работы с Codex

Создано 04.11.2026

Обновлено 04.11.2026

Установка Codex CLI в Ubuntu, вход и первый запрос на учебном репозитории. Сравнение Desktop, SSH и WSL2, команды и проверка результата.

Короткий ответ

Codex CLI — клиент Codex с интерфейсом командной строки. В Ubuntu ему не нужна графическая оболочка: он запускается в терминале рядом с репозиторием и зависимостями проекта. Ubuntu Desktop удобна, когда на том же компьютере нужны браузер, редактор и приложения с окнами. Ubuntu Server подходит для удалённой работы через защищённое соединение SSH. Windows с WSL2 — подсистемой Windows для Linux второй версии — позволяет выполнять Linux-команды без замены основной системы.

Ubuntu не делает модель точнее сама по себе. Выбирайте среду, в которой воспроизводятся сборка и тесты вашего проекта. Ниже — установка официального CLI, учебный репозиторий на Python и проверка первого изменения. Команды рассчитаны на оболочку Bash в Ubuntu 24.04 LTS (выпуске с длительной поддержкой) и обычную учётную запись с правом установки пакетов. Для WSL2 команды выполняются внутри Ubuntu, для SSH — на сервере.

Где запускать Codex и нужен ли рабочий стол

ВариантГде выполняются командыКогда выбирать
Ubuntu DesktopЛокально в Linux; здесь же могут работать редактор и браузер.Разработка Linux-проекта на одном компьютере и проверка интерфейса в локальном браузере.
Ubuntu Server через SSHНа удалённом Linux-сервере; интерфейс редактора может оставаться на вашем компьютере.Постоянная удалённая среда или ресурсы, которых нет локально. Рабочий стол серверу не обязателен.
Windows с WSL2В установленном Linux-дистрибутиве, если CLI и терминал запущены в нём.Нужны приложения Windows и Linux-инструменты для проекта. Репозиторий для Linux-проверок удобнее держать в домашней папке WSL.
Windows без WSLВ Windows с её путями, оболочкой и зависимостями.Проект ориентирован на Windows или нужны её инструменты. Bash-команды этой инструкции нельзя переносить в PowerShell без адаптации.

Для WSL2 храните Linux-проект, например, в ~/projects, а не в /mnt/c, если нет причины использовать файловую систему Windows. Это уменьшает различия в производительности файловых операций и правах. Подключайте редактор к той же WSL-среде. Подробности — в руководстве OpenAI по WSL.

Как выбрать интерфейс

ИнтерфейсЧто требуетсяЧто учитывать
Codex CLIТерминал, доступ к модели и зависимости проекта в месте исполнения.Минимальный путь этой инструкции. Не требует менеджера пакетов npm при установке официальным скриптом.
Интеграция в редакторПоддерживаемый редактор и официальное расширение.Убедитесь, где запущены терминал и расширение: локально, в WSL или на SSH-хосте.
Настольное приложениеПоддерживаемый рабочий стол и пакет для архитектуры компьютера.Официальное приложение ChatGPT для Linux с Codex находится в предварительной версии (preview). Набор возможностей отличается от других операционных систем.

По текущей документации Linux-приложения OpenAI Ubuntu Desktop входит в поддерживаемые системы. Это не означает, что серверу без графики нужен desktop-пакет. Для серверного сценария ниже достаточно CLI. Если нужен именно клиент с окнами, скачайте с официальной страницы пакет для своей архитектуры и следуйте отдельной инструкции; установка и проверка графического приложения не входят в этот CLI-сценарий.

Место исполнения Codex CLI, репозитория и тестов локально и через SSH
При локальной работе интерфейс и команды находятся в Ubuntu. При SSH интерфейс остаётся на вашем компьютере, а CLI, репозиторий и проверки работают на сервере. Модель вызывается по сети в обоих случаях.

Как установить CLI и войти в аккаунт

Проверьте среду и установите зависимости примера

Откройте Bash в нужной Ubuntu. Проверка операционной системы и архитектуры помогает не перепутать локальный компьютер с сервером. Следующие команды устанавливают системные пакеты, но не меняют файлы действующих проектов. sudo может запросить пароль пользователя.

cat /etc/os-release
uname -m
pwd
sudo apt update
sudo apt install --yes ca-certificates curl git python3 less
git --version
python3 --version

Если система управляется администратором и установка пакетов запрещена, попросите подготовить перечисленные зависимости. Не запускайте сам Codex через sudo: иначе он получит лишние права и другое домашнее окружение.

Установите официальный Codex CLI

Установочный скрипт загружается с официального домена. Сначала сохраните его в отдельную временную папку и просмотрите. Затем запустите под своим пользователем. Такой способ позволяет видеть, какой код вы исполняете.

installer_dir=$(mktemp -d)
curl -fsSL https://chatgpt.com/codex/install.sh \
  -o "$installer_dir/install.sh"
less "$installer_dir/install.sh"
sh "$installer_dir/install.sh"
export PATH="$HOME/.local/bin:$PATH"
command -v codex
codex --version

Из less выходят клавишей q. По умолчанию установщик размещает команду в ~/.local/bin и может добавить этот путь в настройки оболочки. Строка export делает его доступным в текущем терминале. Если при установке вы задали другой каталог, используйте его. Проверьте command -v codex, особенно если раньше ставили CLI через npm или другой менеджер.

Успех этого этапа — путь к ожидаемому исполняемому файлу и номер версии. Сам по себе номер версии не подтверждает вход в аккаунт и способность выполнять задачи. Способы установки и первый запуск описаны в официальном руководстве Codex CLI.

Завершите вход

codex login
codex login status

Пройдите вход ChatGPT по предложенному приложением адресу. Не отправляйте код входа, токен или файл авторизации другому человеку. На SSH-хосте, где браузер не открывается, посмотрите codex login --help и используйте поддерживаемый вход по коду устройства, если он разрешён для вашей учётной записи.

Статус входа означает, что CLI нашёл сохранённые учётные данные. Действительность доступа подтвердит первый запрос. Если он вернул ошибку истёкшего токена, повторите штатный вход в том же окружении. Переустановка CLI обычно не исправляет авторизацию. Ошибки сети, доступности сервиса и лимитов проверяют отдельно.

Как проверить первый запрос на отдельном репозитории

Не начинайте с рабочего проекта. Создадим новый каталог с маленькой функцией и тестом. Все команды ниже выполняются последовательно в одном Bash-терминале. Имя каталога уникально; существующие файлы не перезаписываются. Настройки Git задаются только для этого учебного репозитория.

Подготовьте исходное состояние

demo_dir=$(mktemp -d "$HOME/codex-lab.XXXXXX")
cd "$demo_dir"
git init -q
git config user.name "Codex tutorial"
git config user.email "tutorial@example.invalid"

cat > greeting.py <<'PY'
def greet(name):
    return "Hello, " + name
PY

cat > test_greeting.py <<'PY'
import unittest
from greeting import greet

class GreetingTest(unittest.TestCase):
    def test_greeting(self):
        self.assertEqual(greet("Анна"), "Hello, Анна!")

if __name__ == "__main__":
    unittest.main()
PY

cat > .gitignore <<'TEXT'
__pycache__/
TEXT

cat > AGENTS.md <<'TEXT'
Это отдельный учебный репозиторий.
Меняй только greeting.py. Не изменяй тест и AGENTS.md.
После изменения запускай python3 -m unittest -v.
Не устанавливай пакеты, не обращайся к сети и не делегируй работу.
TEXT

git add greeting.py test_greeting.py .gitignore AGENTS.md
git commit -q -m "Add isolated tutorial fixture"
printf 'Учебный репозиторий: %s\n' "$PWD"
python3 -m unittest -v

Последняя команда должна завершиться с FAILED (failures=1): функция пока не добавляет восклицательный знак. Это ожидаемая исходная ошибка. Сначала убедитесь, что не получен другой сбой — например, отсутствующий Python или ошибка синтаксиса. Сохраните выведенный путь репозитория.

Дайте ограниченную задачу

Находясь в учебной папке, запустите:

codex --sandbox workspace-write --ask-for-approval on-request

Если CLI спрашивает о доверии к каталогу, подтвердите только созданный учебный репозиторий. Введите задачу:

Исправь greet в greeting.py: функция должна возвращать
"Hello, " + name + "!". Меняй только greeting.py, не тест.
Прочитай AGENTS.md, запусти python3 -m unittest -v
и покажи результат. Не устанавливай зависимости,
не используй сеть и не делегируй работу.

Инструкция задаёт объём работы, а флаг workspace-write задаёт режим файловой песочницы. Это разные уровни. Если команда требует дополнительного разрешения, сначала прочитайте, что именно запрашивается. Для исправления одной функции не нужен полный доступ к системе. Если Linux-песочница не запускается, остановитесь и проверьте совместимость среды и системных ограничений; не отключайте её ради продолжения учебного примера.

Проверьте результат самостоятельно

Завершите сеанс через Ctrl+C и выполните проверки в том же каталоге:

pwd
python3 -m unittest -v
git diff --check
git diff --stat
git diff -- greeting.py
git status --short

Теперь ожидаются OK, чистый git diff --check и одно изменённое отслеживаемое имя — greeting.py. Существенная строка результата:

def greet(name):
    return "Hello, " + name + "!"

Если агент изменил тест, добавил зависимости или затронул другие файлы, результат не принят даже при зелёном тесте. Сначала разберите изменения. Отчёт агента не заменяет выполненные вами проверки.

Чтобы повторить опыт, сначала убедитесь по pwd и git diff, что вы всё ещё в созданном учебном репозитории и сохранять его изменение не нужно. Только после этого выполните git restore -- greeting.py. Команда отменит изменение этой функции; к рабочему репозиторию её автоматически не применяют.

Что проверить перед переходом к рабочему проекту

ПроверкаКак подтвердитьКритерий готовности
Место исполненияpwd, сведения об операционной системе и подключение редактора.CLI, репозиторий и зависимости находятся в одной выбранной среде.
Установка и версияcommand -v codex; codex --version.Запускается ожидаемый бинарный файл, а не старая копия из другого менеджера.
АвторизацияШтатный вход и реальный запрос в учебном каталоге.Нет ошибки входа; статус сохранённых данных не принимается за полный тест.
ЗависимостиКоманда тестов проекта в обычном терминале.Тесты запускаются без участия агента, известен исходный результат.
Границы работыРежим песочницы, инструкции проекта, состав подключений.Не выданы лишние файлы, ключи и права внешних сервисов; запросы подтверждения понятны.
Первое изменениеТест, git diff --check, diff и status.Изменены только согласованные файлы; результат проверен независимо.

Если что-то не работает

Команда не найдена. Проверьте каталог установки и PATH в текущей оболочке. Не устанавливайте поверх вторую копию, пока не выяснили, какую запускает command -v.

Тесты проходят локально, но не у агента. Сравните рабочий каталог, окружение и зависимости. Терминал Windows, WSL и SSH-хост — разные места исполнения. Ошибка прав или сети не означает, что модели не хватает «качества».

На SSH нет браузера. Используйте поддерживаемый способ входа для удалённой среды. Не копируйте файлы авторизации между машинами как универсальное решение и не открывайте служебные порты всему интернету.

Нужно тестировать интерфейс. Выберите, где будет работать браузер и как он увидит приложение. Наличие графической оболочки помогает с локальными окнами, но не настраивает автоматически удалённый браузер, сетевой доступ и права.

Для командной удалённой работы дополнительно нужны владельцы среды, управление доступом, обновления и воспроизводимые зависимости. Эти решения разобраны в руководстве по удалённому серверу для AI-инструментов.

Что дальше

После принятого учебного изменения переходите к работе с Codex в действующем репозитории. Подготовьте его команды проверки и инструкции до первой задачи. Если средой будет пользоваться несколько человек, сначала согласуйте устройство удалённой среды и права подключённых инструментов.

Обсудить проект

Если хотите применить этот материал к вашему проекту, напишите нам. Поможем уточнить вводные, риски и следующий шаг: оценку, discovery, разработку, интеграцию или сопровождение.

Связаться