Не удалось загрузить setuid_drv: драйвер скомпилирован с неправильной версией erl_driver.h при запуске Yaws

Я установил последнюю версию Erlang и последнюю версию Yaws из ветки master. Но когда я пытаюсь запустить yaws, я получаю сообщение об ошибке «Драйвер, скомпилированный с неправильной версией erl_driver.h». Как это исправить? Разве Yaws не работает в последнем выпуске Erlang? Я запускаю его в Mac OS X 10.6.

jonas$ yaws
Erlang R15B01 (erts-5.9.1) [source] [smp:2:2] [async-threads:0] [hipe] [kernel-poll:true]

Eshell V5.9.1  (abort with ^G)
1> 
=ERROR REPORT==== 18-Jun-2012::00:43:08 ===
Failed to load setuid_drv (from "/usr/local/lib/yaws/priv/lib") : "Driver compiled with incorrect version of erl_driver.h"
=ERROR REPORT==== 18-Jun-2012::00:43:08 ===
FATAL {'EXIT',normal}

=INFO REPORT==== 18-Jun-2012::00:43:08 ===
    application: yaws
    exited: {shutdown,{yaws_app,start,[normal,[]]}}
    type: permanent
{"Kernel pid terminated",application_controller,"{application_start_failure,yaws,{shutdown,{yaws_app,start,[normal,[]]}}}"}

Crash dump was written to: erl_crash.dump
Kernel pid terminated (application_controller) ({application_start_failure,yaws,{shutdown,{yaws_app,start,[normal,[]]}}})

person Jonas    schedule 17.06.2012    source источник


Ответы (2)


Я успешно запускаю последнюю версию Yaws от github master на OS X 10.7.4 под Erlang R15B01, она определенно работает:

$ uname -a
Darwin bcc 11.4.0 Darwin Kernel Version 11.4.0: Mon Apr  9 19:32:15 PDT 2012; root:xnu-1699.26.8~1/RELEASE_X86_64 x86_64
$ yaws -i
Erlang R15B01 (erts-5.9.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:true]

Eshell V5.9.1  (abort with ^G)
1> 
=INFO REPORT==== 18-Jun-2012::10:01:33 ===
Yaws: Using config file /usr/local/etc/yaws/yaws.conf

Есть ли шанс, что вы скомпилировали свои исходные коды Yaws в прошлом с предыдущей версией Erlang (R14Bxx или старше), а затем попытались снова собрать под R15B01, не выполнив предварительно «очистку»? Интерфейс драйвера Erlang изменился между версиями 14 и 15, что может объяснить эту ошибку.

person Steve Vinoski    schedule 18.06.2012
comment
Я попытался скачать и скомпилировать его снова, теперь он работает. Я не знаю, что пошло не так в прошлый раз. Спасибо. - person Jonas; 18.06.2012

Обновление: этот ответ больше не должен быть ответом. Он здесь только для того, чтобы доказать собственную несостоятельность.


Последняя версия (окончательная версия) Yaws должна успешно работать с последним дистрибутивом Erlang на OSX. Попробуйте загрузить исходный код Yaws с http://yaws.hyber.org/download/, а не из ветки master с GitHub. Основная ветвь Yaws может быть немного экспериментальной.

person Ning    schedule 18.06.2012
comment
Последняя версия Yaws (1.92) очень старая, и основная ветка содержит некоторые исправления, которые мне нужны. Например, Как обработать закрытие WebSocket от клиента в Yaws? - person Jonas; 18.06.2012
comment
Я являюсь коммиттером проекта Yaws и могу с уверенностью сказать, что главная ветка Yaws стабильна и никогда не предназначена для экспериментов. - person Steve Vinoski; 18.06.2012
comment
@SteveVinoski Спасибо за исправление. Ваш комментарий делает мой ответ бесполезным. Я собирался удалить его для чистоты SO, но понял, что у других людей также могут быть неправильные предположения, как и у меня, и я все равно решил сохранить свой бесполезный ответ. Спасибо еще раз. - person Ning; 18.06.2012