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

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

我们正在使用 dpkg-deb 为 war 文件和一些脚本创建一个简单的二进制包。

一个问题是,假设我们以名为“goofy”的本地用户身份执行此操作,那么包中的文件将归 goofy 拥有。

当我们稍后尝试以 root 身份安装此软件包时,我们惊讶地发现它放在 /opt/ourpackage 中的文件仍然归 goofy 所有。

现在大多数人的机器上都不会存在愚蠢的用户,那么处理这个问题的最佳方法是什么呢?

我们假设有两种选择:

  1. 使所有文件归我们假设存在于所有服务器上的用户所有 - 即root。
  2. 创建一些预安装脚本,首先创建愚蠢的(或适当的)用户。

推荐什么方法?

如果答案是 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 身份在目标服务器上安装文件。

相关内容