首页 文章

如何在gradle-ospackage-plugin中使用目录构造?

提问于
浏览
0

我正在使用Netflix(https://github.com/nebula-plugins/gradle-ospackage-plugin)提供的gradle-ospackage-plugin,它可以让我轻松创建包含项目输出的RPM包 .

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

%dir /var/opt/myapp/data

我试过用这个:

ospackage {
    packageName = 'foo'
}
buildRpm {
     directory('/var/opt/myapp/data', 640)
}

"gradlew buildRpm"做得很好 . 当调用 rpm -q -filesbypkg -p <myrpm> 时,我得到了这个看似正确的输出:

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

我没有看到:

  • 为什么它尝试在"."而不是root中安装目录,并且

  • 为什么即使失败也是如此 .

任何提示都是最受欢迎的,因为Plugin-Rpm.md文件在目录问题上不是很快 .

1 回答

  • 3

    createDirectoryEntryaddParentDirs 标志控制着这一点 .

    into('/mydir/'){
        fileMode 0550
        from ( 'src/mydir'){ 
              addParentDirs false 
              createDirectoryEntry true 
        } 
    }
    

    手动创建这样的目录:

    directory( '/space/tmpdir' ,0775);
    

    请参阅the gradle-ospackage-plugin page,该网站上有很多关于此问题的问答 .

    注意:有一个缺陷和解决方法注释here .

    单独的目录语句对我来说很好,可能它已经修复,因为你的帖子 .

相关问题