Настройка Erlang и Yaws на MacOS X

Я пытаюсь запустить Yaws 1.94 на своем Mac OS X 10.8, и он падает. У меня Эрланг R15B01.

Я использую macports для установки с помощью команд:

sudo port selfupdate

sudo port install erlang +ssl yaws

export ERL_LIBS=/opt/local/lib/yaws/

sudo mkdir /etc/yaws/

sudo cp /opt/local/etc/yaws/yaws.conf.template /etc/yaws/yaws.conf

Когда я запускаю рыскание, он падает

$ sudo yaws -i --conf /etc/yaws/yaws.conf 

Erlang R15B01 (erts-5.9.1) [источник] [64-бит] [smp:4:4] [async-threads:0] [hipe] [kernel-poll:true]

Eshell V5.9.1  (abort with ^G)
1> 
=INFO REPORT==== 25-Jul-2012::16:36:20 ===
Yaws: Using config file /etc/yaws/yaws.conf

=INFO REPORT==== 25-Jul-2012::16:36:20 ===
yaws debug:Add path "/opt/local/var/yaws/ebin"

=INFO REPORT==== 25-Jul-2012::16:36:20 ===
yaws debug:Add path "/opt/local/lib/yaws/ebin"

=INFO REPORT==== 25-Jul-2012::16:36:20 ===
yaws debug:Add path "/opt/local/lib/yaws/examples/ebin"

=INFO REPORT==== 25-Jul-2012::16:36:20 ===
yaws debug:Running with id="default" (localinstall=false) 
Running with debug checks turned on (slower server) 
 to directory "/opt/local/var/log/yaws"

=INFO REPORT==== 25-Jul-2012::16:36:20 ===
    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,[]]}}})

Как результат

Когда я проверяю, есть ли вокруг процесс yaws (ps -efw | grep yaws), и его нет

Что мне здесь не хватает? Я хотел бы иметь возможность использовать Yaws в Mac OS X. Спасибо.

Вот вывод из sasl

$ sudo yaws -i --conf /etc/yaws/yaws.conf --erlarg '-boot start_sasl'
Erlang R15B01 (erts-5.9.1) [source] [64-bit] [smp:4:4] [async-threads:0] [hipe] [kernel-poll:true]


=PROGRESS REPORT==== 26-Jul-2012::15:41:44 ===
      supervisor: {local,sasl_safe_sup}
         started: [{pid,<0.34.0>},
                   {name,alarm_handler},
                   {mfargs,{alarm_handler,start_link,[]}},
                   {restart_type,permanent},
                   {shutdown,2000},
                   {child_type,worker}]

=PROGRESS REPORT==== 26-Jul-2012::15:41:44 ===
      supervisor: {local,sasl_safe_sup}
         started: [{pid,<0.35.0>},
                   {name,overload},
                   {mfargs,{overload,start_link,[]}},
                   {restart_type,permanent},
                   {shutdown,2000},
                   {child_type,worker}]

=PROGRESS REPORT==== 26-Jul-2012::15:41:44 ===
      supervisor: {local,sasl_sup}
         started: [{pid,<0.33.0>},
                   {name,sasl_safe_sup},
                   {mfargs,
                       {supervisor,start_link,
                           [{local,sasl_safe_sup},sasl,safe]}},
                   {restart_type,permanent},
                   {shutdown,infinity},
                   {child_type,supervisor}]

=PROGRESS REPORT==== 26-Jul-2012::15:41:44 ===
      supervisor: {local,sasl_sup}
         started: [{pid,<0.36.0>},
                   {name,release_handler},
                   {mfargs,{release_handler,start_link,[]}},
                   {restart_type,permanent},
                   {shutdown,2000},
                   {child_type,worker}]

=PROGRESS REPORT==== 26-Jul-2012::15:41:44 ===
     application: sasl
      started_at: nonode@nohost

=PROGRESS REPORT==== 26-Jul-2012::15:41:44 ===
      supervisor: {local,yaws_sup}
         started: [{pid,<0.43.0>},
                   {name,yaws_log},
                   {mfargs,{yaws_log,start_link,[]}},
                   {restart_type,permanent},
                   {shutdown,5000},
                   {child_type,worker}]

=PROGRESS REPORT==== 26-Jul-2012::15:41:44 ===
      supervisor: {local,yaws_sup}
         started: [{pid,<0.44.0>},
                   {name,yaws_trace},
                   {mfargs,{yaws_trace,start_link,[]}},
                   {restart_type,permanent},
                   {shutdown,5000},
                   {child_type,worker}]
Eshell V5.9.1  (abort with ^G)
1> 
=INFO REPORT==== 26-Jul-2012::15:41:44 ===
Yaws: Using config file /etc/yaws/yaws.conf

=INFO REPORT==== 26-Jul-2012::15:41:44 ===
yaws debug:Add path "/opt/local/var/yaws/ebin"

=INFO REPORT==== 26-Jul-2012::15:41:44 ===
yaws debug:Add path "/opt/local/lib/yaws/ebin"

=INFO REPORT==== 26-Jul-2012::15:41:44 ===
yaws debug:Add path "/opt/local/lib/yaws/examples/ebin"

=INFO REPORT==== 26-Jul-2012::15:41:44 ===
yaws debug:Running with id="default" (localinstall=false) 
Running with debug checks turned on (slower server) 
Logging to directory "/opt/local/var/log/yaws"

=CRASH REPORT==== 26-Jul-2012::15:41:44 ===
crasher:
initial call: yaws_server:init/1
pid: <0.45.0>
registered_name: []
exception exit: {{badmatch,{error,enotdir}},
                 [{yaws_server,setup_dirs,1,
                               [{file,"yaws_server.erl"},{line,525}]},
                  {yaws_server,init2,5,
                               [{file,"yaws_server.erl"},{line,200}]},
                  {gen_server,init_it,6,
                              [{file,"gen_server.erl"},{line,304}]},
                  {proc_lib,init_p_do_apply,3,
                            [{file,"proc_lib.erl"},{line,227}]}]}
  in function  gen_server:init_it/6 (gen_server.erl, line 328)
ancestors: [yaws_sup,<0.41.0>]
messages: []
links: [<0.42.0>]
dictionary: [{start_time,{{2012,7,26},{15,41,44}}},
              {gc,{gconf,"/opt/local/lib/yaws",false,102,
                         "/opt/local/var/log/yaws",
                         ["/opt/local/var/yaws/ebin",
                          "/opt/local/lib/yaws/ebin",
                          "/opt/local/lib/yaws/examples/ebin"],
                         [],30000,nolimit,400,1000000,8000,nolimit,[],
                         10240,[],1000000,0,
                         ["/opt/local/lib/yaws/include",
                          "/opt/local/lib/yaws/examples/include"],
                         "/usr/bin/php-cgi","Yaws 1.94","default",false,
                         [],yaws_session_server,8}}]
trap_exit: true
status: running
heap_size: 2584
stack_size: 24
reductions: 40977
neighbours:

=SUPERVISOR REPORT==== 26-Jul-2012::15:41:44 ===
 Supervisor: {local,yaws_sup}
 Context:    start_error
 Reason:     {{badmatch,{error,enotdir}},
              [{yaws_server,setup_dirs,1,
                            [{file,"yaws_server.erl"},{line,525}]},
               {yaws_server,init2,5,[{file,"yaws_server.erl"},{line,200}]},
               {gen_server,init_it,6,[{file,"gen_server.erl"},{line,304}]},
               {proc_lib,init_p_do_apply,3,
                         [{file,"proc_lib.erl"},{line,227}]}]}
 Offender:   [{pid,undefined},
              {name,yaws_server},
              {mfargs,
                  {yaws_server,start_link,
                      [{env,true,false,false,
                           {file,"/etc/yaws/yaws.conf"},
                           false,false,"default"}]}},
              {restart_type,permanent},
              {shutdown,120000},
              {child_type,worker}]


=INFO REPORT==== 26-Jul-2012::15:41:44 ===
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 bibekp    schedule 25.07.2012    source источник


Ответы (2)


Я не уверен в происхождении или жизнеспособности сборок Erlang и Yaws, которые можно получить через macports, поэтому я понятия не имею, работают ли они на самом деле или нет. Лично я не пользуюсь макпортом из-за проблем с другим софтом, который оттуда взял.

Чтобы попытаться получить больше информации о том, что происходит с вашей установкой Yaws, запустите Yaws следующим образом:

sudo yaws -i --conf /etc/yaws/yaws.conf --erlarg '-boot start_sasl'

Надеюсь, sasl сможет дать нам больше информации об основных проблемах.

person Steve Vinoski    schedule 26.07.2012
comment
Я добавил вывод sasl к исходному тикету. Я могу просто отказаться от macports для этого тогда. Спасибо за быстрый ответ - person bibekp; 27.07.2012
comment
Пробовал запускать рыскания с помощью версии из git, то есть: git clone git://github.com/klacke/yaws.git а потом autoconf ./configure make && sudo make install. Когда я запустил рыскание, используя sudo /usr/local/bin/yaws -i --conf /etc/yaws/yaws.conf --erlarg '-boot start_sasl', я получил те же результаты, что и выше (сбой). Не уверен, что не так. - person bibekp; 27.07.2012
comment
О, я забыл, наверное, стоит переустановить erlang тоже - person bibekp; 27.07.2012
comment
Хорошо, переустановил erlang из http://www.erlang.org/download.html и снова переустановил yaws из клона git. Получение тех же результатов. Ржу не могу. (Единственное, что я могу придумать, это правильный двоичный файл yaws в /opt/local/bin/yaws? Это результат выполнения which yaws) - person bibekp; 27.07.2012
comment
Вы можете проверить, какое значение имеет переменная среды HOME для пользователя root. Судя по выходным данным sasl, у Yaws возникли проблемы с каталогом, в котором он хранит определенные управляющие файлы; они обычно хранятся в подкаталогах внутри $HOME/.yaws. - person Steve Vinoski; 27.07.2012

глядя на ошибку в сообщении о сбое exception exit: {badmatch,{error,enotdir}} . Похоже, что yaws ожидал каталог где-то и нашел что-то еще. предлагаю посмотреть строку 525 в файле yaws_server.erl. вы даже можете поставить io:format/2 и посмотреть, что рыскает в этот момент. Это может быть неправильно отформатированное имя каталога, возможно, содержащее пробелы. Вы также можете попробовать проверить файл conf, который он использует для запуска, и посмотреть на PATHS, который сервер хочет использовать в качестве docroot. Кроме того, проверьте права доступа к каталогу установки yaws и всем Directories, которые yaws хочет изучить.

person Muzaaya Joshua    schedule 27.07.2012