创建Debian软件包时,应使用哪个用户/文件所有者?

我们正在使用dpkg-deb为war文件和一些脚本创建一个简单的二进制包。
其中一个问题是,假设我们以名为"goofy"的本地用户身份进行此操作,那么包中的文件将由goofy拥有。
当我们稍后尝试以root身份安装此包时,我们惊讶地发现它放在/opt/ourpackage中的文件仍然由goofy拥有。
现在,大多数人的机器上都不会存在goofy用户,那么处理这个问题的最佳方法是什么?
我们假设有两种选择:
1. 将所有文件的所有者设置为我们可以假定在所有服务器上都存在的用户,即root。 2. 创建一些预安装脚本,首先创建goofy(或适当的)用户。
哪种方法被推荐?
如果答案是第2种,是否有人有任何经过验证的脚本可以添加到包中来执行此操作?
我们本来会选择第1种选项,但由于将创建和构建包的"用户"是jenkins,所以无法轻松创建属于root的文件。

2你正在错误地创建软件包。如果你使用 debhelper,dh_fixperms 将会自动运行,并且除非另有指定,它会将所有者更改为 root:root。请参考:http://unix.stackexchange.com/a/254266/70524 - muru
好的,所以答案似乎是打包器在调用dpkg-deb之前需要将文件的所有者设为root。我们没有使用debhelper,因为它(以及其他大多数工具)的示例和文档都是为从某个上游源代码构建的系统设计的。我们没有这个 - 没有make文件或类似的东西。 - John Little
你可以使用debhelper来打包二进制文件。覆盖 dh_auto_configuredh_auto_build等步骤。其余的步骤可以按照通常的方式进行。 - muru
2个回答

现在你可以使用--root-owner-group而不是fakeroot来创建一个包,其中所有文件都将作为root部署。
dpkg-deb --root-owner-group --build $builddir $outputdeb

最后的解决方案是使用fakeroot(sudo apt-get install fakeroot)。
然后打包者可以拥有要打包的文件,但当我们运行时:
fakeroot dpkg-deb --build debian

它欺骗构建者以为所有文件都归根用户所有,并确保Lintian满意并将文件安装为目标服务器的根用户。