Yocto中sstate-cache目录应该如何删除?

问题描述 投票:0回答:5

我的 YoctoProject“fido”环境的

sstate-cache
目录大小超过 3GB。 如何删除
sstate-cache
中的
yocto/build-dir
目录?

使用安全吗

rm -rf
或者还有其他方法吗?

yocto bitbake
5个回答
26
投票

根据 Yocto 参考手册,删除整个

build/tmp
目录(包括
sstate-cache
目录)是安全的:

作为最后的手段,清理构建并从头开始 (除了下载),您可以删除 tmp 中的所有内容 目录或完全删除该目录。如果你这样做,你 还应该完全删除 build/sstate-cache 目录。 (参见 [1][2]

此外,您可以通过调用

bitbake
来删除特定配方的
do_cleansstate
的状态缓存,如下所示(请参阅 do_cleansstate)。

$ bitbake -c cleansstate recipe

请注意,共享状态缓存需要大量内存,并且它将再次增长到构建图像所需的大小。

有关共享状态缓存的更多详细信息,请参阅 Yocto 参考手册的以下部分: 共享状态缓存sstate-cache


11
投票

正确的任务是:

$ bitbake -c cleansstate <recipe-name>

参见:Yocto 参考手册

有更多的清理任务,会删除状态缓存甚至更多(例如

do_cleanall
)。


8
投票

删除 sstate-cache 目录是安全的,但是减小其大小的正确方法是使用

poky/scripts/sstate-cache-management.py
中的脚本,这将删除旧条目。请参阅https://git.yoctoproject.org/poky/tree/scripts/sstate-cache-management.py(旧版本中的脚本为 sstate-cache-management.sh)


3
投票

我将具有减少 sstate 缓存大小的命令的部分加粗了;这是清理缓存的另一种方法。

https://old.yoctoproject.org/sites/default/files/yocto_devday_advanced_class_sandiego.pdf幻灯片37

状态:建议

• 在复杂的系统中,建议分开 sstate 目录, 例如本机和非本机 sstate 目录,以及 不同的 BSP 和拱门。

• 重复使用单个目录会很快变得非常大。使用atime删除旧文件。注意:这需要安装文件系统 使用 atime/relatime 我们通常建议在构建时禁用它 表现。

查找 ${sstate_dir} -name 'sstate*' -atime +3 -delete

• 定期将 sstate 重建到新目录并删除旧的 sstate dir 以保持有限的大小。可能有包或者包 不再使用且仅占用空间的版本。

• 虽然可以使用其他协议进行状态,例如 像 HTTP 和 FTP 一样,你应该避免这些。使用 HTTP 限制状态 只读,FTP 的性能很差。

• 此外,http/ftp 服务器上缺少 sstate 文件会导致 wget 由于重试和超时而挂起很长时间


3
投票

您可以从构建中删除 sstate-cache,最常见的原因是,随着每次构建添加越来越多的缓存数据,它会不断增长。有一个简单的清洁方法,如下:

./scripts/sstate-cache-management.sh --remove-duplicated -d --cache-dir=<path to sstate-cached>

这将从缓存中删除重复的旧数据。

注意:当我们需要从头开始重建时,我们要么删除构建/ tmp 以便我们可以使用 sstate-cache 来加速构建或者我们 删除 build/tmp 和 sstate-cache 以便没有缓存 在构建过程中重复使用。

© www.soinside.com 2019 - 2024. All rights reserved.