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

Joh*_*tle 8 package-management debian

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

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

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

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

我们假设有两种选择:

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

推荐什么方法?

如果答案是 2,是否有人可以将任何经过试验和测试的脚本添加到包中来执行此操作?

我们本来会选择选项 1,但由于将创建和构建包的“用户”是 jenkins,因此无法轻松创建由 root 拥有的文件,这一事实阻碍了这一点。

小智 12

如今,您可以使用--root-owner-group而不是fakeroot创建一个包,其中所有文件都将部署为root.

dpkg-deb --root-owner-group --build $builddir $outputdeb
Run Code Online (Sandbox Code Playgroud)


Joh*_*tle 8

最后的解决办法是使用fakeroot( sudo apt-get install fakeroot)。

那么打包者就可以拥有要打包的文件了,但是当我们运行的时候:

fakeroot dpkg-deb --build debian
Run Code Online (Sandbox Code Playgroud)

它欺骗构建者认为所有文件都归 root 所有,并让 lintian 高兴并以 root 身份将文件安装在目标服务器上。