Разбор проблем
Если сломалось
Разобрано по тому, что вы видите. Начните с owfeed doctor или
owlab doctor: обе печатают пронумерованные находки, в каждой сказано, что упало,
какая команда упала и что делать.
Установка на роутер
| Что видно | Причина и что делать |
UNTRUSTED signature после обновления прошивки | Ключа больше нет. Сам по себе /etc/apk/keys/*.pem не переживает sysupgrade. Поставьте ключ заново и перечислите его вместе с файлом репозитория в /lib/upgrade/keep.d/<feed>, который sysupgrade читает наравне с /etc/sysupgrade.conf. |
apk просит --allow-untrusted | Индекс не подписан ни одним ключом, которому роутер доверяет. Проверьте, что файл ключа лежит в /etc/apk/keys/ и что вы смотрите на нужный фид. Флаг не передавайте: он отключает ровно ту проверку, ради которой ставился ключ. |
| Ничего не качается, HTTPS не работает | Стоковый образ не умеет ходить по HTTPS. Сначала apk add ca-bundle libustream-mbedtls. |
| URL фида отдаёт 404 или пустоту | apk не ходит по редиректам (openwrt#17180). Если фид переехал, впишите конечный URL. Для apk это URL файла индекса, для opkg — каталога. |
| Пакет никогда не обновляется | Его поставили файлом. apk add ./file.apk пишет пин на хеш содержимого в /etc/apk/world, и пин переживает sysupgrade. Удалите пакет, добавьте репозиторий, поставьте по имени. |
| Пакеты пропали после Attended Sysupgrade | Так и задумано. owut не передаёт сторонние репозитории, а repository_allow_list на сервере пуст по умолчанию. Добавьте фид и поставьте пакеты заново. |
breaks: world[...] на каждой установке | Rootfs и фид разных точечных релизов. Закрепите оба на одном и том же. |
Сборка и упаковка
| Что видно | Причина и что делать |
| apk считает пакет неустановимым | arch: all. apk требует noarch. В Makefile пишите LUCI_PKGARCH:=all и дайте сборке перевести, либо укажите arch: noarch в owfeed.yml. |
| Ключ не принимается | Это PEM в формате PKCS#8. openssl genpkey -algorithm EC пишет не ту форму, работает только SEC1. Делайте ключ через owfeed keygen. |
| Версия отвергнута | После ~ apk читает хеш коммита, там допустимы только шестнадцатеричные цифры. Пишите 1.0_beta1, а не 1.0~beta. -r<n> идёт последним. |
| Индекс не сходится с пакетами | Индекс собран до подписи. Подпись дописывает байты. Сначала sign, потом index. |
| Переводы не появляются | LuCI читает скомпилированные .lmo и игнорирует .po. Укажите на каталоги переводов i18n.from:, и owfeed их скомпилирует. |
| Настройки пользователя затираются на каждом обновлении | Файл везётся пакетом, но не объявлен в conffiles:. Объявите каждый /etc/config/*, который ставит пакет. |
| Без минификации работает, после настоящей сборки ломается | luci.mk минифицирует JS и CSS, а owlab sync нет. Перед релизом прогоните owlab build. |
| Пакет отсутствует в одной из линий релизов | owfeed doctor читает дерево и не видит того, чего в нём не написали. Сверяйте собранное дерево со своим конфигом — для этого у фида есть отдельная проверка. |
Публикация фида
| Что видно | Причина и что делать |
$OWFEED_SIGN_KEY is empty | Секрета нет или job стартовал раньше, чем секрет появился. Учтите: вызывающий workflow не может прочитать секрет окружения, поэтому ключи подписи должны быть секретами репозитория или организации. |
| OWF513: у опубликованной версии другое содержимое | Пакет изменился без поднятия версии либо сборка перестала быть воспроизводимой. Не публикуйте поверх — поднимите ревизию. |
OWF514: с живого сайта пропал .nojekyll | actions/upload-pages-artifact с четвёртой версии выбрасывает файлы с точкой. Поставьте include-hidden-files: true, иначе Pages прогонит по фиду Jekyll и удалит все пути, начинающиеся с точки или подчёркивания. |
| Деплой Pages падает на правах | actions/deploy-pages требует actions: read, а блок permissions: молча отбирает это право, если перечисляет только другие. |
owfeed doctor проходит, а smoke падает | Дерево согласовано, но роутер его не принимает. Смотрите вывод контейнера: обычно это зависимость, которая не разрешается на стоковом образе, или файл, установленный туда, куда никто не смотрит. |
| Документированный URL установки отдаёт 404 | README разошёлся с фидом. Генерируйте его: owfeed install-snippet. doctor сверяет одно с другим. |
| Сборка падает из-за устаревшего lock-файла | Апстрим добавил или убрал архитектуру. Выполните owfeed lock --update и прочитайте разницу, прежде чем коммитить. |
Тестовые роутеры (owlab)
| Что видно | Причина и что делать |
| LuCI отвечает, но ничего не работает | procd сажает сервисы в jail, а контейнер jail построить не может. Для всего, чему нужно настоящее ядро или jail, берите fidelity: vm. |
| Здоровая страница отдаёт 403 | Неавторизованный запрос к /cgi-bin/luci/admin — это редирект на форму входа. owlab test сначала логинится, а написанный руками curl нет. |
| Ответ 200, а в теле трейсбек | Диспетчер LuCI отдаёт 200, когда ловит исключение. owlab test считает это провалом, проверка кода ответа — нет. |
kmod-* ставится, но не грузится | Контейнер работает на ядре хоста. Модулям ядра нужен fidelity: vm. |
| Установки начали падать через день после того, как работали | Вы закрепились на snapshot. Образы и фиды snapshot пересобираются ежедневно и независимо. Указывайте точные номера релизов. |
Правки в images/ ни на что не влияют | Контекст сборки зашит в бинарь. Пересоберите: go build. |
| Сеть работает, а DNS нет | Движок контейнеров не пробрасывает исходящий UDP 53. owlab doctor это проверяет. |
Куда смотреть дальше