Ubuntu可以使用可重现的构建吗?

在关于这个问题的评论中, Ubuntu是否故意污染其二进制文件以帮助NSA? ,Jorge Castro指出,debian正在考虑使用可重现的构建 。 他们说

为什么我们需要可重复的构建?

  1. 独立validation二进制文件与源要生成的内容匹配。
  2. 帮助Multi-Arch:相同的软件包共同安装(因为它们需要每个匹配的文件都是字节相同的)。
  3. 能够为没有“调试包”的包生成调试符号。
  • 是否有任何迹象表明Ubuntu计划实施可重现的构建?

( 这是我在ubuntu-devel上的答案的副本 。)

除了极少数例外,几乎所有Debian的工作都只是进入构成包构建工具链一部分的包中,因此Ubuntu将inheritance自Debian合并和同步包的自然过程。 可能的例外是像我们可能插入到构建中的提议的libfaketime等预加载; 我当然希望及时了解Debian在这方面所做的事情,不仅仅是为了防止入侵,还因为这样做有直接的实际好处(更安全的多处理)。

我不知道这已经在Canonical中进行了专门讨论,主要是因为大多数相关人员目前正在努力研发Ubuntu Touch产品; 但我也认为在我们选择任何东西之前,首先要在Debian中完成工作。

这个问题有点严格。 每个发行版都将使用可重现的构建。 任何不包含有关其构建环境的信息的构建都是可重现的。 构建环境的外部状态会导致问题。

想要“可重复的构建”吗?

#include  int main ( int argc, char * argv[] ) { printf ("%s\n", "hello world"); return 0; } 

想要一个不可重复的构建?

 #include  int main ( int argc, char * argv[] ) { printf ("%s\n", __DATE__); // this will change every day. return 0; } 

这不是Ubuntu将“合作” 。 它始终与之合作 。 这是关于“确保”“拒绝违规”将采取的措施。

话虽如此,目前的计划是解决海湾合作委员会和个别方案中的问题。 我不知道有任何计划拒绝那些不可复制的东西。 此外,还有一个新的.buildinfo有助于阐明为什么事情可能无法重现。

也可以看看,

  • Ubuntu是否构建了确定性的? 为什么不