首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按要求从RPM中添加模块

按要求从RPM中添加模块
EN

Stack Overflow用户
提问于 2016-12-28 09:29:43
回答 3查看 1.5K关注 0票数 13

因此,我有这个项目,它有许多依赖项,这些依赖项都是从pip安装的,并且在requirements.txt中有文档记录,现在我需要添加另一个依赖项,这个依赖项现在不存在于pip上,并且在某些地址中作为RPM存在。什么是最毕达通的方式来安装它作为一个要求?谢谢!代码将在RHEL和Fedora上运行。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-31 00:24:43

在这种情况下,如果不能满足依赖,那么Pythonic要做的事情就是简单地失败。没关系,如果您的用户没有满足安装的先决条件,他们就会发现一个有用的错误。考虑大量带有C库依赖项的Python包,以便正确构建和安装。在您的项目中,仍然在"setup.py“和"requirements.txt”文件中声明所有的Python依赖项,但是Python打包工具链中没有任何东西可以为您安装RPM (也不应该!),所以如果没有安装RPM,就停止安装,让安装失败。

除此之外,您还可以考虑将Python应用程序本身打包为RPM。您有RPM依赖项,您的目标平台是Fedora/RHEL。通过将应用程序打包为RPM,您可以声明对其他RPM的依赖关系,这将自动安装这些所需的包。担心在RPM的构建阶段是Pythonic的,并使用RPM魔法来完成其余的工作。

我建议不要使用配置管理工具(木偶、Ansible等),因为它们会使您的构建过程过于复杂。这些工具对于它们的预期用途是很好的,但在这里,它就像用大炮拍苍蝇一样。

票数 7
EN

Stack Overflow用户

发布于 2016-12-30 10:53:58

管理这种依赖关系的传统方法是使用配置管理系统(如SaltStack )--我个人推荐使用它,因为它是用Python编写的,可以用Python模块进行扩展。其他选择包括木偶厨师可抗

使用配置管理系统,您可以声明要在目标操作系统上安装和配置的包、配置文件和服务。然后,运行代理并完成所有繁重工作:复制文件、安装RPM包和启用/禁用服务。其优点是巨大的:您的OS配置被描述为代码,您总是可以得到可预测的结果,并为以后的安装节省时间。

请注意,使用CM引入了相当陡峭的学习曲线。然而,当你把你的头绕在它周围的时候,你就再也不会用手做操作系统配置了。

更简单的方法可能是将必要的命令包装在bash脚本中,称为install_dependencies.sh。一个应该将这个脚本作为应用程序部署的一部分来运行,所以最好在某个地方记录这个过程。

票数 5
EN

Stack Overflow用户

发布于 2017-01-05 23:58:10

既然我们在讨论选择--我会提交一个还没讨论过的。

码头集装箱。

您可以使用所需的操作系统安装基本映像,然后Docker文件将安装所需的所有依赖项。它还可以pip安装要求。

这使服务器保持了不需要的任何安装,而且版本控制很容易,因为您将有一个新容器,它具有新的代码/依赖项,而不会与旧版本重叠。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41359091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档