我有一个 centos-6.5 盒子。奇怪的是,当我尝试请求 chef 提供它时,它冻结了。
vagrant provision --debug
以下是我尝试时发生的情况
[2014-10-10T20:33:33+00:00] INFO: Processing remote_file[/etc/yum.repos.d/devtools.repo] action create (vidya_client::default line 7)
DEBUG ssh: stdout: [2014-10-10T20:33:34+00:00] INFO: Processing yum_package[devtoolset-1.0-gcc-c++.x86_64] action install (vidya_client::default line 15)
INFO interface: info: [2014-10-10T20:33:34+00:00] INFO: Processing yum_package[devtoolset-1.0-gcc-c++.x86_64] action install (vidya_client::default line 15)
[2014-10-10T20:33:34+00:00] INFO: Processing yum_package[devtoolset-1.0-gcc-c++.x86_64] action install (vidya_client::default line 15)
DEBUG ssh: stdout: [2014-10-10T20:33:34+00:00] INFO: yum_package[devtoolset-1.0-gcc-c++.x86_64] installing devtoolset-1.0-gcc-c++-4.7.0-5.3.el6.x86_64 from testing-devtools-6 repository
INFO interface: info: [2014-10-10T20:33:34+00:00] INFO: yum_package[devtoolset-1.0-gcc-c++.x86_64] installing devtoolset-1.0-gcc-c++-4.7.0-5.3.el6.x86_64 from testing-devtools-6 repository
[2014-10-10T20:33:34+00:00] INFO: yum_package[devtoolset-1.0-gcc-c++.x86_64] installing devtoolset-1.0-gcc-c++-4.7.0-5.3.el6.x86_64 from testing-devtools-6 repository
DEBUG ssh: Sending SSH keep-alive...
DEBUG ssh: Sending SSH keep-alive...
DEBUG ssh: Sending SSH keep-alive...
DEBUG ssh: Sending SSH keep-alive...
DEBUG ssh: Sending SSH keep-alive...
DEBUG ssh: Sending SSH keep-alive...
DEBUG ssh: Sending SSH keep-alive...
DEBUG ssh: Sending SSH keep-alive...
并且永远持续下去。
我的食谱很简单。
yum_package "wget"
yum_package "gcc-c++.x86_64"
yum_package "openssl-devel.x86_64"
yum_package "libcurl-devel.x86_64"
yum_package "httpd"
remote_file "/etc/yum.repos.d/devtools.repo" do
source "http://people.centos.org/tru/devtools/devtools.repo"
end
yum_package "devtoolset-1.0-gcc-c++.x86_64"
答案1
我发现我添加 devtools 存储库的方式是错误的。通过导入美味食谱并执行以下更改,一切顺利。
yum_repository 'testing-devtools' do
baseurl 'http://people.centos.org/tru/devtools/$releasever/$basearch/RPMS'
description 'testing devtools for CentOS $releasever'
gpgcheck false
action :create
end
yum_package "devtoolset-1.0-gcc-c++.x86_64"
答案2
尝试禁用:
config.ssh.pty
选项Vagrantfile
。通常这是此类挂起的常见原因。
在 Vagrant 文档中配置.ssh.pty我们可以读到:
此设置是一项高级功能,除非绝对必要,否则不应启用。它会破坏 Vagrant 的一些其他功能,并且实际上仅在绝对必要的情况下才会公开。如果您能找到不使用 pty 的方法,则建议改用 pty。
因为我有类似的问题apt-get。
解决 vagrant 挂起问题
- 在 Unix/OS X 上,你可以按Ctrl+T检查进程状态(为什么要处理)
运行(
lldb
如果需要请安装):echo "call (void)rb_backtrace()" | lldb -p $(pgrep -fn ruby)
在前台打印 Ruby 回溯(你
gdb
也可以使用)执行日志记录,例如:
vagrant --debug up 2> frozen.log
并将工作配置记录到works.log
,然后使用 diff 工具进行比较- 在 Unix/OS X 上运行:
sudo dtruss -fn ruby
(或vagrant
),在 Linux 上使用strace
/ltrace
来调试进程 - 看:检查 ruby 脚本挂起的原因更多建议