Команда opkg update в OpenWrt не обновляет сами программы — она лишь скачивает свежие списки пакетов с репозиториев, и путаница в этом моменте регулярно приводит к ошибкам вида «Failed to download» или к ситуации, когда установленный пакет не виден в системе. Запрос «opkg update all» обычно означает, что пользователь хочет обновить все пакеты на роутере разом, но у opkg нет такой команды в привычном понимании: update обновляет только индексы, а за установку новых версий отвечает upgrade.
В этой статье разберём, что именно делает opkg update, как правильно обновить все пакеты, почему команда выдаёт ошибки загрузки и сколько места нужно на флеш-памяти роутера. Все примеры приведены для встроенной системы OpenWrt и её менеджера пакетов opkg, который работает через SSH или терминал.
Что делает opkg update на самом деле
Менеджер пакетов opkg хранит локальный кэш индексов — списки доступных пакетов с версиями и зависимостями. Команда opkg update скачивает эти индексы заново с источников, указанных в конфигурации. Сами установленные программы при этом не меняются ни на байт.
Запуск выглядит так:
opkg update
После успешного выполнения в терминале появятся строки вида Downloading ... Packages.gz и Updated list of available packages. Если вместо этого вы видите ошибки — проблема в сети, DNS, сертификатах или адресах репозиториев, и об этом ниже.
Как обновить все пакеты разом
Той самой команды «opkg update all» не существует — чтобы обновить все установленные пакеты, нужна связка из двух шагов: сначала обновить индексы, затем запустить opkg upgrade. Простейший вариант:
opkg update && opkg upgrade $(opkg list-upgradable | cut -f 1 -d ' ')
Здесь opkg list-upgradable показывает, какие пакеты имеют новые версии, а конструкция с cut передаёт их имена в upgrade. Можно сначала просто посмотреть список командой opkg list-upgradable, ничего не устанавливая — это безопасно.
⚠️ Внимание: массовое обновление всех пакетов на OpenWrt официально не рекомендуется разработчиками проекта. Пакеты, записанные во флеш-память в составе прошивки, при обновлении занимают дополнительное место в оверлее, и на устройствах с малым объёмом памяти это может привести к переполнению. Обновляйте только те пакеты, которые реально нуждаются в новой версии.
☑️ Безопасное обновление пакетов в OpenWrt
Типичные ошибки при выполнении opkg update
Чаще всего команда завершается ошибками загрузки. Вот основные причины, которые стоит проверить в первую очередь:
- 🌐 Нет интернета на самом роутере. Проверьте командой
ping -c 3 openwrt.org— если пинг не проходит, проблема в WAN-подключении, а не в opkg. - 📛 Не работает DNS. Пинг по IP проходит, а по имени — нет. Проверьте настройки DNS в
/etc/config/networkили через веб-интерфейс LuCI. - 🔒 Ошибка SSL-сертификата. Репозитории OpenWrt работают по HTTPS; при неправильном системном времени или отсутствии пакетов ca-bundle / ca-certificates загрузка не пройдёт. Сверьте дату командой
date. - 📦 Неверные адреса репозиториев. Проверьте файл
/etc/opkg/distfeeds.conf— там должны быть записи, соответствующие вашей версии прошивки. - ⏳ Устаревшая версия прошивки. Для старых релизов репозитории могут быть перенесены или закрыты, тогда индексы недоступны.
Нехватка места: главное ограничение роутеров
Даже если opkg update отработал корректно, установка или обновление пакетов может завершиться ошибкой only have ... available on filesystem. Причина проста: у многих роутеров объём флеш-памяти невелик, и после прошивки свободными остаются считанные мегабайты.
Проверить состояние памяти можно так:
df -h /overlay
Если раздел overlay заполнен почти полностью, сначала удалите ненужные пакеты командой opkg remove имя_пакета, очистите временные файлы в /tmp и только потом продолжайте обновление. Держать локальные копии индексов на устройстве не обязательно — они занимают место в оперативной памяти или во временном каталоге в зависимости от конфигурации.
Сравнение основных команд opkg
Чтобы не путаться в синтаксисе, сведём ключевые команды менеджера пакетов в одну таблицу:
| Команда | Назначение |
|---|---|
opkg update | Скачивает свежие списки пакетов из репозиториев |
opkg list-upgradable | Показывает пакеты, для которых есть новые версии |
opkg upgrade имя | Обновляет конкретный установленный пакет |
opkg install имя | Устанавливает новый пакет из репозитория |
opkg remove имя | Удаляет пакет из системы |
⚠️ Внимание: не обновляйте ядро и базовые системные компоненты через opkg upgrade. Версия ядра жёстко привязана к прошивке, и попытка обновить связанные модули через менеджер пакетов может привести к несовместимости и неработоспособности устройства. Обновление системы целиком выполняется только через перепрошивку (sysupgrade).
Почему opkg update иногда «забывает» списки пакетов
По умолчанию индексы opkg хранятся в каталоге /var/opkg-lists, который находится в оперативной памяти (tmpfs). После перезагрузки роутера списки стираются, и перед любой установкой пакетов нужно снова выполнять opkg update. Это нормальное поведение, а не ошибка — так система экономит флеш-память.
Обновление через веб-интерфейс LuCI
Если терминал вам неудобен, те же операции доступны в веб-интерфейсе LuCI. Откройте раздел System → Software и нажмите кнопку Update lists — это полный аналог команды opkg update. После обновления списков во вкладках появятся доступные пакеты и их версии.
Обратите внимание: если кнопка обновления списков выдаёт ошибку, причины те же, что и в консоли — сеть, DNS, сертификаты или репозитории. Веб-интерфейс лишь обёртка над теми же механизмами, поэтому диагностику удобнее проводить через SSH, где виден полный текст ошибки.
Когда обновление пакетов не поможет
Есть ситуации, в которых ни opkg update, ни opkg upgrade не решают задачу. Если нужная функция отсутствует в вашей версии прошивки в принципе, или репозитории для вашего релиза закрыты, единственный путь — обновление самой системы через sysupgrade до актуальной версии OpenWrt.
Перед таким шагом обязательно проверьте на официальном сайте проекта, поддерживается ли ваша модель роутера в новой версии, и сохраните архив настроек. Процедура перепрошивки зависит от конкретного устройства, поэтому сверяйтесь с инструкцией именно для вашей модели — универсальных гарантий здесь нет.
Частые вопросы
Чем opkg update отличается от opkg upgrade?
opkg update скачивает актуальные списки пакетов из репозиториев, не трогая установленные программы. opkg upgrade устанавливает новые версии уже имеющихся пакетов. Обычно сначала выполняют update, затем — при необходимости — upgrade.
Почему после перезагрузки роутера opkg не находит пакеты?
Списки пакетов хранятся в оперативной памяти (tmpfs) и стираются при перезагрузке. Просто выполните opkg update заново перед установкой — это штатное поведение системы.
Безопасно ли обновлять все пакеты сразу?
Разработчики OpenWrt не рекомендуют массовое обновление: обновлённые пакеты занимают дополнительное место в оверлее, возможны конфликты зависимостей. Обновляйте выборочно только то, что требует новой версии, и следите за свободным местом.
Что делать при ошибке «Signature check failed»?
Ошибка проверки подписи обычно означает несоответствие ключей репозитория или повреждённую загрузку. Проверьте правильность адресов в /etc/opkg/distfeeds.conf, корректность системного времени и повторите opkg update. Отключать проверку подписи не стоит — это снижает безопасность.
Можно ли обновить саму прошивку через opkg?
Нет. Менеджер opkg работает только с отдельными пакетами. Обновление системы выполняется через механизм sysupgrade с файлом прошивки, собранным под конкретную модель роутера.