如何以用户身份运行命令,而不是在我的配方中运行 root?

How do I run a command as the user and not root in my recipe?

提问人:Eternal 提问时间:11/17/2023 更新时间:11/17/2023 访问量:26

问:

我的问题的最小版本:

假设我想在我的映像中包含一个文件,其中包含构建该文件的用户的名称。我会在食谱中写一些东西,并希望得到最好的结果。whoami > ${D}/path/to/the/file

在实践中,文件始终包含而不是用户的名称,所以我的问题是:我怎样才能以实际用户的身份从我的配方中运行?rootwhoami

实际使用案例:

我实际上想做的事情有点不同,但归结为同一个问题。 我的项目结构是这样的:

myproject
- menu.json
- layers
| - poky
| - meta-foo
| - meta-bar
- builds
  - downloads
  - sstate
  - build-directory

此结构不是手动创建的,而是通过 Yocto cooker 自动创建的:该文件列出了可重复构建所需的所有信息。该目录是一个 git 存储库,对该文件进行版本控制,这相当于对整个项目进行版本控制。该工具读取文件并处理克隆/更新正确的层(有点像您对 google repo 或 git 子模块所做的操作)、生成构建目录、将我想要的内容添加到文件中以及启动构建。menu.jsonmyprojectlocal.conf

我真正想做的是在我的图像中包含版本信息,所以基本上在每个层的目录中运行,然后将结果存储在文件中。 这些目录属于用户,因此以 root 身份运行命令会导致错误。我发现了一个肮脏的解决方法(事先运行),但我正在寻找一个干净的解决方案,即以实际用户身份运行命令git describe --tagsmyprojectgit: fatal: detected dubious ownershipgit config --global --replace-all safe.directory '*'

git yocto

评论

0赞 skandigraun 11/17/2023
您可以使用禁用伪(Yocto 的类似 fakeroot 的应用程序)。例如,如果您运行 ,它将提供您当前的用户名。PSEUDO_DISABLED=1PSEUDO_DISABLED=1 whoami

答: 暂无答案