对于Linux平台,为什么我应该从源代码而不是预构建的二进制文件构建Python?

时间:2019-11-20 22:24:31

标签: python linux

我正在创建一个基于buildpack-deps:stretch的docker镜像。有人告诉我,最好安装从源代码构建的Python版本,而不是安装预构建的二进制文件。

问题:为什么偏爱从源代码构建Python?

  1. 我阅读了一些有关能够获取最新补丁程序的文章,但是 这对我来说没有太大意义,因为预建的二进制文件 在完成一些测试之后也将拥有补丁。你理想 不想获取未经测试的源代码并进行构建和 用它。我在论据中遗漏了什么吗?
  2. 如果Python已为debian:stretch预先构建了二进制文件,那么在我的情况下,我为什么要 宁愿从源代码构建而不是预先构建的二进制文件?

谢谢!

2 个答案:

答案 0 :(得分:2)

  

有人告诉我,最好安装从源代码构建的Python版本,而不是安装预构建的二进制文件。

没有限定条件的建议,那不是很有意义的建议。有两种方法都可以使用,因此我将列出它们。

使用系统软件包的原因:

  • 自动系统更新将以标准方式处理紧急更新和安全补丁-您可以节省大量时间

  • 您可以相当有把握地以一致的方式编译和分发所有内容,而不会破坏依赖给定版本(例如3.5)的应用程序

  • 不管理自己的编译可为您节省开发和构建/发布过程中的时间

  • 您不必使用自定义流程来跟踪上游发布的点

需要自己进行编译:

  • 如果您要依赖上游不附带的特定补丁程序

  • 如果您需要使用发行版中未发布的新版本

通常,除非您能具体说明从源代码进行编译所能获得的收益,否则请了解您将在以后的每个发行版中做到这一点,并希望定义如何实现自动化以及谁将进行工作/维护-我看不出这样做的理由。

答案 1 :(得分:0)

除了@viraptor对于在系统上进行安装的出色建议之外,容器化还增加了一些改变方程式的东西。

对于任何容器,自己构建即可确保对其中的内容有更多的了解,这通常意味着更安全的容器。通常,使用最少的高山容器(或将应用程序移植到它们)通常也非常容易,这意味着首先存在的安全孔表面积较小,并且物理上较小,这意味着较少的本地维护和较低的托管成本。

Python可以轻松地在高山上构建,甚至有official containers由Docker公司维护,其源代码可以分叉来构建自己的。如果将其配置为Dockerhub,甚至可以从GitHub存储库为您构建它。