使用Poise安装的Python/Ruby的正确方法

2024-05-13 23:23:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我们正在尝试使用pose来管理Centos7服务器上PythonRuby的运行时。据我所知,这适用于其他配方,但我不知道什么是将二进制文件链接到标准bin位置(/usr/bin/,等等)的“正确”方法。到目前为止,我还没有找到一种方法来作为标准流程的一部分来实现这一点——只是四处挖掘,找出它们的安装位置,然后在以后的食谱中添加这些链接作为一个单独的步骤——这似乎是一个重大的黑客攻击。你知道吗

换言之,将以下内容添加到包含一些脚本的配方中,这些脚本被复制到需要Python 3的服务器上,看起来就像安装了Python 3:

python_runtime '3'

但是脚本(不能更改)永远不会知道python3的存在。你知道吗

如果我只是使用yum安装Python3,显然一切都很正常,而poise在Centos上似乎也做得很好。你知道吗

我对厨师还比较陌生,但是我已经和我们的其他devops团队成员核实过了,并且做了很多搜索,我们不知道官方应该怎么做。我们不寻找更多的黑客,因为我们显然可以做到这一点,但什么是“厨师”的方式来做到这一点?你知道吗

提前谢谢。你知道吗


Tags: 文件方法服务器脚本标准bin链接usr
1条回答
网友
1楼 · 发布于 2024-05-13 23:23:54

不幸的是,仅仅链接二进制文件并不能真正帮助您,因为在CentOS上,默认情况下,它将使用需要一些特殊环境变量才能操作的SCL包。如果您想让它使用“正常”系统,您可以这样做:

python_runtime '3' do
  provider :system
end

但是,这可能会失败,因为没有用于python3的EL7发行版包。如果您想继续使用SCL包,但让它们看起来像普通的二进制文件,可以尝试以下操作:

file '/usr/local/bin/python' do # or .../python3 if you prefer
  owner 'root'
  group 'root'
  mode '755'
  content "#!/bin/sh\nexec scl enable rh-python35   python3 \"$@\""
end

或者类似的。这仍然是硬线的事实,它是在引擎盖下的SCL和哪个SCL包正在使用,这是不可爱的,但完全通用的形式(虽然可行)要复杂得多。你知道吗

相关问题 更多 >