vagrant puppet 在下载包时卡住了
vagrant puppet is stuck when downloading package
试图让 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 还很陌生,所以如果我有什么新东西,请告诉我。谢谢。
您可能应该使用 this module 来处理 Python 和所有相关内容的安装。 Puppet 中的 Exec 登录可能非常困难,因此让一些完善的模块来处理它几乎总是更好。
这个简单的资源可以确保 pip 将在您的路径中安装并可用。
class { 'python' :
version => 'system',
pip => 'present',
dev => 'absent',
virtualenv => 'absent',
gunicorn => 'absent',
}
由于我链接的 Puppet 模块,您甚至可以告诉 Puppet 在某些目录中创建 virtualenv 和 运行 pip install -r requirements
。
如果您不想使用外部模块,我建议您登录 Vagrant 机器并仔细检查 pip 是否已安装且可用。您可以 运行 which pip
查看您需要指定用于 运行 pip in exec 资源的确切路径。
这是我最终解决所有问题的方法:
新代码:
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 标志,我认为这意味着在安装它的任何地方升级。这解决了问题。
试图让 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 还很陌生,所以如果我有什么新东西,请告诉我。谢谢。
您可能应该使用 this module 来处理 Python 和所有相关内容的安装。 Puppet 中的 Exec 登录可能非常困难,因此让一些完善的模块来处理它几乎总是更好。
这个简单的资源可以确保 pip 将在您的路径中安装并可用。
class { 'python' :
version => 'system',
pip => 'present',
dev => 'absent',
virtualenv => 'absent',
gunicorn => 'absent',
}
由于我链接的 Puppet 模块,您甚至可以告诉 Puppet 在某些目录中创建 virtualenv 和 运行 pip install -r requirements
。
如果您不想使用外部模块,我建议您登录 Vagrant 机器并仔细检查 pip 是否已安装且可用。您可以 运行 which pip
查看您需要指定用于 运行 pip in exec 资源的确切路径。
这是我最终解决所有问题的方法:
新代码:
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 标志,我认为这意味着在安装它的任何地方升级。这解决了问题。