我正在使用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文件在目录问题上不是很快。
答案 0 :(得分:3)
createDirectoryEntry
和addParentDirs
标志控制着这一点。
into('/mydir/'){
fileMode 0550
from ( 'src/mydir'){
addParentDirs false
createDirectoryEntry true
}
}
手动创建如下目录:
directory( '/space/tmpdir' ,0775);
请参阅the gradle-ospackage-plugin page,该网站上有很多有关此问题的问答。
注意:有一个缺陷和解决方法评论here。
单独的目录语句对我来说很好,可能自你的帖子以来已经修复了。