gpt4 book ai didi

rpmbuild - %defattr 行为在 rpm 4.7.2 和 4.9.1 之间发生变化?

转载 作者:行者123 更新时间:2023-12-04 02:47:52 27 4
gpt4 key购买 nike

是否允许在 spec 文件中多次使用 %defattr?在 Ubuntu 10(rpm 版本 4.7.1)下,以下定义将导致 777 权限应用于 /var/log/testdir2

%files
%defattr(-,root,root,-)
%dir /var/log/testdir1
%defattr(777,root,root,-)
%dir /var/log/testdir2
%dir %attr(777,root,root) /var/log/testdir3

升级到 Ubuntu 12.04.1(x86_64RPM 版本 4.9.1.1)后,使用相同的 spec 文件重新生成 rpm 并部署到相同的目标机器导致 /var/log/testdir2 具有权限755. 我必须更改规范文件以定义 %attr,如上面的 /var/log/testdir3 以获得所需的权限。

spec 文件有一个 %defattr 定义,后跟具有这些权限的文件集,然后是另一个 %defattr 定义,后跟具有这些权限的文件集。那是不允许的吗?或者目录和文件在权限方面的处理方式是否存在差异?

最佳答案

%defattr 通常用于设置文件/目录的默认属性,所以多次使用它对我来说似乎很奇怪。首先让我们看看 %defattr 值:%defattr(file perms, user, group, dir perms)。所以可能/var/log/testdir3 目录在你的 tarball 中具有 755 的权限,因为你没有设置目录权限,它只是继承它们。

尝试这样的事情:

%files
%defattr(755,root,root,777)
%dir /var/log/testdir1
%dir /var/log/testdir2
%dir /var/log/testdir3

使用我上面的内容,它将目录设置为 777,然后将您列出的所有文件设置为 755,因为它继承了默认值(均具有 root.root 的所有权)。

我仍然对为什么要将日志目录的权限设置为 777 感到困惑,因为当您声明 %dir 时它只设置目录权限。您不是要将文件设置为某些内容吗?如果您需要具有不同权限的特定目录,您应该使用 %attr 属性。

关于rpmbuild - %defattr 行为在 rpm 4.7.2 和 4.9.1 之间发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18496481/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com