Automake:设置数据文件权限模式

Posted

技术标签:

【中文标题】Automake:设置数据文件权限模式【英文标题】:Automake: set data file permission pattern 【发布时间】:2012-06-27 18:59:16 【问题描述】:

我知道我可以在复制数据文件后使用install-data-hook 做任何我想做的事情,这样我就可以按照我想要的方式调整文件权限。

不过,我的问题在它之前。

我有什么办法可以告诉automake 为任何数据组设置标准权限掩码被复制之前?

我的意思是,我希望生成的 install 使用正确的掩码完成其任务,而不是让它使用标准的 0644 并在它更正所有文件权限之后。

换句话说,我希望任务一开始就完成,而不必稍后再修复。

有可能吗?

谢谢!

【问题讨论】:

【参考方案1】:

Automake 实现了GNU Standards。这些声明应使用命令$(INSTALL_DATA)、which should default to $(INSTALL) -m 644 安装数据文件。

您可以做的是在某些Makefile.am 中覆盖INSTALL_DATA 的值,然后此Makefile.am 安装的所有 数据文件将使用该定义。如果您有两组需要不同模式的数据文件,则必须将它们移动到两个不同的目录中,以便它们拥有自己的Makefile

【讨论】:

如何在Makefile.am 中设置INSTALL_DATA?如果我尝试INSTALL_DATA = $(INSTALL) -m 600,则会收到错误'INSTALL_DATA' is used but 'INSTALLdir' is undefined 你知道如何按照你的建议覆盖INSTALL_DATA吗?可以在Makefile.am 中完成吗?如果可以,语法是什么?还是必须在另一个文件中完成? 您当然可以使用AC_SUBSTconfigure.ac 覆盖它(但这对所有makefile 都是全局的)。我看不出有什么强烈的理由禁止从Makefile.am 覆盖它;我建议您将此作为错误提交。 我认为原因是automake将INSTALL_DATA识别为"special" variable,类似于bin_PROGRAMSsysconf_DATA等模式。我们如何在 Makefile.am 中更改 INSTALL_DATA 而不让 automake 认为它是一个“特殊”变量? Automake 本身正在从一些 automake 提供的 Makefile 模板中读取 INSTALL_DATA 的定义,并且它具有特定的处理代码来INSTALL_DATA 解释为特殊变量。但是,此代码仅在阅读 automake 提供的模板时才有效,而在阅读用户提供的 Makefile.am(您的情况)时无效。这就是为什么我认为您应该将其作为错误报告给 Automake 开发人员 (bug-automake@gnu.org)。

以上是关于Automake:设置数据文件权限模式的主要内容,如果未能解决你的问题,请参考以下文章

linux如何设置用户user为超级权限

fopen() 创建权限模式

Linux权限管理之基本权限

大数据系列HDFS文件权限和安全模式安装

Mercurial:忽略文件权限/模式(chmod)更改

Linux常用命令--文件操作权限设置