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

对于Linux平台,为什么要从源代码而不是预构建的二进制文件构建Python?,python,linux,Python,Linux,我正在创建一个基于buildpack-deps:stretch的docker映像。我被告知,最好安装从源代码构建的Python版本,而不是安装预构建的二进制文件 问题:为什么首选从源代码构建Python 我读过一些文章,谈到能够获得最新的补丁等,但是 这对我来说没有多大意义,因为预构建的二进制文件 在完成一些测试后也会有补丁。你最好 不希望接受未经测试的源代码,并进行编译 使用它。我在辩论中遗漏了什么吗 如果Python为debian:stretch预先构建了二进制文件,那么在我的场景中,我为什

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

问题:为什么首选从源代码构建Python

  • 我读过一些文章,谈到能够获得最新的补丁等,但是 这对我来说没有多大意义,因为预构建的二进制文件 在完成一些测试后也会有补丁。你最好 不希望接受未经测试的源代码,并进行编译 使用它。我在辩论中遗漏了什么吗
  • 如果Python为
    debian:stretch
    预先构建了二进制文件,那么在我的场景中,我为什么要这样做呢 您更喜欢从源代码而不是预构建的二进制文件进行构建吗
  • 提前谢谢

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

    如果没有条件说明原因,这不是一个非常有意义的建议。这两种方法都有理由,所以我将列出它们

    使用系统包的原因:

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

    • 您可以相当有信心,在不破坏依赖给定版本(例如3.5)的应用程序的情况下,以一致的方式编译和分发所有内容

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

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

    自己编译的理由:

    • 如果您希望依赖上游未包含的特定修补程序

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


    一般来说,除非您能明确说明从源代码处编译将获得什么,否则请理解您承诺在未来的每个版本中都这样做,希望能定义您将如何实现自动化,以及由谁来做工作/维护-我看不出有什么理由这样做。

    除了@viraptor关于系统安装的优秀建议外,集装箱化还增加了一些东西,稍微改变了等式

    对于任何容器来说,自己构建它可以确保更多地了解其中的内容,这通常意味着一个更安全的容器。通常情况下,使用最小的alpine容器(或将应用程序移植到容器中)也非常容易,这意味着安全漏洞的表面积减少,而且它们的物理尺寸更小,这意味着本地维护更少,托管成本更低


    Python可以很容易地在阿尔卑斯山上构建,甚至还有Docker公司维护的,其源代码可以分叉来构建您自己的。Dockerhub甚至会在GitHub存储库中为您构建它,如果您将其配置为。

    我能知道您在这里尝试实现什么吗?你有没有遵循任何指导方针?我更喜欢稳定的版本,而不是从源代码构建,但这取决于您想要实现的功能/需求