Как удалить каталог sstate-cache в Yocto?
Размер мой sstate-cache
каталог моей среды "fido" в YoctoProject составляет более 3 ГБ. Как я могу удалить sstate-cache
каталог в yocto/build-dir
?
Это сохранить для использования rm -rf
или есть другой способ?
5 ответов
Согласно справочному руководству Yocto можно сохранить полное build/tmp
каталог, включая sstate-cache
каталог:
В крайнем случае, чтобы очистить сборку и запустить ее с нуля (кроме загрузок), вы можете удалить все в каталоге tmp или полностью избавиться от каталога. Если вы это сделаете, вам также следует полностью удалить каталог build/sstate-cache. (см. [1] и [2])
Кроме того, вы можете удалить sstate-кеш с помощью bitbake
для конкретного рецепта по телефону do_cleansstate
как показано ниже (см. do_cleansstate).
$ bitbake -c cleansstate recipe
Имейте в виду, что Shared State Cache требуется много места в памяти, и он снова будет увеличиваться до размера, необходимого при создании изображений.
Более подробная информация о Shared State Cache доступна в следующих разделах Справочного руководства Yocto: Shared State Cache и sstate-cache.
Правильная задача для этого:
$ bitbake -c cleansstate <recipe-name>
Смотрите: Справочное руководство Yocto
Есть больше задач для очистки, которые удаляют sstate кеш и даже больше (например, do_cleanall
).
Удалить каталог sstate-cache безопасно, однако правильный способ уменьшить его размер - использовать сценарий в poky/scripts/sstate-cache-management.sh
который удалит старые записи. См. https://git.yoctoproject.org/cgit.cgi/poky/plain/scripts/sstate-cache-management.sh
Вы можете удалить sstate-cache из сборки, и наиболее частой причиной этого является то, что он продолжает расти по мере того, как для каждой сборки добавляется все больше и больше кешированных данных. Вот простой способ его очистки:
./scripts/sstate-cache-management.sh --remove-duplicated -d --cache-dir=<path to sstate-cached>
Это удаляет повторяющиеся и старые данные из кеша.
ПРИМЕЧАНИЕ: когда нам нужно перестроить с нуля, мы либо удаляем build / tmp, чтобы можно было использовать sstate-cache для ускорения сборки, либо удаляем как build / tmp, так и sstate-cache, чтобы во время сборки не использовался повторно кеш..
Я выделил часть, в которой есть команда для уменьшения размера кэша sstate; Это альтернативный способ очистки кеша.
https://www.yoctoproject.org/sites/default/files/yocto_devday_advanced_class_sandiego.pdf слайд 37
Состояние: рекомендации
• В сложных системах рекомендуется разделять каталоги sstate, например, собственные и ненативные каталоги sstate, а также разные BSP и арки.
• Повторное использование одного каталога очень быстро станет очень большим. Используйте atime для удаления старых файлов. Примечание: для этого требуется, чтобы файловая система была смонтирована с atime/relaytime, которую мы обычно рекомендуем отключать для производительности сборки.
найти ${sstate_dir} -name 'sstate*' -atime +3 -delete; Fi *
• Периодически перестраивайте sstate в новый каталог и удаляйте старый каталог sstate, чтобы сохранить ограниченный размер. Могут быть пакеты или версии пакетов, которые больше не используются и просто занимают место.
• Хотя для состояния можно использовать другие протоколы, такие как HTTP и FTP, их следует избегать. Использование HTTP ограничивает sstate только для чтения, а FTP обеспечивает низкую производительность.
• Кроме того, отсутствующий файл sstate на сервере http/ftp приводит к зависанию wget в течение длительного времени из-за повторных попыток и времени ожидания.