加密 .deb 内容

加密 .deb 内容

我有一个 .deb 软件包想要安装在我的客户设备中。目前,我将这些包放在私有存储库中,只能使用私钥访问。但我也想防止客户(或任何能够下载该软件包的人)解压它并查看/更改代码。我的想法是拥有一个 deb 包,只有在系统中存在解密密钥时才能安装/解压,但这似乎并不容易做到。

我的想法是有两个 .deb 包。我已经拥有一个“普通”包(让我们称之为内部包)和另一个包(外部包),它唯一拥有的是:

  • 加密的内部包,将放置在 /tmp/inner.deb.enc 中
  • 在 postinst 脚本中,检查是否有解密密钥,如果有,则解密内部包并安装它。

这有一个关键问题。在 postinst 脚本中,我像这样安装内部 deb:dpkg -i /tmp/inner.deb。因此,当我尝试安装外包时,出现以下错误dpkg: error: dpkg database lock was locked by another process with pid 10024。我相信这是由于安装外部软件包时,它锁定了 dpkg 数据库,并且尝试在该进程中再次调用 dpkg(以安装内部软件包)将与外部安装的锁定发生冲突。

如果更改dpkg -i /tmp/inner.deb为,apt install /tmp/inner.deb我也会遇到类似的问题,当我尝试安装外包时,它会等待锁被释放。

有什么建议吗?要么遵循这种思路,要么采用完全不同的思路。

相关内容