NMOSのRDSサーバを立ててみる

仕事柄、SMPTE2110をちょっと触っているので、
NMOSもやらざるをえず。。。。

RDSサーバが必要なので自前で立ててみようかと。
検証でよく使われているそうなのでこれを使ってみます。
https://github.com/sony/nmos-cpp

Hyper-Vのクイック作成を使ってUbuntu20.04作ったので、
最小構成だとほかにもインストールしないといけないものがあるかもしれません。。。
(あたりまでだけど仮想スイッチでも問題ないです)

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.4 LTS
Release:        20.04
Codename:       focal

さて必要なものをざっくりインストールしていきます。

$ sudo  apt-get update
$ sudo apt-get install build-essential g++ libcpprest-dev libc6 libavahi-compat-libdnssd-dev libnss-mdns avahi-utils git

ドキュメントをみるとconanを使ったほうが楽そうなので・・・

$ sudo apt-get install pip
$ pip install conan

*注意*
conan2系だとcmake時に以下のようなエラーを吐きます。

ERROR: Error while parsing [options] in conanfile
Options should be specified as 'pkg:option=value'

その場合は、強制的に1系をインストールしてください。

$ pip install --force-reinstall -v "conan==1.59.0"

cmake 3.17以上を要求されるので、チェック。

$ cmake --version
cmake version 3.16

今回はcmakeが古いので新しいものを使わせてもらいます
https://apt.kitware.com/

$ wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
$ sudo  echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null
$ sudo  cat /etc/apt/sources.list.d/kitware.list
deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main
$
$ sudo  apt-get update
$ sudo  apt-get install cmake
$
$ cmake --version
cmake version 3.22.2

これでコンパイルできる環境ができたので
Gitからソースを持ってきます

$ git clone https://github.com/sony/nmos-cpp
$ cd nmos-cpp/Development/
$ mkdir build
$ cd build/

ここからエラーがでないことを祈ります。(DebugとReleaseの違いがよくわかってないです)

$ cmake .. -DCMAKE_BUILD_TYPE="Release"
$ make

うまくいったら、
nmos-cpp-registry
nmos-cpp-node
nmos-cpp-test
ができているはず

$ ls -l
total 696448
-rw-rw-r--  1 nmos nmos     20686  2月 21 21:29 CMakeCache.txt
drwxrwxr-x 14 nmos nmos      4096  2月 21 21:34 CMakeFiles
-rw-rw-r--  1 nmos nmos       363  2月 21 21:29 CTestTestfile.cmake
-rw-rw-r--  1 nmos nmos      8097  2月 21 21:29 FindBZip2.cmake
-rw-rw-r--  1 nmos nmos    205169  2月 21 21:29 FindBoost.cmake
-rw-rw-r--  1 nmos nmos     17662  2月 21 21:29 FindOpenSSL.cmake
-rw-rw-r--  1 nmos nmos      7670  2月 21 21:29 FindZLIB.cmake
-rw-rw-r--  1 nmos nmos     33616  2月 21 21:29 Findcpprestsdk.cmake
-rw-rw-r--  1 nmos nmos      8440  2月 21 21:29 Findlibbacktrace.cmake
-rw-rw-r--  1 nmos nmos      8377  2月 21 21:29 Findnlohmann_json.cmake
-rw-rw-r--  1 nmos nmos     10491  2月 21 21:29 Findnlohmann_json_schema_validator.cmake
-rw-rw-r--  1 nmos nmos      8887  2月 21 21:29 Findwebsocketpp.cmake
-rw-rw-r--  1 nmos nmos    485454  2月 21 21:29 Makefile
drwxrwxr-x  2 nmos nmos      4096  2月 21 21:29 cmake
-rw-rw-r--  1 nmos nmos     18130  2月 21 21:29 cmake_install.cmake
-rw-rw-r--  1 nmos nmos     36138  2月 21 21:28 conan.cmake
-rw-rw-r--  1 nmos nmos     14714  2月 21 21:29 conan.lock
-rw-rw-r--  1 nmos nmos    133733  2月 21 21:29 conanbuildinfo.cmake
-rw-rw-r--  1 nmos nmos     14467  2月 21 21:29 conanbuildinfo.txt
-rw-rw-r--  1 nmos nmos      4936  2月 21 21:29 conaninfo.txt
-rw-rw-r--  1 nmos nmos      6111  2月 21 21:29 graph_info.json
-rw-rw-r--  1 nmos nmos   5406934  2月 21 21:29 libmdns.a
-rw-rw-r--  1 nmos nmos 364172150  2月 21 21:33 libnmos-cpp.a
-rw-rw-r--  1 nmos nmos    730162  2月 21 21:29 libnmos_is04_schemas.a
-rw-rw-r--  1 nmos nmos    261604  2月 21 21:29 libnmos_is05_schemas.a
-rw-rw-r--  1 nmos nmos     95516  2月 21 21:29 libnmos_is08_schemas.a
-rw-rw-r--  1 nmos nmos     18480  2月 21 21:29 libnmos_is09_schemas.a
drwxrwxr-x  6 nmos nmos      4096  2月 21 21:29 nmos
-rwxrwxr-x  1 nmos nmos 150394504  2月 21 21:34 nmos-cpp-node
-rwxrwxr-x  1 nmos nmos 108489296  2月 21 21:34 nmos-cpp-registry
-rwxrwxr-x  1 nmos nmos  82435728  2月 21 21:34 nmos-cpp-test
-rw-rw-r--  1 nmos nmos       259  2月 21 21:29 nmos-cpp-test_include-98ee88c.cmake
-rw-rw-r--  1 nmos nmos     18886  2月 21 21:34 nmos-cpp-test_tests-98ee88c.cmake

ノードを起動する場合

$ ./nmos-cpp-node "{\"http_port\":1080}

RDSを起動する場合

$ ./nmos-cpp-registry "{\"http_port\":8080}"

このままインストールしたいなら

$ make install

jsonで設定ができるので以下を参考に。
https://github.com/sony/nmos-cpp/blob/master/Development/nmos-cpp-registry/config.json
https://github.com/sony/nmos-cpp/blob/master/Development/nmos-cpp-node/config.json

$ vi config.json
{
        "logging_level": 0,
        "domain": "rds.local",
        "http_port": 8080
}
$
$ ./nmos-cpp-registry config.json
2022-02-21 13:23:06.291: info: 140302025209344: Starting nmos-cpp registry
2022-02-21 13:23:06.291: info: 140302025209344: Process ID: 135622
2022-02-21 13:23:06.291: info: 140302025209344: Build settings: cpprestsdk/2.10.18 (listener=asio; client=asio); WebSocket++/0.8.2; Boost 1.78.0; OpenSSL 1.1.1m  14 Dec 2021
2022-02-21 13:23:06.291: info: 140302025209344: Initial settings: {"admin_port":8080,"domain":"rds.local","host_address":"10.255.1.7","host_addresses":["10.255.1.7"],"http_port":8080,"logging_level":0,"logging_port":8080,"mdns_port":8080,"node_port":8080,"query_port":8080,"registration_port":8080,"schemas_port":8080,"seed_id":"fc98eb7e-4af1-45e5-b697-12decb1b5c9e","settings_port":8080,"system_port":8080}

makeしたときにライブラリのリンクが見つからないときは、
CMakeFiles/HOGEHOGE.dir/link.txtを参照してみてください。
/lib/x86_64-linux-gnu/libstdc++.so.6」が見つからないみたいなエラーが出たら

$ cat CMakeFiles/nmos-cpp-registry.dir/link.txt
/usr/bin/gcc CMakeFiles/nmos-cpp-registry.dir/nmos-cpp-registry/main.cpp.o CMakeFiles/nmos-cpp-registry.dir/nmos-cpp-registry/registry_implementation.cpp.o -o nmos-cpp-registry /lib/x86_64-linux-gnu/libstdc++.so.6 libnmos-cpp.a libnmos_is04_schemas.a libnmos_is05_schemas.a libnmos_is08_schemas.a libnmos_is09_schemas.a libmdns.a /usr/lib/x86_64-linux-gnu/libdns_sd.so /usr/lib/x86_64-linux-gnu/libavahi-client.so /usr/lib/x86_64-linux-gnu/libavahi-common.so /usr/lib/x86_64-linux-gnu/libdbus-1.so /usr/lib/x86_64-linux-gnu/libcpprest.so.2.10 /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/libcrypto.so /usr/lib/x86_64-linux-gnu/libboost_system.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_atomic.so.1.71.0 -lpthread libjson_schema_validator.a -lresolv -lstdc++fs /lib/x86_64-linux-gnu/libm.so.6

/lib/x86_64-linux-gnu/libm.so.6」が見つからないみたいなエラーが出たら

$ cat MakeFiles/nmos-cpp-test.dir/link.txt
/usr/bin/gcc CMakeFiles/nmos-cpp-test.dir/nmos-cpp-test/main.cpp.o /lib/x86_64-linux-gnu/libstdc++.so.6 CMakeFiles/nmos-cpp-test.dir/cpprest/test/api_router_test.cpp.o CMakeFiles/nmos-cpp-test.dir/cpprest/test/http_utils_test.cpp.o CMakeFiles/nmos-cpp-test.dir/cpprest/test/json_utils_test.cpp.o CMakeFiles/nmos-cpp-test.dir/cpprest/test/json_visit_test.cpp.o CMakeFiles/nmos-cpp-test.dir/cpprest/test/regex_utils_test.cpp.o CMakeFiles/nmos-cpp-test.dir/cpprest/test/ws_listener_test.cpp.o CMakeFiles/nmos-cpp-test.dir/mdns/test/core_test.cpp.o CMakeFiles/nmos-cpp-test.dir/mdns/test/mdns_test.cpp.o CMakeFiles/nmos-cpp-test.dir/nmos/test/api_utils_test.cpp.o CMakeFiles/nmos-cpp-test.dir/nmos/test/channels_test.cpp.o CMakeFiles/nmos-cpp-test.dir/nmos/test/did_sdid_test.cpp.o CMakeFiles/nmos-cpp-test.dir/nmos/test/event_type_test.cpp.o CMakeFiles/nmos-cpp-test.dir/nmos/test/json_validator_test.cpp.o CMakeFiles/nmos-cpp-test.dir/nmos/test/paging_utils_test.cpp.o CMakeFiles/nmos-cpp-test.dir/nmos/test/query_api_test.cpp.o CMakeFiles/nmos-cpp-test.dir/nmos/test/sdp_utils_test.cpp.o CMakeFiles/nmos-cpp-test.dir/nmos/test/system_resources_test.cpp.o CMakeFiles/nmos-cpp-test.dir/rql/test/rql_test.cpp.o CMakeFiles/nmos-cpp-test.dir/sdp/test/sdp_test.cpp.o -o nmos-cpp-test  libnmos-cpp.a libmdns.a /usr/lib/x86_64-linux-gnu/libdns_sd.so /usr/lib/x86_64-linux-gnu/libavahi-client.so /usr/lib/x86_64-linux-gnu/libavahi-common.so /usr/lib/x86_64-linux-gnu/libdbus-1.so /usr/lib/x86_64-linux-gnu/libcpprest.so.2.10 /usr/lib/x86_64-linux-gnu/libboost_system.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_atomic.so.1.71.0 -lpthread libnmos_is04_schemas.a libnmos_is05_schemas.a libnmos_is08_schemas.a libnmos_is09_schemas.a /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/libcrypto.so libjson_schema_validator.a /lib/x86_64-linux-gnu/libm.so.6 -lresolv -lstdc++fs

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Enter code * Time limit is exhausted. Please reload CAPTCHA.

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください