Scala 如何使用sbt native packager为RPM更改单个文件或文件夹的所有权/属性?

Scala 如何使用sbt native packager为RPM更改单个文件或文件夹的所有权/属性?,scala,rpmbuild,sbt-native-packager,Scala,Rpmbuild,Sbt Native Packager,sbt native packager在生成RPM时,会正确地将大多数文件的文件所有权分配为root:root。我遇到过这样一种情况,即只有一个配置文件(RPM文件中不存在,但如果这样做更容易的话,可以添加它)需要由服务写入。最简单的方法是更改conf文件夹本身的所有权,允许服务稍后创建该文件。另一种方法是将该文件添加到RPM中,并仅更改该文件的所有权 我知道我可以使用如下一节更改所有配置文件的所有权: linuxPackageMappings in Rpm := { linuxPack

sbt native packager在生成RPM时,会正确地将大多数文件的文件所有权分配为root:root。我遇到过这样一种情况,即只有一个配置文件(RPM文件中不存在,但如果这样做更容易的话,可以添加它)需要由服务写入。最简单的方法是更改conf文件夹本身的所有权,允许服务稍后创建该文件。另一种方法是将该文件添加到RPM中,并仅更改该文件的所有权

我知道我可以使用如下一节更改所有配置文件的所有权:

linuxPackageMappings in Rpm := {
    linuxPackageMappings.value map {
        case linuxPackage if linuxPackage.fileData.config equals "true" =>
            val newFileData = linuxPackage.fileData.copy(
                user = "newuser",
                group = "newgroup"
            )
            linuxPackage.copy(fileData = newFileData)
        case linuxPackage => linuxPackage
    }
}
但是:1)这不会更改conf文件夹本身的所有权,2)更改conf文件中每个文件的所有权,我不想这样做。无论如何,无论我尝试什么,spec文件仍然具有:

%dir %attr(0755,root,root) /path/to/application/conf/
问题是它仍然归root:root所有。以下是我尝试过的,仅更改一个文件的所有权(在本案例中使用上述小节):

另外(答案可能是相同的),我如何才能将一个配置文件(按文件名选择)更改为
withConfig(“noreplace”)
,而不是其余的?我发现linuxPackageMappings是Seq[com.typesafe.sbt.packager.linux.LinuxPackageMapping]的一个实例,LinuxPackageMapping的每个实例都可以有一个或多个文件映射。我还没有弄清楚如何从LinuxPackageMapping中删除一个映射,并创建一个只包含一个文件的新LinuxPackageMapping。(或者有更好的方法吗?

您找到文档了吗?这里有一些关于如何更改linuxMappings的示例。还有一个问题。如果rpm.spec文件不正确,打开一个bug或提交一个测试失败的pull请求:)找到文档了吗?这里有一些关于如何更改linuxMappings的示例。还有一个问题。如果rpm.spec文件不正确,打开一个bug或提交一个测试失败的pull请求:)找到文档了吗?这里有一些关于如何更改linuxMappings的示例。还有一个问题。如果rpm.spec文件不正确,请打开一个bug或提交一个测试失败的pull请求:)
case linuxPackage if linuxPackage.mappings.head._2 equals "/path/to/application/conf/" =>