Назад | Перейти на главную страницу

Повар застывает на бродячей коробке сентос

Имею коробку centos-6.5. Как ни странно, он зависает, когда я пытаюсь запросить его у шеф-повара.

Вот пример того, что происходит, когда я пытаюсь 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"

Я обнаружил, что способ добавления репозитория 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"

Попробуйте отключить:

config.ssh.pty

вариант из вашего Vagrantfile. Обычно это частая причина таких зависаний.

В Vagrant docs для config.ssh.pty мы можем прочитать это:

Этот параметр является дополнительной функцией, которую не следует включать без крайней необходимости. Он нарушает некоторые другие функции Vagrant и действительно доступен только в тех случаях, когда это абсолютно необходимо. Если вы можете найти способ не использовать pty, рекомендуется это сделать.

Поскольку у меня была аналогичная проблема с apt-get.


Устранение неполадок бродячих зависаний

  • в 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, затем сравните с инструментом сравнения

  • в Unix / OS X запустить: sudo dtruss -fn ruby (или vagrant), в Linux используйте strace/ltrace отладить процесс
  • видеть: Проверьте, почему зависает скрипт ruby для получения дополнительных предложений