【问题标题】:How to set owner for directory in the %files?如何在 %files 中设置目录的所有者?
【发布时间】:2012-04-15 08:23:17
【问题描述】:

如果我在 %files 中有这一行:

%attr(0555, myuser, myuser) /opt/myapp/lib/my.jar

然后 my.jar 将拥有 myuser 作为所有者,但目录 /opt/myapp/lib 将由 root 拥有。 我不想写了

%attr(0555, myuser, myuser) /opt/myapp/lib/

因为我不希望 /opt/myapp/lib/ 中的所有文件都包含在内。

如何设置 /opt/myapp/lib/ 目录的所有者?

谢谢。

【问题讨论】:

    标签: rpm rpmbuild rpm-spec


    【解决方案1】:

    我不是 RPM 专家。但据我所知,您可以使用 %dir 指令,如下所示:

    %files
    %dir %attr(0555, myuser, myuser) /opt/myapp/lib
    %attr(0555, myuser, myuser) /opt/myapp/lib/my.jar
    

    或者,甚至更简单:

    %files
    %defattr(555,myuser,myuser,555)
    %dir /opt/myapp/lib
    /opt/myapp/lib/my.jar
    

    %dir 指令允许您添加目录,但不能添加其内容。

    【讨论】:

    • %dir 的目的是在目标机器上创建一个空的目录(如日志目录)。
    • 不,这不是真的。 (参见文档:rpm.org/max-rpm-snapshot/…):%dir 指令用于指示 RPM 仅对目录本身进行打包,而不管在创建包时目录中可能存在哪些文件。
    • @Javaguru 该链接给出了 404
    • @sebix:文档:ftp.rpm.org/max-rpm/…
    • @Javaguru 谢谢!
    【解决方案2】:

    正如其他“超级有用”的人所说...%dir 是为了别的东西。解决方案是使用 %attr 设置目录的用户和组所有者......因为我已经使用 %defattr 将我的目录设置为 755,所以我使用单个破折号 - 在 %attr 行中说......离开这个就是这样。

    %files
    #%attr(<mode>, <user>, <group>) file
    #%defattr(file perms, user, group, dir perms)
    %defattr(644,apache,apache,755)
    %attr(-,apache,apache) /var/www/coolapp
    %attr(-,apache,apache) /var/www/coolapp/users
    %attr(-,apache,apache) /var/www/coolapp/static
    /var/www/coolapp/myDB.sqlite
    /var/www/coolapp/__init__.py
    /var/www/coolapp/settings.py
    /var/www/coolapp/urls.py
    /var/www/coolapp/wsgi.py
    

    【讨论】:

      猜你喜欢
      • 2016-02-22
      • 1970-01-01
      • 2011-04-19
      • 2012-06-04
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      相关资源
      最近更新 更多