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

标签 gradle rpm

我使用的是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

我看不到:
  • 为什么尝试在“。”中安装目录。而不是根和
  • 为什么连失败。

  • 任何提示都是最可喜的,因为在目录问题上Plugin-Rpm.md文件不是很实用。

    最佳答案

    createDirectoryEntryaddParentDirs标志对此进行控制。

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

    手动创建目录,如下所示:
    directory( '/space/tmpdir' ,0775);
    

    请参阅the gradle-ospackage-plugin page,该站点上对此问题有很多问答。

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

    单独的目录语句对我来说很好,可能自您发布以来就已修复。

    关于gradle - 如何在gradle-ospackage-plugin中使用目录构造?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28281779/

    相关文章:

    java - 从可执行文件中查找 rpm 名称

    linux - 如何递归指定rpm.spec中文件夹的属性

    linux - 使用 system() API 时 rpm 安装后脚本失败

    java - Smart 无法安装...没有包提供共享对象文件

    gradle - 无法为依赖分配原因

    android - Facebook SDK升级和android.support v7:25

    maven - 如何在gradle中编写项目信息?

    java - 如何用 Java 捕获所有 Bash 输出

    linux - 防止Centos 6更新期间恶魔自动启动

    java - 如何从 Java 调用 Gradle 脚本?