我们正在使用 dpkg-deb 为 war 文件和一些脚本创建一个简单的二进制包。
一个问题是,假设我们以名为“goofy”的本地用户身份执行此操作,那么包中的文件将归 goofy 拥有。
当我们稍后尝试以 root 身份安装此软件包时,我们惊讶地发现它放在 /opt/ourpackage 中的文件仍然归 goofy 所有。
现在大多数人的机器上都不会存在愚蠢的用户,那么处理这个问题的最佳方法是什么呢?
我们假设有两种选择:
- 使所有文件归我们假设存在于所有服务器上的用户所有 - 即root。
- 创建一些预安装脚本,首先创建愚蠢的(或适当的)用户。
推荐什么方法?
如果答案是 2,是否有人有经过尝试和测试的脚本可以添加到包中来执行此操作?
我们本来会选择选项 1,但由于创建和构建包的“用户”是 jenkins,所以无法轻松创建由 root 拥有的文件,因此选项 1 受到阻碍。
答案1
现在你可以使用--root-owner-group
而不是fakeroot
来创建一个包,其中所有文件都将作为 部署root
。
dpkg-deb --root-owner-group --build $builddir $outputdeb
答案2
最终的解决方案是使用 fakeroot ( sudo apt-get install fakeroot
)。
然后打包者就可以拥有要打包的文件了,但是当我们运行时:
fakeroot dpkg-deb --build debian
它欺骗构建器,使其认为所有文件都归 root 所有,并使 lintian 满意,并以 root 身份在目标服务器上安装文件。