【问题标题】:pip install wheel package using Chef on AWS EC2 instance ( CentOS 6.5 )在 AWS EC2 实例(CentOS 6.5)上使用 Chef pip install wheel 包
【发布时间】:2016-11-01 17:17:16
【问题描述】:

环境:CentOS 6.5、Python 2.7 (Anaconda)、Chef (10.26)

  • 我需要引导一台只有 root 用户的机器。 在主厨运行列表中,首先创建 ec2-user,然后运行所有配方,包括安装 Anaconda
  • 我的要求是使用pip 以ec2-user 身份安装Python“wheel”包。我在我的食谱中尝试了以下 sn-p:

    python_pip "wheel" do
      user "ec2-user"
      group "ec2-user"
      action :install
    end
    

上面的说法失败了

用于构建的临时文件夹 (/tmp/pip-build-root) 不属于您的用户!

请注意,我按照我的用例要求以 root 身份运行 chef-client。不知道是否可以这样做。

  • 我还尝试了以下 sn-p 作为解决方法,但没有成功:

    execute "installing wheel" do
      command <<-EOH
      su - ec2-user
      pip install wheel
      EOH
    end
    

通过这个它以root用户身份安装在默认python中。

谁能帮我解决这个问题?我需要使用 Chef 以 ec2 用户身份安装轮子。

【问题讨论】:

    标签: python amazon-ec2 pip chef-infra


    【解决方案1】:

    您需要以对 Python 安装具有写入权限的用户身份安装 Python 包。对于系统范围的安装(这里就是这种情况,因为您没有指定 venv),这几乎肯定会是 root。为什么你认为你想以非 root 用户身份安装?

    除此之外,wheel 包仅用于构建 Wheel 档案而不是安装它们。如果轮子可从 PyPI 或通过指定的轮子文件夹获得,则轮子将由 pip 自动使用。

    基本上你不需要做这件事的任何部分。

    【讨论】:

    • 我们需要为一些包创建轮子。你的意思是不做pip install wheel,我们还是可以用的。因为我必须在需要轮子的其他机器上进行 pip install wheel 来构建它。
    • 通常您会在工作站或 CI 服务器上构建轮子,而不是作为引导程序的一部分。也就是说,只需删除 user 行,它应该可以正确安装。
    猜你喜欢
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    相关资源
    最近更新 更多