如何在gradle ospackage插件中使用目录结构?

如何在gradle ospackage插件中使用目录结构?,gradle,rpm,Gradle,Rpm,我正在使用Netflix()提供的gradle ospackage插件,它让我可以轻松创建包含项目输出的RPM包 我希望我的RPM在安装时创建几个空目录。在老式的rpm规范中,我会这样做: %dir /var/opt/myapp/data 我试着用这个: ospackage { packageName = 'foo' } buildRpm { directory('/var/opt/myapp/data', 640) } “gradlew buildRpm”做得很好。调用r

我正在使用Netflix()提供的gradle ospackage插件,它让我可以轻松创建包含项目输出的RPM包

我希望我的RPM在安装时创建几个空目录。在老式的rpm规范中,我会这样做:

%dir /var/opt/myapp/data
我试着用这个:

ospackage {
    packageName = 'foo'
}
buildRpm {
     directory('/var/opt/myapp/data', 640)
}
“gradlew buildRpm”做得很好。调用
rpm-q-filesbypkg-p
时,我得到了这个看似正确的输出:

foo          /var/opt/myapp/data
但是,在安装时,它会失败:

[vagrant@guest1 share]$ sudo rpm -i foo-0.0.1.noarch.rpm
error: unpacking of archive failed on file ./var/opt/myapp/data: cpio: Archive file not in header
我不明白:

  • 为什么它尝试在“.”而不是根目录中安装目录,以及
  • 为什么连这都失败了

  • 任何提示都是非常受欢迎的,因为Plugin-Rpm.md文件在目录问题上不是很好用。

    createDirectoryEntry和
    addParentDirs
    标志控制这一点

    into('/mydir/'){
        fileMode 0550
        from ( 'src/mydir'){ 
              addParentDirs false 
              createDirectoryEntry true 
        } 
    }  
    
    手动创建如下目录:

    directory( '/space/tmpdir' ,0775);
    
    你看,那个网站上有很多关于这个问题的问答

    注意:存在缺陷和解决方法注释


    目录语句本身对我来说很好,可能在您发布之后就已经修复了。

    您可能更想在插件的GitHub页面上问这个问题。我问了,但没有得到回应,所以几周后我决定在这里碰碰运气。祈祷有人尝试过这个我可以在本周晚些时候看一看。感谢您的报道。对于GitHub或Google group上的问题仍然没有答复…我自己也不知道答案,但作为替代方案,您可以执行安装前或安装后脚本,创建您想要的空目录。例如:postInstall文件('postInstall.sh')