LoginSignup
0
0

More than 1 year has passed since last update.

RockyLinux8.5 で Delegate を動かす

Last updated at Posted at 2022-04-29

Delegate の入手


・ 以下からソースコードをダウンロードします。

Delegate のコンパイル


makeの実施

ファイルを展開し、makeします。

# cd /var/tmp
# tar xvf delegate9.9.13.tar.gz
# cd delegate9.9.13
# make

makeを実施すると、以下のエラーが発生して、コンパイルが失敗します。

In file included from readycc.c:2:
readycc.c: 関数 ‘int ready_cc(FILE*)’ 内:
../include/fpoll.h:15:30: エラー: ‘FILE’ {aka ‘struct _IO_FILE’} has no member named ‘_egptr’
 #define READYCC(fp)     (fp->_egptr - fp->_gptr)
                              ^~~~~~
readycc.c:8:14: 備考: in expansion of macro ‘READYCC’
  else return READYCC(fp);
              ^~~~~~~
../include/fpoll.h:15:43: エラー: ‘FILE’ {aka ‘struct _IO_FILE’} has no member named ‘_gptr’
 #define READYCC(fp)     (fp->_egptr - fp->_gptr)
                                           ^~~~~
readycc.c:8:14: 備考: in expansion of macro ‘READYCC’
  else return READYCC(fp);
              ^~~~~~~
readycc.c: 関数 ‘int ready_CC(FILE*)’ 内:
../include/fpoll.h:15:30: エラー: ‘FILE’ {aka ‘struct _IO_FILE’} has no member named ‘_egptr’
 #define READYCC(fp)     (fp->_egptr - fp->_gptr)
                              ^~~~~~
readycc.c:13:8: 備考: in expansion of macro ‘READYCC’
  rcc = READYCC(fp);
        ^~~~~~~
../include/fpoll.h:15:43: エラー: ‘FILE’ {aka ‘struct _IO_FILE’} has no member named ‘_gptr’
 #define READYCC(fp)     (fp->_egptr - fp->_gptr)
                                           ^~~~~
readycc.c:13:8: 備考: in expansion of macro ‘READYCC’
  rcc = READYCC(fp);
        ^~~~~~~
make[4]: *** [Makefile.go:41: readycc.o] エラー 1
make[4]: ディレクトリ '/var/tmp/delegate9.9.13/rary' から出ます
make[3]: *** [Makefile:7: libx] エラー 2
make[3]: ディレクトリ '/var/tmp/delegate9.9.13/rary' から出ます
mkmake: ERROR LOG is left at /var/tmp/delegate9.9.13/rary/mkmake.err
mkmake: ERROR LOG is left at /var/tmp/delegate9.9.13/rary/mkmake.err
make[2]: *** [Makefile.go:1111: ../lib/library.a] エラー 2
make[2]: ディレクトリ '/var/tmp/delegate9.9.13/src' から出ます
make[1]: *** [Makefile:376: start0] エラー 2
make[1]: ディレクトリ '/var/tmp/delegate9.9.13/src' から出ます
mkmake: ERROR LOG is left at /var/tmp/delegate9.9.13/src/mkmake.err
mkmake: ERROR LOG is left at /var/tmp/delegate9.9.13/src/mkmake.err
make: *** [Makefile:77: all] エラー 2

そのため、以下の2つのファイルを修正し、再度、makeを実施します。

  • delegate9.9.13/include/fpoll.h
  • delegate9.9.13/include/ystring.h

修正1

delegate9.9.13/include/fpoll.h の 7行目の次に以下を追加

#define _LIBIO_H

修正2

delegate9.9.13/include/ystring.h の 1502行目の次に以下を追加

#pragma GCC diagnostic ignored "-Wparentheses"
#pragma GCC diagnostic ignored "-Wcomment"
#pragma GCC diagnostic ignored "-Wunused-result"
#pragma GCC diagnostic ignored "-Wunused-value"
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#pragma GCC diagnostic ignored "-Wformat-extra-args"
#pragma GCC diagnostic ignored "-Wnarrowing"
#pragma GCC diagnostic ignored "-Wstringop-overflow=" // for Pi

参照情報

https://stackoverflow.com/questions/62140615/failed-compile-delegate-raspbian

再度、makeの実施

# make

Delegateの起動確認

Delegateが使用するポート(TCPの8080)を開放します。

# firewall-cmd --zone=public --add-port=8080/tcp --permanent
# firewall-cmd --reload

Delegateを起動します。

# cd src
# ./delegated -P8080

以下のメッセージが表示され、起動することが出来ないです。

-- ERROR: can't link the SSL/Crypto library.
-- Hint: use -vl option to trace the required library,
--- find it (ex. libssl.so.X.Y.Z) under /usr/lib or /lib,
--- then set the library version as DYLIB='+,lib*.so.X.Y.Z'
<DeleGate/9.9.13> [3941] -P8080 READY

Delegateは、OpenSSL 1.1.x 以前の関数で実装されているため、1.0.xで廃止された関数でエラーとなるみたいです。そのため、OpenSSLの1.0.2uを別途準備して、Delegateを起動できるようにします。

OpenSSL 1.0.2uのソースコードの取得


以下からOpenSSL 1.0.2uのソースコードを取得します。

OpenSSL 1.0.2uをコンパイルします。

以下のコマンドを実施します。

# cd /var/tmp
# tar xvf openssl-1.0.2u.tar.gz
# cd openssl-1.0.2u
# ./config shared
# make
# make install

OpenSSL 1.0.2uは以下に格納されます。

/usr/local/ssl/bin/openssl

OpenSSLのライブラリは以下に格納されます。

/usr/local/ssl/lib

Delegateの配置


install.shファイルの修正

delegate9.9.13/install.shファイルを修正して、インストール先を変更します。

変更前 INST=inst 
変更後 INST=/opt

installの実施

install を実施します。

# make install
# ./install

OpenSSL 1.0.2uライブラリのシンボリックリンクの作成

/opt/dg9_9_13/DGROOT/lib フォルダに openssl のライブラリのシンボリックリンクを作成します。

# ln -s /usr/local/ssl/lib/libcrypto.so.1.0.0 /opt/dg9_9_13/DGROOT/lib/libcrypto.so
# ln -s /usr/local/ssl/lib/libssl.so.1.0.0 /opt/dg9_9_13/DGROOT/lib/libssl.so

Delegateの起動確認

以下のコマンドを実施します。

# /opt/dg9_9_13/DGROOT/bin/dg9_9_13 -P8080

コマンドを実施すると以下のメッセージが表示されます。

#### loading default conf: /opt/dg9_9_13/DGROOT/bin/dg9_9_13.conf
<DeleGate/9.9.13> [48533] -P8080 READY
_execPath=/opt/dg9_9_13/DGROOT/bin/dg9_9_13
Config: Linux/4.18.0-348.23.1.el8_5.x86_64; FileSize-Bits=64/64,64/32,64,64; socket=87380/16384,++NAT; sockpair=212992/212992,1002++U; char=signed; fcF=B; thread=PThread/pthread,64/128; zlib=112,308024; pam=2; stty=tcsetattr/NA; regex=regex; addr=A/440780/7FFDA9ED8E58; fmem=2677/-1418/5751M
DGROOT=/opt/dg9_9_13/DGROOT
ADMIN=root@localhost.localdomain
AIST-Product-ID: 2000-ETL-198715-01, H14PRO-049, H15PRO-165, H18PRO-443
Copyright (c) 1994-2000 Yutaka Sato and ETL,AIST,MITI
Copyright (c) 2001-2014 National Institute of Advanced Industrial Science and Technology (AIST)
BLDSIGN=9.9.13:20220428202141--500:3f6d3795eba9135d:root@localhost.localdomain:-
HostID: No-HostId-Available
Loaded: OpenSSL 1.0.2u  20 Dec 2019
Loaded: Zlib 1.2.11

以下のコマンドでDelegateを停止させます。

# /opt/dg9_9_13/DGROOT/bin/dg9_9_13 -P8080 -Fkill

systemd のサービスとして起動させる


systemdのUnitファイルの作成

delegate.service という名前で作成します。
内容は以下の通りです。

[Unit]
Description=Delegate server daemon

[Service]
Type=forking
ExecStart=/opt/dg9_9_13/DGROOT/bin/dg9_9_13 -P8080
ExecStop=/opt/dg9_9_13/DGROOT/bin/dg9_9_13 -P8080 -Fkill
ExecReload=/opt/dg9_9_13/DGROOT/bin/dg9_9_13 -P8080 -Fkill -HUP
Restart=no

[Install]
WantedBy=multi-user.target

delegate.service ファイルを /etc/systemd/system にコピーします。

# cp delegate.service /etc/systemd/system
# chomod 755 /etc/systemd/system/delgate.service

Delegate サービスの起動

以下のコマンドでサービスを起動します。

# systemctl start delegate.service

サービスが正常に起動したかを確認します。

# systemctl status delgate.service

正常に起動した場合、以下のメッセージが表示されます。

● delegate.service - Delegate server daemon
   Loaded: loaded (/etc/systemd/system/delegate.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2022-04-28 21:57:28 EDT; 2s ago
  Process: 49014 ExecStart=/opt/dg9_9_13/DGROOT/bin/dg9_9_13 -P8080 (code=exited, status=0/SUCCESS)
 Main PID: 49015 (dg9_9_13)
    Tasks: 1 (limit: 36455)
   Memory: 1.5M
   CGroup: /system.slice/delegate.service
           └─49015 /opt/dg9_9_13/DGROOT/bin/dg9_9_13 -{000}[RPM=0.00(0.0 0.0 0.0)]-P8080 -- ------

サービスを停止させます。

# systemctl stop delegate.service

参照情報

https://genzouw.com/entry/2021/07/05/154156/2701/
 

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0