Erlang error?
<!-- lang: shell -->
Unable to load crypto library. Failed with error:
"load_failed, Failed to load NIF library: '/usr/local/erlang/R16B03-1/lib/erlang/lib/crypto-3.2/priv/lib/crypto.so: undefined symbol: EC_GROUP_new_curve_GF2m'"
OpenSSL might not be installed on this system.
make: *** [deps] Error 1
[root@lambda-laptop riak]# erl
。。
edit lib/crypto/c_src/crypto.c and change:
#if OPENSSL_VERSION_NUMBER >= 0x009080ffL \
&& !defined(OPENSSL_NO_EC) \
&& !defined(OPENSSL_NO_ECDH) \
&& !defined(OPENSSL_NO_ECDSA)
# define HAVE_EC
#endif
#if OPENSSL_VERSION_NUMBER >= 0x009080ffL \
&& !defined(OPENSSL_NO_EC) \
&& !defined(OPENSSL_NO_EC2M) \
&& !defined(OPENSSL_NO_ECDH) \
&& !defined(OPENSSL_NO_ECDSA)
# define HAVE_EC
#endif
http://erlang.org/pipermail/erlang-questions/2013-December/076327.html
진작에 이걸 봤으면 좋았을 텐데. 나도strace로 폴을 사용한 것을 발견했고,erlang의 분포식 노드 통신 방식을 알아냈다.
erlang 분포식 노드 통신, A 노드는 B 노드를 연결하고 같은 기계에서 프로세스 간 통신만 하면 노드를 찾을 수 있습니다.같은 기계에 있지 않고 A는 먼저 B가 있는 기계의 4369 포트를 연결하여 노드를 찾는다.찾으면 B 노드에게 포트를 감청하라고 통지하고 A에게 이 포트를 연결하라고 회답합니다.
4369 포트를 감청하는 것은 백엔드 프로세스 epmd입니다. linux에서 select를 사용합니다. 짧은 연결만 만듭니다.윈도우즈에는 epmd입니다.exe.linux에서 노드의 감청 포트는poll을 사용하고 +Ktrue 파라미터를 지정한 후에 epoll을 사용합니다. 당연히 컴파일이 필요할 때 스위치를 켜야 합니다.
각 노드는 하나의 포트만 감청할 수 있고 2개의 노드 간에 연결을 구축한 후에 노드 간의 임의의 방향의 통신은 모두 이 연결을 걷게 된다. 이런 통신 방식이 가장 합리적이다. 나도 이런 방식을 사용하고 싶다. 그러나 이런 방식은 통상적으로 비동기적인 조작으로 실현되기 때문에 비교적 복잡하기 때문에 줄곧 하지 않았다.
여러 노드 간에 따르는 규칙은 다음과 같다. 1. 각 노드는 하나의 포트만 감청한다.2. A 노드가 B 노드를 연결하고 아직 연결이 되지 않으면 A connect를 B로 연결한다.만약 B가 아직 감청 포트를 가지고 있지 않다면, 포트를 열어 감청한다.
이런 방식은 임의의 두 노드 사이의 연결을 끊고 다른 노드에 영향을 주지 않도록 보장할 수 있다. 왜냐하면 그것은 그물 모양의 연결을 사용하기 때문이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.