【问题标题】:vagrant puppet is stuck when downloading packagevagrant puppet 下载包时卡住了
【发布时间】:2017-03-07 22:13:43
【问题描述】:

试图让 vagrant 运行我的测试环境,但是当我尝试启动时出现此错误:

==> default: Running provisioner: puppet...
==> default: Running Puppet with base.pp...
==> default: notice: Scope(Class[Sandbox]): Setting up sandbox box
==> default: notice: /Stage[main]//Exec[update_apt]/returns: executed successfully
==> default: notice: /Stage[main]/sandbox/Package[http://pypi.python.org/packages/source/h/hurry.filesize/hurry.filesize-0.9.tar.gz]/ensure: created
==> default: err: /Stage[main]/sandbox/Exec[update_pip]/returns: change from notrun to 0 failed: Could not find command '/usr/bin/pip'
==> default: err: /Stage[main]/sandbox/Exec[update_python_packages]/returns: change from notrun to 0 failed: Could not find command '/usr/bin/pip'
==> default: notice: Finished catalog run in 5.94 seconds

现在我认为主要问题在这里:

==> default: err: /Stage[main]/sandbox/Exec[update_pip]/returns: change from notrun to 0 failed: Could not find command '/usr/bin/pip'
==> default: err: /Stage[main]/sandbox/Exec[update_python_packages]/returns: change from notrun to 0 failed: Could not find command '/usr/bin/pip'

我将其追溯到我的 base.pp 文件。我认为问题出在这里。

 95   exec { "update_pip":
 96     command => "/usr/bin/pip install --upgrade pip",
 97   }
 98 
 99   exec { "update_python_packages":
100     command => "/usr/bin/pip install -r /vagrant/requirements.txt",
101   }

如果 pip 说我不能使用“/usr/bin/pip..”,我该如何安装?

我对 vagrant 还很陌生,所以如果我有任何问题,请告诉我。谢谢。

【问题讨论】:

  • 如何安装python?
  • 你用的是什么 Vagrant 图片?
  • @FrédéricHenri 是的,它已安装
  • @MattSchuchard 最新 1.92
  • 安装好了,但是怎么样?你是使用 exec 命令安装自己还是使用 puppet 模式

标签: python-2.7 vagrant pip puppet


【解决方案1】:

您可能应该使用this module 来处理Python 和所有相关内容的安装。在 Puppet 中执行登录可能非常困难,因此让一些完善的模块来处理它几乎总是更好。

这个简单的资源可以确保 pip 将在您的路径中安装并可用。

class { 'python' :
  version    => 'system',
  pip        => 'present',
  dev        => 'absent',
  virtualenv => 'absent',
  gunicorn   => 'absent',

}

借助我链接的 Puppet 模块,您甚至可以告诉 Puppet 创建 virtualenv 并在某个目录中运行 pip install -r requirements

如果您不想使用外部模块,我建议您登录 Vagrant 机器并仔细检查 pip 是否已安装且可用。您可以运行 which pip 来查看您需要指定用于在 exec 资源中运行 pip 的确切路径。

【讨论】:

    【解决方案2】:

    这是我最终解决所有问题的方式:

    新代码:

     90   exec { "update_pip":
     91     command => "/usr/bin/env pip install --upgrade pip",
     92   }
     93   exec { "update_python_packages":
     94     command => "/usr/bin/env pip install -r /vagrant/requirements.txt",
     95   }
    

    原始代码

     98
     99 #  exec { "update_pip":
    100 #    command => "/usr/bin/pip install --upgrade pip",
    101 #  }
    102 #
    103 #  exec { "update_python_packages":
    104 #    command => "/usr/bin/pip install -r /vagrant/requirements.txt",
    105 #  }
    

    我注意到发生的事情是它找不到 /usr/bin/pip 所以我使用了 env 标志,我认为这意味着无论安装在哪里都可以升级。这样就解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 2014-04-29
      • 2022-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多