💡 Что такое Google Antigravity и зачем он вам — это платформа для работы с агентами от Google. Она доступна в трёх вариантах: десктоп-приложение (для проектов и визуальной оркестрации), IDE (полноценный редактор с агентом) и CLI (терминальный интерфейс с командой agy). Мы рассмотрим установку всех трёх вариантов на Debian.
⚠️ Важное предупреждение: Antigravity — это новый продукт от Google, и его установка на Debian отличается от Ubuntu. Не используйте Ubuntu-специфичные обходные пути для AppArmor, если не видите явных логов блокировки. На Debian работает иначе.
Предварительные требования
Прежде чем начать, убедитесь, что ваша система готова:
⚠️ ВАЖНО: Проверьте права sudo перед установкой
Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:
sudo whoami
Что делает:
sudo— выполняет команду от имени суперпользователяwhoami— показывает имя текущего пользователя
Зачем: Проверяет, может ли ваш пользователь выполнять команды с правами root.
✅ Если выводит root — всё в порядке, можете продолжать.
❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.
Дополнительные требования:
- Графическая среда (GNOME, KDE, XFCE) — для десктоп-приложения и IDE
- Архитектура: amd64 или arm64
- Интернет-соединение для скачивания (~200 МБ для десктоп-версии)
- Для CLI: доступ в интернет, браузер для авторизации
Выбор версии Antigravity
| Продукт | Что это | Команда запуска | Как обновлять | Для чего нужен |
|---|---|---|---|---|
| Antigravity 2.0 (десктоп) | Платформа для проектов, артефактов и визуальной оркестрации | antigravity | sudo update-antigravity | Управление проектами и агентами в отдельном окне |
| Antigravity IDE | Редактор кода с встроенным агентом | antigravity-ide | sudo update-antigravity-ide | Разработка с ИИ- помощником в редакторе |
| Antigravity CLI | Терминальный интерфейс с командой agy | agy | agy update или скрипт | Работа через терминал, SSH, скрипты |
| Legacy APT-пакет | Старая версия 1.x (не рекомендуется) | antigravity (но конфликтует) | apt update | Только если нужна именно 1.x |
⚠️ Важно: Не устанавливайте десктоп-приложение Antigravity 2.0 и legacy APT-пакет одновременно. Они оба создают команду antigravity и файл .desktop, что вызовет конфликт.
Часть 1: Установка Antigravity 2.0 (десктоп-приложение)
Это современная версия Antigravity — платформа для работы с проектами, артефактами и агентами.
Установка зависимостей
sudo apt update
sudo apt install -y ca-certificates curl tar desktop-file-utils python3
Что делает:
ca-certificates— сертификаты для HTTPScurl— загрузка файловtar— распаковка архивовdesktop-file-utils— для работы с.desktop-файламиpython3— нужен для скрипта установки
Создание скрипта обновления
sudo tee /usr/local/bin/update-antigravity > /dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
if [ "$(id -u)" -ne 0 ]; then
echo "Run with sudo: sudo update-antigravity" >&2
exit 1
fi
download_page="https://antigravity.google/download"
install_root="/opt/antigravity"
command_link="/usr/local/bin/antigravity"
desktop_file="/usr/share/applications/antigravity.desktop"
icon_file="/usr/share/icons/hicolor/512x512/apps/antigravity.png"
old_icon_file="/usr/share/icons/hicolor/scalable/apps/antigravity.svg"
case "$(uname -m)" in
x86_64 | amd64) platform="linux-x64" ;;
aarch64 | arm64) platform="linux-arm" ;;
*)
echo "Unsupported architecture: $(uname -m)" >&2
exit 1
;;
esac
for required_command in curl tar python3; do
if ! command -v "$required_command" >/dev/null 2>&1; then
echo "$required_command is required to install Antigravity." >&2
exit 1
fi
done
if [ -L "$command_link" ]; then
command_target=$(readlink -f "$command_link" || true)
case "$command_target" in
"$install_root"/*) ;;
*)
echo "$command_link points to $command_target. Move it before rerunning this helper." >&2
exit 1
;;
esac
elif [ -e "$command_link" ]; then
echo "$command_link exists and is not a symlink. Move it before rerunning this helper." >&2
exit 1
fi
tmp_parent="${TMPDIR:-/var/tmp}"
mkdir -p "$tmp_parent"
tmpdir=$(mktemp -d "$tmp_parent/antigravity.XXXXXX")
trap 'rm -rf "$tmpdir"' EXIT
download_html="$tmpdir/download.html"
download_js="$tmpdir/download.js"
archive="$tmpdir/Antigravity.tar.gz"
archive_list="$tmpdir/archive-list.txt"
icon_staged="$tmpdir/antigravity.png"
curl -fsSL --compressed --retry 3 -o "$download_html" "$download_page"
main_js_url=$(
python3 - "$download_html" "$download_page" <<'PY'
import re
import sys
from pathlib import Path
from urllib.parse import urljoin
html = Path(sys.argv[1]).read_text()
page_url = sys.argv[2]
matches = re.findall(r'(?:src|href)="([^"]*main-[^"]+\.js)"', html)
if not matches:
raise SystemExit("Could not find the Antigravity download bundle")
print(urljoin(page_url, matches[-1]))
PY
)
curl -fsSL --compressed --retry 3 -o "$download_js" "$main_js_url"
download_fields=$(
python3 - "$download_js" "$platform" <<'PY'
import re
import sys
from pathlib import Path
bundle = Path(sys.argv[1]).read_text(errors="replace")
platform = sys.argv[2]
start = bundle.find('id:"antigravity-2"')
end = bundle.find('},{name:"command",id:"antigravity-cli"', start)
if start == -1 or end == -1:
raise SystemExit("Could not find Antigravity 2.0 downloads")
section = bundle[start:end]
match = re.search(r'href:"([^"]+/' + re.escape(platform) + r'/Antigravity\.tar\.gz)"', section)
if not match:
raise SystemExit(f"Could not find a download for {platform}")
url = match.group(1)
version_match = re.search(r'/antigravity-hub/([^/]+)/', url)
if not version_match:
raise SystemExit("Could not parse Antigravity version from download URL")
print(version_match.group(1).split("-", 1)[0], url)
PY
)
read -r version download_url <<<"$download_fields"
if [ -z "$version" ] || [ -z "$download_url" ]; then
echo "Could not parse the Antigravity download page." >&2
exit 1
fi
case "$platform" in
linux-x64) expected_top_dir="Antigravity-x64" ;;
linux-arm) expected_top_dir="Antigravity-arm64" ;;
esac
expected_target="$install_root/$expected_top_dir/antigravity"
sandbox_path="$install_root/$expected_top_dir/chrome-sandbox"
installed_version=$(cat "$install_root/.unishell-version" 2>/dev/null || true)
desktop_matches=no
if [ -f "$desktop_file" ] &&
grep -q '^Icon=antigravity$' "$desktop_file" &&
grep -q '^StartupWMClass=Antigravity$' "$desktop_file"; then
desktop_matches=yes
fi
if [ "$installed_version" = "$version" ] &&
[ -x "$expected_target" ] &&
[ -L "$command_link" ] &&
[ "$(readlink -f "$command_link")" = "$expected_target" ] &&
[ "$desktop_matches" = yes ] &&
[ -f "$icon_file" ]; then
if [ ! -e "$sandbox_path" ] || [ "$(stat -c '%U:%G:%a' "$sandbox_path")" = "root:root:4755" ]; then
printf 'Antigravity %s is already installed at %s\n' "$version" "$install_root/$expected_top_dir"
exit 0
fi
fi
printf 'Downloading Antigravity %s for %s...\n' "$version" "$platform"
curl -fsSL --retry 3 -o "$archive" "$download_url"
tar -tzf "$archive" >"$archive_list"
top_dir=$(sed -n '1{s#/.*##;p;q}' "$archive_list")
case "$top_dir" in
Antigravity-*) ;;
*)
echo "Unexpected archive layout: $top_dir" >&2
exit 1
;;
esac
if [ "$top_dir" != "$expected_top_dir" ]; then
echo "Unexpected archive directory: $top_dir" >&2
exit 1
fi
tar -xzf "$archive" -C "$tmpdir"
if [ ! -x "$tmpdir/$top_dir/antigravity" ]; then
echo "The Antigravity launcher was not found in the archive." >&2
exit 1
fi
python3 - "$tmpdir/$top_dir/resources/app.asar" "$icon_staged" <<'PY'
import json
import struct
import sys
from pathlib import Path
asar = Path(sys.argv[1])
output = Path(sys.argv[2])
with asar.open("rb") as archive:
archive.read(4)
header_size = struct.unpack("<I", archive.read(4))[0]
archive.read(4)
json_size = struct.unpack("<I", archive.read(4))[0]
header = json.loads(archive.read(json_size).decode())
icon = header["files"]["icon.png"]
with asar.open("rb") as archive:
archive.seek(8 + header_size + int(icon["offset"]))
output.write_bytes(archive.read(int(icon["size"])))
PY
staging_root=$(mktemp -d "$(dirname "$install_root")/.antigravity-install.XXXXXX")
chmod 0755 "$staging_root"
promoted=no
cleanup_staging() {
if [ "$promoted" != yes ]; then
rm -rf "$staging_root"
fi
}
trap 'rm -rf "$tmpdir"; cleanup_staging' EXIT
cp -a "$tmpdir/$top_dir" "$staging_root/"
printf '%s\n' "$version" >"$staging_root/.unishell-version"
if [ -f "$staging_root/$top_dir/chrome-sandbox" ]; then
chown root:root "$staging_root/$top_dir/chrome-sandbox"
chmod 4755 "$staging_root/$top_dir/chrome-sandbox"
fi
if [ -d "$install_root" ]; then
rm -rf "${install_root}.previous"
mv "$install_root" "${install_root}.previous"
fi
mv "$staging_root" "$install_root"
promoted=yes
ln -sfn "$install_root/$top_dir/antigravity" "$command_link"
mkdir -p "$(dirname "$icon_file")"
install -m 0644 "$icon_staged" "$icon_file"
rm -f "$old_icon_file"
tee "$desktop_file" >/dev/null <<DESKTOP
[Desktop Entry]
Name=Antigravity
Comment=Google Antigravity 2.0 agent platform
Exec=$command_link %U
Icon=antigravity
Terminal=false
Type=Application
Categories=Development;IDE;
StartupNotify=true
StartupWMClass=Antigravity
DESKTOP
if command -v update-desktop-database >/dev/null 2>&1; then
update-desktop-database /usr/share/applications >/dev/null 2>&1 || true
fi
if command -v gtk-update-icon-cache >/dev/null 2>&1; then
gtk-update-icon-cache -q /usr/share/icons/hicolor 2>/dev/null || true
fi
printf 'Installed Antigravity %s at %s\n' "$version" "$install_root/$top_dir"
EOF
Что делает скрипт (обзорно):
- Определяет архитектуру (x64 или ARM)
- Скачивает страницу загрузки Google и находит актуальную версию
- Скачивает tarball и проверяет его структуру
- Распаковывает в
/opt/antigravity - Устанавливает SUID-бит на
chrome-sandbox(необходимо для запуска) - Создаёт команду
/usr/local/bin/antigravity - Создаёт иконку и
.desktop-файл
sudo chmod +x /usr/local/bin/update-antigravity
Что делает: Делает скрипт исполняемым.
Запуск установки Antigravity 2.0
sudo update-antigravity
Ожидаемый вывод:
Downloading Antigravity 2.0.6 for linux-x64...
Installed Antigravity 2.0.6 at /opt/antigravity/Antigravity-x64
Проверка установки Antigravity 2.0
readlink -f /usr/local/bin/antigravity
test -x "$(readlink -f /usr/local/bin/antigravity)" && echo "Antigravity установлен"
Ожидаемый вывод: /opt/antigravity/Antigravity-x64/antigravity и Antigravity установлен.
grep -E '^(Name|Exec|Icon)' /usr/share/applications/antigravity.desktop
Ожидаемый вывод:
Name=Antigravity
Exec=/usr/local/bin/antigravity %U
Icon=antigravity
stat -c '%U %G %a %n' /opt/antigravity/Antigravity-*/chrome-sandbox
Ожидаемый вывод: root root 4755 /opt/antigravity/Antigravity-x64/chrome-sandbox
Проверка AppArmor на Debian (важно!)
Debian 13, 12 и 11 работают с AppArmor иначе, чем Ubuntu. Не паникуйте, если увидите MISSING.
cat /sys/module/apparmor/parameters/enabled 2>/dev/null || echo "AppArmor не включён"
systemctl is-active apparmor 2>/dev/null || echo "AppArmor не активен"
sysctl -n kernel.apparmor_restrict_unprivileged_userns 2>/dev/null || echo "MISSING (нормально для Debian)"
Что означают эти проверки:
enabled: Yилиactive— AppArmor работает (это хорошо)MISSINGдляkernel.apparmor_restrict_unprivileged_userns— нормально для Debian, это Ubuntu-специфичный параметр
Не создавайте кастомный профиль AppArmor для Antigravity, если нет явных логов блокировки.
Часть 2: Установка Antigravity IDE
Это редактор кода (похож на VS Code) со встроенным агентом Antigravity.
Создание скрипта обновления IDE
sudo tee /usr/local/bin/update-antigravity-ide > /dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
if [ "$(id -u)" -ne 0 ]; then
echo "Run with sudo: sudo update-antigravity-ide" >&2
exit 1
fi
download_page="https://antigravity.google/download"
install_root="/opt/antigravity-ide"
command_link="/usr/local/bin/antigravity-ide"
desktop_file="/usr/share/applications/antigravity-ide.desktop"
icon_file="/usr/share/icons/hicolor/512x512/apps/antigravity-ide.png"
case "$(uname -m)" in
x86_64 | amd64) platform="linux-x64" ;;
aarch64 | arm64) platform="linux-arm" ;;
*)
echo "Unsupported architecture: $(uname -m)" >&2
exit 1
;;
esac
for required_command in curl tar python3; do
if ! command -v "$required_command" >/dev/null 2>&1; then
echo "$required_command is required to install Antigravity IDE." >&2
exit 1
fi
done
if [ -L "$command_link" ]; then
command_target=$(readlink -f "$command_link" || true)
case "$command_target" in
"$install_root"/*) ;;
*)
echo "$command_link points to $command_target. Move it before rerunning this helper." >&2
exit 1
;;
esac
elif [ -e "$command_link" ]; then
echo "$command_link exists and is not a symlink. Move it before rerunning this helper." >&2
exit 1
fi
tmp_parent="${TMPDIR:-/var/tmp}"
mkdir -p "$tmp_parent"
tmpdir=$(mktemp -d "$tmp_parent/antigravity-ide.XXXXXX")
trap 'rm -rf "$tmpdir"' EXIT
download_html="$tmpdir/download.html"
download_js="$tmpdir/download.js"
archive="$tmpdir/Antigravity-IDE.tar.gz"
archive_list="$tmpdir/archive-list.txt"
curl -fsSL --compressed --retry 3 -o "$download_html" "$download_page"
main_js_url=$(
python3 - "$download_html" "$download_page" <<'PY'
import re
import sys
from pathlib import Path
from urllib.parse import urljoin
html = Path(sys.argv[1]).read_text()
page_url = sys.argv[2]
matches = re.findall(r'(?:src|href)="([^"]*main-[^"]+\.js)"', html)
if not matches:
raise SystemExit("Could not find the Antigravity download bundle")
print(urljoin(page_url, matches[-1]))
PY
)
curl -fsSL --compressed --retry 3 -o "$download_js" "$main_js_url"
download_fields=$(
python3 - "$download_js" "$platform" <<'PY'
import re
import sys
from pathlib import Path
bundle = Path(sys.argv[1]).read_text(errors="replace")
platform = sys.argv[2]
start = bundle.find('id:"antigravity-ide"')
end = bundle.find('},{name:"download",id:"antigravity-sdk"', start)
if start == -1 or end == -1:
raise SystemExit("Could not find Antigravity IDE downloads")
section = bundle[start:end]
match = re.search(r'href:"([^"]+/' + re.escape(platform) + r'/Antigravity%20IDE\.tar\.gz)"', section)
if not match:
raise SystemExit(f"Could not find an IDE download for {platform}")
url = match.group(1)
version_match = re.search(r'/stable/([^/]+)/', url)
if not version_match:
raise SystemExit("Could not parse Antigravity IDE version from download URL")
print(version_match.group(1).split("-", 1)[0], url)
PY
)
read -r version download_url <<<"$download_fields"
if [ -z "$version" ] || [ -z "$download_url" ]; then
echo "Could not parse the Antigravity IDE download page." >&2
exit 1
fi
archive_top_dir="Antigravity IDE"
install_top_dir="Antigravity-IDE"
expected_target="$install_root/$install_top_dir/antigravity-ide"
sandbox_path="$install_root/$install_top_dir/chrome-sandbox"
installed_version=$(cat "$install_root/.unishell-version" 2>/dev/null || true)
desktop_matches=no
if [ -f "$desktop_file" ] &&
grep -q '^Icon=antigravity-ide$' "$desktop_file" &&
grep -q '^StartupWMClass=antigravity-ide$' "$desktop_file"; then
desktop_matches=yes
fi
if [ "$installed_version" = "$version" ] &&
[ -x "$expected_target" ] &&
[ -L "$command_link" ] &&
[ "$(readlink -f "$command_link")" = "$expected_target" ] &&
[ "$desktop_matches" = yes ] &&
[ -f "$icon_file" ]; then
if [ ! -e "$sandbox_path" ] || [ "$(stat -c '%U:%G:%a' "$sandbox_path")" = "root:root:4755" ]; then
printf 'Antigravity IDE %s is already installed at %s\n' "$version" "$install_root/$install_top_dir"
exit 0
fi
fi
printf 'Downloading Antigravity IDE %s for %s...\n' "$version" "$platform"
curl -fsSL --retry 3 -o "$archive" "$download_url"
tar -tzf "$archive" >"$archive_list"
top_dir=$(sed -n '1{s#/.*##;p;q}' "$archive_list")
if [ "$top_dir" != "$archive_top_dir" ]; then
echo "Unexpected archive directory: $top_dir" >&2
exit 1
fi
tar -xzf "$archive" -C "$tmpdir"
if [ ! -x "$tmpdir/$top_dir/antigravity-ide" ]; then
echo "The Antigravity IDE launcher was not found in the archive." >&2
exit 1
fi
icon_source="$tmpdir/$top_dir/resources/app/resources/linux/code.png"
if [ ! -f "$icon_source" ]; then
echo "The Antigravity IDE icon was not found in the archive." >&2
exit 1
fi
staging_root=$(mktemp -d "$(dirname "$install_root")/.antigravity-ide-install.XXXXXX")
chmod 0755 "$staging_root"
promoted=no
cleanup_staging() {
if [ "$promoted" != yes ]; then
rm -rf "$staging_root"
fi
}
trap 'rm -rf "$tmpdir"; cleanup_staging' EXIT
cp -a "$tmpdir/$top_dir" "$staging_root/$install_top_dir"
printf '%s\n' "$version" >"$staging_root/.unishell-version"
if [ -f "$staging_root/$install_top_dir/chrome-sandbox" ]; then
chown root:root "$staging_root/$install_top_dir/chrome-sandbox"
chmod 4755 "$staging_root/$install_top_dir/chrome-sandbox"
fi
if [ -d "$install_root" ]; then
rm -rf "${install_root}.previous"
mv "$install_root" "${install_root}.previous"
fi
mv "$staging_root" "$install_root"
promoted=yes
ln -sfn "$install_root/$install_top_dir/antigravity-ide" "$command_link"
mkdir -p "$(dirname "$icon_file")"
install -m 0644 "$icon_source" "$icon_file"
tee "$desktop_file" >/dev/null <<DESKTOP
[Desktop Entry]
Name=Antigravity IDE
Comment=Google Antigravity IDE
Exec=$command_link %U
Icon=antigravity-ide
Terminal=false
Type=Application
Categories=Development;IDE;
MimeType=x-scheme-handler/antigravity-ide;application/x-antigravity-workspace;
StartupNotify=true
StartupWMClass=antigravity-ide
DESKTOP
if command -v update-desktop-database >/dev/null 2>&1; then
update-desktop-database /usr/share/applications >/dev/null 2>&1 || true
fi
if command -v gtk-update-icon-cache >/dev/null 2>&1; then
gtk-update-icon-cache -q /usr/share/icons/hicolor 2>/dev/null || true
fi
printf 'Installed Antigravity IDE %s at %s\n' "$version" "$install_root/$install_top_dir"
EOF
sudo chmod +x /usr/local/bin/update-antigravity-ide
Запуск установки Antigravity IDE
sudo update-antigravity-ide
Ожидаемый вывод:
Downloading Antigravity IDE 2.0.3 for linux-x64...
Installed Antigravity IDE 2.0.3 at /opt/antigravity-ide/Antigravity-IDE
Проверка установки IDE
readlink -f /usr/local/bin/antigravity-ide
test -x "$(readlink -f /usr/local/bin/antigravity-ide)" && echo "IDE установлен"
Часть 3: Установка Antigravity CLI (agy)
CLI-версия устанавливается в домашнюю директорию пользователя и не требует sudo.
Установка зависимостей
sudo apt install -y ca-certificates curl
Запуск официального установщика
curl -fsSL https://antigravity.google/cli/install.sh | bash
Что делает: Скачивает и запускает официальный скрипт установки CLI.
Куда устанавливается: ~/.local/bin/agy
Добавление ~/.local/bin в PATH
export PATH="$HOME/.local/bin:$PATH"
Зачем: Команда agy не будет найдена без этого.
Чтобы добавить навсегда (для Bash):
grep -qxF 'export PATH="$HOME/.local/bin:$PATH"' "$HOME/.bashrc" 2>/dev/null || printf '\nexport PATH="$HOME/.local/bin:$PATH"\n' >>"$HOME/.bashrc"
Проверка установки CLI
command -v agy
agy --version
Ожидаемый вывод: /home/username/.local/bin/agy и версия (например, 1.0.2).
(Опционально) Скрипт обновления CLI
mkdir -p "$HOME/.local/bin"
tee "$HOME/.local/bin/update-antigravity-cli" > /dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
export PATH="$HOME/.local/bin:$PATH"
if [ ! -x "$HOME/.local/bin/agy" ]; then
curl -fsSL https://antigravity.google/cli/install.sh | bash
else
"$HOME/.local/bin/agy" update
fi
"$HOME/.local/bin/agy" --version
EOF
chmod +x "$HOME/.local/bin/update-antigravity-cli"
Часть 4: Установка legacy APT-пакета (только для версии 1.x)
⚠️ Не рекомендуется для новых установок. Этот метод устанавливает старую версию 1.23.2, а не современный Antigravity 2.0.
sudo apt update
sudo apt install -y ca-certificates curl gpg
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSLo antigravity-repo-key.asc https://us-central1-apt.pkg.dev/doc/repo-signing-key.gpg
gpg --dearmor --yes -o antigravity-repo-key.gpg antigravity-repo-key.asc
sudo install -m 0644 antigravity-repo-key.gpg /etc/apt/keyrings/antigravity-repo-key.gpg
rm -f antigravity-repo-key.asc antigravity-repo-key.gpg
sudo tee /etc/apt/sources.list.d/google-antigravity.sources > /dev/null <<'EOF'
Types: deb
URIs: https://us-central1-apt.pkg.dev/projects/antigravity-auto-updater-dev/
Suites: antigravity-debian
Components: main
Signed-By: /etc/apt/keyrings/antigravity-repo-key.gpg
EOF
sudo apt update
apt-cache policy antigravity
Ожидаемый вывод (версия будет 1.x, НЕ 2.0):
antigravity:
Installed: (none)
Candidate: 1.23.2-1776332190
sudo apt install antigravity
Запуск Antigravity
Запуск десктоп-приложения
Из меню приложений: Найдите Antigravity в меню GNOME/KDE/XFCE.
Из терминала:
antigravity
Запуск IDE
Из меню приложений: Найдите Antigravity IDE.
Из терминала:
antigravity-ide
Запуск CLI
agy
Первая авторизация: CLI откроет браузер для входа в Google. Если вы по SSH, скопируйте URL из терминала, откройте в локальном браузере, авторизуйтесь и вставьте код.
Управление Antigravity
Обновление десктоп-приложения
sudo update-antigravity
Обновление IDE
sudo update-antigravity-ide
Обновление CLI
agy update
или
update-antigravity-cli
Решение типичных проблем
8.1 Ошибка: update-antigravity сообщает об уже установленной версии 2.0.1 (хотя есть новее)
Симптом: Скрипт говорит, что установлена 2.0.1, но вы знаете, что есть более новая версия.
Причина: Установлен старый скрипт, который использует устаревший endpoint Google.
Решение: Перезапишите скрипт текущей версией из раздела установки (шаг создания скрипта) и запустите sudo update-antigravity снова.
8.2 Ошибка: Desktop helper fails with download error
Симптом: Ошибка 404 или Could not find the Antigravity download bundle.
Причина: Google изменил структуру страницы загрузки.
Решение: Проверьте, что страница загрузки доступна:
curl -fsSL --compressed https://antigravity.google/download | grep -o 'main-[^"]*\.js'
Если выводит имя файла — проблема в чём-то другом. Обновите скрипт из статьи.
8.3 Ошибка: Chrome sandbox не работает (AppArmor)
Симптом: Antigravity не запускается, ошибки в терминале про sandbox.
Решение: Проверьте права на chrome-sandbox:
stat -c '%U %G %a %n' /opt/antigravity/Antigravity-*/chrome-sandbox
Должно быть: root root 4755. Если нет — переустановите:
sudo update-antigravity
Проверьте логи AppArmor:
sudo journalctl -k --since "10 minutes ago" --no-pager | grep -iE 'apparmor.*antigravity'
Если есть явные denial (только тогда создавайте профиль). В 99% случаев достаточно правильных прав на chrome-sandbox.
8.4 Ошибка: Чёрный экран или не запускается GPU
Симптом: Antigravity запускается, но окно чёрное или падает с GPU-ошибками.
Причина: Проблемы с 3D-ускорением (часто в виртуальных машинах).
Временное решение (только для диагностики):
antigravity --disable-gpu
antigravity-ide --disable-gpu
ELECTRON_OZONE_PLATFORM_HINT=x11 antigravity --disable-gpu
8.5 Ошибка: agy command not found
Симптом: agy не найдена после установки.
Решение: Добавьте ~/.local/bin в PATH:
export PATH="$HOME/.local/bin:$PATH"
И добавьте строку в ~/.bashrc для постоянного эффекта.
8.6 Ошибка: Sign-in открывается в неправильном приложении
Симптом: Авторизация открывается в текстовом редакторе или другом приложении, а не в браузере.
Решение: Установите браузер по умолчанию:
xdg-settings set default-web-browser firefox-esr.desktop
(замените на свой браузер, если используете не Firefox).
Удаление Antigravity
Удаление десктоп-приложения
# Удаление команды
if [ -L /usr/local/bin/antigravity ] && readlink /usr/local/bin/antigravity | grep -q '^/opt/antigravity/'; then
sudo rm -f /usr/local/bin/antigravity
fi
# Удаление .desktop-файла
if [ -f /usr/share/applications/antigravity.desktop ] && grep -q '^Exec=/usr/local/bin/antigravity ' /usr/share/applications/antigravity.desktop; then
sudo rm -f /usr/share/applications/antigravity.desktop
fi
# Удаление файлов
sudo rm -rf /opt/antigravity /opt/antigravity.previous
sudo rm -f /usr/local/bin/update-antigravity
sudo rm -f /usr/share/icons/hicolor/512x512/apps/antigravity.png
# Обновление кэша
if command -v update-desktop-database >/dev/null 2>&1; then
sudo update-desktop-database /usr/share/applications >/dev/null 2>&1 || true
fi
hash -r
Удаление IDE
sudo rm -rf /opt/antigravity-ide /opt/antigravity-ide.previous
sudo rm -f /usr/local/bin/antigravity-ide /usr/local/bin/update-antigravity-ide
sudo rm -f /usr/share/applications/antigravity-ide.desktop
sudo rm -f /usr/share/icons/hicolor/512x512/apps/antigravity-ide.png
hash -r
Удаление CLI
rm -f "$HOME/.local/bin/agy" "$HOME/.local/bin/update-antigravity-cli"
hash -r
Удаление legacy APT-пакета
sudo apt purge antigravity
sudo rm -f /etc/apt/sources.list.d/google-antigravity.sources
sudo rm -f /etc/apt/keyrings/antigravity-repo-key.gpg
sudo apt update
Удаление пользовательских данных (по желанию)
rm -rf "$HOME/.config/Antigravity" \
"$HOME/.config/Antigravity IDE" \
"$HOME/.antigravity" \
"$HOME/.antigravity-ide" \
"$HOME/.cache/antigravity" \
"$HOME/.gemini/antigravity"
Чек-лист: что проверить после установки
Десктоп-приложение:
- [ ]
sudo whoamiвыводитroot - [ ]
antigravity --helpилиantigravity --versionработает - [ ]
readlink -f /usr/local/bin/antigravityведёт в/opt/antigravity - [ ]
/usr/share/applications/antigravity.desktopсуществует - [ ]
stat -c '%U %G %a' /opt/antigravity/Antigravity-*/chrome-sandboxпоказываетroot root 4755
IDE:
- [ ]
antigravity-ide --helpилиantigravity-ide --versionработает - [ ]
readlink -f /usr/local/bin/antigravity-ideведёт в/opt/antigravity-ide
CLI:
- [ ]
command -v agyпоказывает/home/username/.local/bin/agy - [ ]
agy --versionпоказывает версию - [ ]
agy --helpпоказывает справку
Заключение
Google Antigravity установлен на Debian. В зависимости от ваших задач:
- Десктоп-приложение (
antigravity) — для управления проектами и визуальной оркестрацией агентов - IDE (
antigravity-ide) — для разработки с ИИ-помощником в редакторе - CLI (
agy) — для терминальной работы, SSH и скриптов
Что дальше:
- Ознакомьтесь с официальной документацией Google Antigravity
- Для работы с Git-репозиториями установите Git на Debian
- Для изолированных окружений установите Docker на Debian
💡 Важно: Antigravity — это новый продукт. Не копируйте слепо Ubuntu-решения для AppArmor на Debian. Проверяйте логи перед созданием кастомных профилей. В большинстве случаев достаточно правильных прав на chrome-sandbox (root:root 4755).