t-261002202105/t-261002202021: установщик чинит битый venv (WSL: python без pip → пересоздание + fallback системный pip3), чистит мусор старого PoC-клона, пост-шаг: портал cil.by для ключа API + wizard --router-key
This commit is contained in:
parent
4c4ac34560
commit
1bbd7c8e55
2 changed files with 54 additions and 6 deletions
|
|
@ -16,6 +16,12 @@ curl -fsSL https://raw.cil.by/simbiot/install.sh | bash
|
|||
`simbiot status`. Флаги: `--dir DIR`, `--repo URL`, `--wizard` /
|
||||
`--no-wizard`, `--systemd` (юнит, только root), `-q` (тихо).
|
||||
|
||||
Если в каталоге установки остался битый venv (python без pip — частый кейс
|
||||
WSL/старых клонов), скрипт пересоздаёт его и ставит зависимости (при
|
||||
недоступном ensurepip — системным pip3 в site-packages venv). В конце
|
||||
установки предлагается следующий шаг: портал https://cil.by — залогиниться
|
||||
и взять ключ API, затем `simbiot wizard --router-key <КЛЮЧ>`.
|
||||
|
||||
Первый запуск — визард настройки (токен TG-бота, ключ 9router, модель):
|
||||
|
||||
```bash
|
||||
|
|
|
|||
|
|
@ -55,6 +55,9 @@ if [ -d "$INSTALL_DIR/.git" ]; then
|
|||
git -C "$INSTALL_DIR" fetch --depth=1 origin >/dev/null 2>&1 || true
|
||||
git -C "$INSTALL_DIR" reset --hard origin/HEAD >/dev/null 2>&1 || \
|
||||
git -C "$INSTALL_DIR" reset --hard origin/main >/dev/null 2>&1 || true
|
||||
# старый PoC-клон мог тащить мусорные/полу-удалённые файлы → чистим трекинг,
|
||||
# но сохраняем локальное: venv, .env, *.db, токены
|
||||
git -C "$INSTALL_DIR" clean -qfd -e venv -e .env -e '*.db' -e '.simbiot-portal-token' 2>/dev/null || true
|
||||
else
|
||||
say "${CYAN}→${NC} Клонирую репозиторий → $INSTALL_DIR"
|
||||
mkdir -p "$(dirname "$INSTALL_DIR")"
|
||||
|
|
@ -81,14 +84,29 @@ if [ "$PYMAJOR" -lt 3 ] || { [ "$PYMAJOR" = 3 ] && [ "$PYMINOR" -lt 11 ]; }; the
|
|||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -x venv/bin/python ]; then
|
||||
# venv считается годным только если есть И python, И pip (WSL/долгоживущие
|
||||
# машины оставляют битые venv: python есть, pip нет → "./venv/bin/pip: No such
|
||||
# file or directory"). Битый/неполный пересоздаём.
|
||||
if [ ! -x venv/bin/python ] || [ ! -x venv/bin/pip ]; then
|
||||
say "${CYAN}→${NC} Создаю venv (python $PYV)…"
|
||||
python3 -m venv venv
|
||||
rm -rf venv # сносим битый/неполный venv целиком
|
||||
python3 -m venv venv 2>/dev/null || python3 -m venv --without-pip venv
|
||||
fi
|
||||
say "${CYAN}→${NC} Ставлю зависимости…"
|
||||
./venv/bin/pip install --upgrade pip >/dev/null
|
||||
./venv/bin/pip install -r requirements.txt >/dev/null 2>&1 || \
|
||||
if [ -x venv/bin/pip ]; then
|
||||
./venv/bin/pip install --upgrade pip >/dev/null
|
||||
./venv/bin/pip install -r requirements.txt >/dev/null 2>&1 || \
|
||||
./venv/bin/pip install -r requirements.txt
|
||||
else
|
||||
# WSL/deadsnakes-кейс: ensurepip недоступен → ставим зависимости системным pip
|
||||
# прямо в site-packages этого venv (python venv подхватит их по sys.path).
|
||||
if ! command -v pip3 >/dev/null 2>&1; then
|
||||
echo "pip3 не найден. Установи: apt install -y python3-venv python3-pip" >&2
|
||||
exit 1
|
||||
fi
|
||||
say "${YELLOW}→${NC} venv без pip (ensurepip отсутствует) — ставлю зависимости системным pip3 в venv"
|
||||
pip3 install --quiet --target="venv/lib/python$PYV/site-packages" -r requirements.txt
|
||||
fi
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# 3. Обёртка `simbiot` (аналог /usr/local/bin/hermes)
|
||||
|
|
@ -147,4 +165,28 @@ else
|
|||
echo "⚠ simbiot status вернул ошибку — см. вывод выше." >&2
|
||||
exit 1
|
||||
fi
|
||||
say "Дальше: simbiot wizard (настройка), simbiot --help (команды)."
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# 7. Следующий шаг: подключение API агенту (ключи берутся на портале)
|
||||
# ----------------------------------------------------------------------------
|
||||
PORTAL_URL="https://cil.by"
|
||||
if [ -s .env ] && grep -q '^ROUTER_KEY=..*' .env 2>/dev/null; then
|
||||
say "${GREEN}→${NC} Ключ API уже задан в .env — агент готов."
|
||||
say "Дальше: simbiot status (проверка), scripts/install.sh --systemd (автозапуск)."
|
||||
else
|
||||
say "${CYAN}→${NC} Остался один шаг — подключить API агенту:"
|
||||
if [ "$INTERACTIVE" = 1 ]; then
|
||||
# macOS / десктоп-линукс / WSL: открываем портал в браузере
|
||||
if grep -qi microsoft /proc/version 2>/dev/null; then
|
||||
{ command -v wslview >/dev/null 2>&1 && wslview "$PORTAL_URL" >/dev/null 2>&1; } || \
|
||||
{ command -v explorer.exe >/dev/null 2>&1 && explorer.exe "$PORTAL_URL" >/dev/null 2>&1 || true; }
|
||||
else
|
||||
command -v xdg-open >/dev/null 2>&1 && { xdg-open "$PORTAL_URL" >/dev/null 2>&1 || true; }
|
||||
fi
|
||||
command -v open >/dev/null 2>&1 && { open "$PORTAL_URL" >/dev/null 2>&1 || true; }
|
||||
say "→ Открыл портал в браузере (если не открылся — ссылка ниже)."
|
||||
fi
|
||||
say "${GREEN} $PORTAL_URL${NC} ${CYAN}← залогинься и возьми ключ API${NC}"
|
||||
say " Затем: $BIN_DIR/simbiot wizard --router-key <КЛЮЧ>"
|
||||
say " (или просто $BIN_DIR/simbiot wizard — спросит всё интерактивно)"
|
||||
fi
|
||||
Loading…
Reference in a new issue