我正在创建一个基于buildpack-deps:stretch
的docker镜像。有人告诉我,最好安装从源代码构建的Python版本,而不是安装预构建的二进制文件。
问题:为什么偏爱从源代码构建Python?
debian:stretch
预先构建了二进制文件,那么在我的情况下,我为什么要
宁愿从源代码构建而不是预先构建的二进制文件?谢谢!
答案 0 :(得分:2)
有人告诉我,最好安装从源代码构建的Python版本,而不是安装预构建的二进制文件。
没有限定条件的建议,那不是很有意义的建议。有两种方法都可以使用,因此我将列出它们。
使用系统软件包的原因:
自动系统更新将以标准方式处理紧急更新和安全补丁-您可以节省大量时间
您可以相当有把握地以一致的方式编译和分发所有内容,而不会破坏依赖给定版本(例如3.5)的应用程序
不管理自己的编译可为您节省开发和构建/发布过程中的时间
您不必使用自定义流程来跟踪上游发布的点
需要自己进行编译:
如果您要依赖上游不附带的特定补丁程序
如果您需要使用发行版中未发布的新版本
通常,除非您能具体说明从源代码进行编译所能获得的收益,否则请了解您将在以后的每个发行版中做到这一点,并希望定义如何实现自动化以及谁将进行工作/维护-我看不出这样做的理由。
答案 1 :(得分:0)
除了@viraptor对于在系统上进行安装的出色建议之外,容器化还增加了一些改变方程式的东西。
对于任何容器,自己构建即可确保对其中的内容有更多的了解,这通常意味着更安全的容器。通常,使用最少的高山容器(或将应用程序移植到它们)通常也非常容易,这意味着首先存在的安全孔表面积较小,并且物理上较小,这意味着较少的本地维护和较低的托管成本。
Python可以轻松地在高山上构建,甚至有official containers由Docker公司维护,其源代码可以分叉来构建自己的。如果将其配置为Dockerhub,甚至可以从GitHub存储库为您构建它。