Вопрос или проблема
У меня есть собственная Linux дистрибутив, созданная с помощью Yocto/Poky на ветке thud. Я использую opkg как программу для управления обновлением пакетов на моих встраиваемых системах. У меня работают сотни систем, и я хочу обновить важный пакет на них (my-custom-package
). На подавляющем большинстве систем все прошло хорошо, но на 4 системах я сталкиваюсь с этими ошибками:
root@hostname:~# opkg -v
opkg version 0.3.6 (libsolv 0.6.35)
root@hostname:~# opkg upgrade my-custom-package -V 2
opkg_conf_parse_file: Loading conf file /etc/opkg/arch.conf.
opkg_conf_parse_file: Supported arch all priority (1)
opkg_conf_parse_file: Supported arch any priority (6)
opkg_conf_parse_file: Supported arch noarch priority (11)
opkg_conf_parse_file: Supported arch armv5hf-vfp priority (16)
opkg_conf_parse_file: Supported arch armv5thf-vfp priority (21)
opkg_conf_parse_file: Supported arch armv5ehf-vfp priority (26)
opkg_conf_parse_file: Supported arch armv5tehf-vfp priority (31)
opkg_conf_parse_file: Supported arch armv6hf-vfp priority (36)
opkg_conf_parse_file: Supported arch armv6thf-vfp priority (41)
opkg_conf_parse_file: Supported arch armv7ahf-vfp priority (46)
opkg_conf_parse_file: Supported arch armv7at2hf-vfp priority (51)
opkg_conf_parse_file: Supported arch armv7ahf-neon priority (56)
opkg_conf_parse_file: Supported arch armv7at2hf-neon priority (61)
opkg_conf_parse_file: Supported arch cortexa9hf-vfp priority (66)
opkg_conf_parse_file: Supported arch cortexa9hf-neon priority (71)
opkg_conf_parse_file: Supported arch cortexa9t2hf-vfp priority (76)
opkg_conf_parse_file: Supported arch cortexa9t2hf-neon priority (81)
opkg_conf_parse_file: Supported arch cortexa9t2hf-neon-mx6sx priority (86)
opkg_conf_parse_file: Supported arch cortexa9hf-neon-mx6sx priority (91)
opkg_conf_parse_file: Supported arch udooneo priority (96)
opkg_conf_parse_file: Loading conf file /etc/opkg/opkg.conf.
pkg_hash_load_feeds:
pkg_hash_load_status_files:
pkg_info_preinstall_check: Updating file owner list.
opkg_configure_packages: Configuring unpacked packages.
opkg_configure_packages: Reordering packages before configuring them...
Collected errors:
* Solver encountered 3 problem(s):
* Problem 1/3:
* - nothing provides requested python3-core
*
* Solution 1:
* - do not ask to install a package providing python3-core
* Problem 2/3:
* - nothing provides requested python3-ctypes
*
* Solution 1:
* - do not ask to install a package providing python3-ctypes
* Problem 3/3:
* - nothing provides requested python3-mime
*
* Solution 1:
* - do not ask to install a package providing python3-mime
root@hostname:~# opkg info my-custom-package
Package: my-custom-package
Version: 3.2-r3
Depends: python3-core, python3-fcntl, python3-inotify-simple, python3-psutil, python3-pymonocypher, python3-pythonping, python3-requests, python3-simplejson, python3-websocket-client
Recommends: ca-certificates, gsm-tools, iw, update-rc.d
Status: unknown ok not-installed
Section: base
Architecture: cortexa9t2hf-neon
Maintainer:
MD5Sum: 883ef1ca5659cdd77a7947662daaa115
Size: 22252
Filename: my-custom-package_3.2-r3_cortexa9t2hf-neon.ipk
Source: my-custom-package_3.2.bb
Description: my-custom-package version 3.2-r3
Package: my-custom-package
Version: 2.1-r9
Depends: python-core, python-logging, python-psutil, python-requests, python-simplejson, python-subprocess, python-websocket-client
Recommends: ca-certificates, gsm-tools, iw, update-rc.d
Status: install ok installed
Architecture: cortexa9t2hf-neon
Installed-Size: 33328
Installed-Time: 1573829351
root@hostname:~# opkg install python3-core -V2
opkg_conf_parse_file: Loading conf file /etc/opkg/arch.conf.
opkg_conf_parse_file: Supported arch all priority (1)
opkg_conf_parse_file: Supported arch any priority (6)
opkg_conf_parse_file: Supported arch noarch priority (11)
opkg_conf_parse_file: Supported arch armv5hf-vfp priority (16)
opkg_conf_parse_file: Supported arch armv5thf-vfp priority (21)
opkg_conf_parse_file: Supported arch armv5ehf-vfp priority (26)
opkg_conf_parse_file: Supported arch armv5tehf-vfp priority (31)
opkg_conf_parse_file: Supported arch armv6hf-vfp priority (36)
opkg_conf_parse_file: Supported arch armv6thf-vfp priority (41)
opkg_conf_parse_file: Supported arch armv7ahf-vfp priority (46)
opkg_conf_parse_file: Supported arch armv7at2hf-vfp priority (51)
opkg_conf_parse_file: Supported arch armv7ahf-neon priority (56)
opkg_conf_parse_file: Supported arch armv7at2hf-neon priority (61)
opkg_conf_parse_file: Supported arch cortexa9hf-vfp priority (66)
opkg_conf_parse_file: Supported arch cortexa9hf-neon priority (71)
opkg_conf_parse_file: Supported arch cortexa9t2hf-vfp priority (76)
opkg_conf_parse_file: Supported arch cortexa9t2hf-neon priority (81)
opkg_conf_parse_file: Supported arch cortexa9t2hf-neon-mx6sx priority (86)
opkg_conf_parse_file: Supported arch cortexa9hf-neon-mx6sx priority (91)
opkg_conf_parse_file: Supported arch udooneo priority (96)
opkg_conf_parse_file: Loading conf file /etc/opkg/opkg.conf.
pkg_hash_load_feeds:
pkg_hash_load_status_files:
pkg_info_preinstall_check: Updating file owner list.
opkg_configure_packages: Configuring unpacked packages.
opkg_configure_packages: Reordering packages before configuring them...
Collected errors:
* Solver encountered 3 problem(s):
* Problem 1/3:
* - nothing provides requested python3-core
*
* Solution 1:
* - do not ask to install a package providing python3-core
* Problem 2/3:
* - nothing provides requested python3-ctypes
*
* Solution 1:
* - do not ask to install a package providing python3-ctypes
* Problem 3/3:
* - nothing provides requested python3-mime
*
* Solution 1:
* - do not ask to install a package providing python3-mime
root@hostname:~# opkg info python3-core
Package: python3-core
Version: 3.5.6-r1.0
Depends: libc6 (>= 2.28), libpython3.5m1.0 (>= 3.5.6), libreadline7 (>= 7.0), libz1 (>= 1.2.11)
Status: install ok not-installed
Section: devel/python
Architecture: cortexa9t2hf-neon
Maintainer:
MD5Sum: 6f56b22b7993c0cf351559a944abe0df
Size: 1027792
Filename: python3-core_3.5.6-r1.0_cortexa9t2hf-neon.ipk
Source: python3_3.5.6.bb
Description: Python interpreter and core modules
root@hostname:~# opkg info python3-mime
Package: python3-mime
Version: 3.5.6-r1.0
Depends: python3-core
Status: install ok not-installed
Section: devel/python
Architecture: cortexa9t2hf-neon
Maintainer:
MD5Sum: f9254dc437295edfa828ab8d68d9d5f8
Size: 10074
Filename: python3-mime_3.5.6-r1.0_cortexa9t2hf-neon.ipk
Source: python3_3.5.6.bb
Description: Python MIME handling APIs
root@hostname:~# opkg info python3-ctypes
Package: python3-ctypes
Version: 3.5.6-r1.0
Depends: libc6 (>= 2.28), libffi6 (>= 3.2.1), libpython3.5m1.0 (>= 3.5.6), python3-core
Status: install ok not-installed
Section: devel/python
Architecture: cortexa9t2hf-neon
Maintainer:
MD5Sum: 2667c24b23434635208177d03d6efcc6
Size: 67912
Filename: python3-ctypes_3.5.6-r1.0_cortexa9t2hf-neon.ipk
Source: python3_3.5.6.bb
Description: Python C types support
Таким образом, my-custom-package
имеет несколько зависимостей Python, и opkg, похоже, не может их найти. Но когда я запускаю opkg info <pkg>
на зависимостях, я получаю результат и opkg находит пакет. Я проверил в своем репозитории, были ли там сжатые пакеты для загрузки, и всё выглядит нормально. Также одна из моих проблемных встроенных систем находится в том же здании, что и другие, установленные в тот же день (так что все они из одного образа, одной компиляции,…). Я привык обновлять пакеты с opkg удаленно. Я сталкивался с этой проблемой один раз около 6 месяцев назад на одной системе, но так как это было обновление некритичного пакета, я просто проигнорировал проблему.
Я попробовал opkg clean
, но безуспешно. Я прочитал man-страницу в поисках полезных команд, но ни одна не имела эффекта.
РЕДАКТИРОВАНО:
Еще несколько интересных моментов:
root@hostname:~# opkg download python3-core
Downloading https://my-repository/ipks/v2/cortexa9t2hf-neon/python3-core_3.5.6-r1.0_cortexa9t2hf-neon.ipk.
Downloaded python3-core as python3-core_3.5.6-r1.0_cortexa9t2hf-neon.ipk.
Так что, если я попробую просто скачать один из пакетов, который opkg не может найти, это работает…
Также, простое opkg list-upgradable
возвращает тот же вид ошибок:
root@hostname:~# opkg list-upgradable
Collected errors:
* Solver encountered 3 problem(s):
* Problem 1/3:
* - nothing provides requested python3-core
*
* Solution 1:
* - do not ask to install a package providing python3-core
* Problem 2/3:
* - nothing provides requested python3-ctypes
*
* Solution 1:
* - do not ask to install a package providing python3-ctypes
* Problem 3/3:
* - nothing provides requested python3-mime
*
* Solution 1:
* - do not ask to install a package providing python3-mime
У меня была такая же проблема на системе yocto, когда я пытался
opkg install libfreetype6
Я попробовал все возможные переключатели, и переключатель –force-reinstall сработал!
opkg install libfreetype6 --force-reinstall
Ответ или решение
Чтобы решить проблему с ошибкой "OPKG: ничего не предоставляет запрашиваемое" в вашей кастомной дистрибуции Linux, собранной с использованием Yocto/Poky на ветке thud, давайте рассмотрим последовательность действий для устранения неполадок.
1. Анализ проблемы
У вас возникли проблемы на четырех системах при обновлении my-custom-package, который зависит от нескольких модулей Python3. Ошибка "ничего не предоставляет запрашиваемое" указывает на то, что OPKG не может найти указанные зависимости:
- python3-core
- python3-ctypes
- python3-mime
2. Первоначальные проверки
-
Убедитесь в доступности репозиториев: Проверьте конфигурационные файлы OPKG, такие как
/etc/opkg/opkg.conf
, и подтвердите, что все необходимые репозитории указаны и доступны для системы. -
Проверка сети: Убедитесь, что все четыре системы имеют правильные сетевые настройки и могут подключиться к репозиториям.
3. Проверка кэша OPKG
Вы уже пробовали opkg clean
, что очищает кэш OPKG. После этого возможно стоит:
- Обновить списки пакетов командой:
opkg update
4. Ручная проверка наличия пакетов
Вы упомянули, что можете загрузить пакеты вручную с использованием opkg download
. Проверьте каждый пакет вручную:
opkg download python3-core
opkg install ./python3-core_3.5.6-r1.0_cortexa9t2hf-neon.ipk
5. Принудительная установка
Ранее обсуждалось использование ключа --force-reinstall
, который может помочь преодолеть зависание в инсталляционном процессе:
opkg install python3-core --force-reinstall
6. Проверка зависимостей
Проверьте, не изменились ли зависимости нужных пакетов:
- Откройте файл рецепта Yocto для my-custom-package и убедитесь, что все зависимости прописаны корректно.
7. Советы по отладке
-
Версии пакетов: Сравните версии проблемных пакетов на других успешно обновленных системах, возможно версии различаются.
-
Логи OPKG: Просмотрите системные логи и логи OPKG для дополнительных указаний на ошибку.
Заключение
Если все вышеперечисленные шаги не привели к успеху, рекомендуется методично отслеживать все изменения в системе и повторить ситуацию на тестовой системе. Это позволит более точно выявить причину проблемы. Убедитесь, что вся инфраструктура Yocto в виде мета-слоев находится в согласованном состоянии с версией thud.
Ваш труд и опыт являются вашим сильным оружием в решении этой задачи. Продолжайте идти вперед, и вы обязательно найдете решение для этой проблемы.