RobustMQ初体验

一开始疯狂踩坑, 一大原因是服务器是centos 7.9版本的, 有点太旧了, 后来改用ubuntu 24.04就很丝滑, 建议早日放弃老古董doge

进入RobustMQ v0.2.0-RELEASE下载合适的版本, 我的服务器是x86_64架构的, 所以下载Linux AMD64 (robustmq-v0.2.0-RELEASE-linux-amd64.tar.gz)这个版本, 上传到服务器上

安装以及基本功能

  1. 解压
1
2
tar -xzf robustmq-v0.2.0-RELEASE-linux-amd64.tar.gz
cd robustmq-v0.2.0-RELEASE--linux-amd64
  1. quick start
1
./bin/robust-server start
  1. 是否启动成功
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
./bin/robust-server status

#如下
╭─────────────────────────────────────────────────────────────────────────────╮
│ │
│ ██████╗ ██████╗ ██████╗ ██╗ ██╗███████╗████████╗███╗ ███╗ ██████╗ Q │
│ ██╔══██╗██╔═══██╗██╔══██╗██║ ██║██╔════╝╚══██╔══╝████╗ ████║██╔═══██╗ │
│ ██████╔╝██║ ██║██████╔╝██║ ██║███████╗ ██║ ██╔████╔██║██║ ██║ │
│ ██╔══██╗██║ ██║██╔══██╗╚██╗ ██╔╝╚════██║ ██║ ██║╚██╔╝██║██║ ██║ │
│ ██║ ██║╚██████╔╝██████╔╝ ╚████╔╝ ███████║ ██║ ██║ ╚═╝ ██║╚██████╔╝ │
│ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═══╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ │
│ │
│ 🦀 Next-Generation Cloud-Native Message Queue │
│ ⚡ Built with Rust • AI-Native • Multi-Protocol │
│ 🚀 Microsecond Latency • Zero GC • Serverless Ready │
│ │
╰─────────────────────────────────────────────────────────────────────────────╯
()🚀 Checking RobustMQ status...
✅ RobustMQ Status: Online
📋 Version: <!doctype html><html><head><link rel="icon" href="/favicon.png"><title>RobustMQ Admin</title><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="theme-color" content="#fff"><meta name="title" content="RobustMQ Admin"><meta name="description" content="RobustMQ Admin"><script defer src="/static/js/lib-axios.76b6753e.js"></script><script defer src="/static/js/lib-react.f575643e.js"></script><script defer src="/static/js/860.b2877b0c.js"></script><script defer src="/static/js/index.3c84183d.js"></script><link href="/static/css/index.af1f9b70.css" rel="stylesheet"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossOriginIsolated><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Manrope:wght@200..800&display=swap"><script type="text/javascript">window.__APP_CONFIG__ = {"ports":{"dev":3000,"preview":3000,"build":3000},"app":{"title":"RobustMQ Admin","description":"RobustMQ Admin","themeColor":"#fff"},"dev":{"host":"localhost","open":true,"hot":true},"api":{"baseUrl":null,"grpcUrl":null,"placementGrpcUrl":null},"defaults":{"ports":{"dev":3000,"preview":3000,"build":3000},"app":{"title":"RobustMQ Admin","description":"RobustMQ Admin","themeColor":"#fff"},"dev":{"host":"localhost","open":true,"hot":true},"api":{"baseUrl":null,"grpcUrl":null,"placementGrpcUrl":null}}};</script></head><body><div id="root"></div></body></html>
🌐 Server: 127.0.0.1:8080
  1. 查看配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
./bin/robust-ctl cluster config get

#如下
╭─────────────────────────────────────────────────────────────────────────────╮
│ │
│ ██████╗ ██████╗ ██████╗ ██╗ ██╗███████╗████████╗███╗ ███╗ ██████╗ Q │
│ ██╔══██╗██╔═══██╗██╔══██╗██║ ██║██╔════╝╚══██╔══╝████╗ ████║██╔═══██╗ │
│ ██████╔╝██║ ██║██████╔╝██║ ██║███████╗ ██║ ██╔████╔██║██║ ██║ │
│ ██╔══██╗██║ ██║██╔══██╗╚██╗ ██╔╝╚════██║ ██║ ██║╚██╔╝██║██║ ██║ │
│ ██║ ██║╚██████╔╝██████╔╝ ╚████╔╝ ███████║ ██║ ██║ ╚═╝ ██║╚██████╔╝ │
│ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═══╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ │
│ │
│ 🦀 Next-Generation Cloud-Native Message Queue │
│ ⚡ Built with Rust • AI-Native • Multi-Protocol │
│ 🚀 Microsecond Latency • Zero GC • Serverless Ready │
│ │
╰─────────────────────────────────────────────────────────────────────────────╯
(){
"cluster_name": "robust_mq_cluster_default",
"broker_id": 1,
"roles": [
"meta",
"broker"
],
"grpc_port": 1228,
"meta_addrs": {
"1": "127.0.0.1:1228"
},
"prometheus": {
"enable": true,
"port": 9090
},
"log": {
"log_config": "./config/broker-tracing.toml",
"log_path": "./logs"
},
"runtime": {
"runtime_worker_threads": 64,
"tls_cert": "./config/certs/cert.pem",
"tls_key": "./config/certs/key.pem"
},
"network": {
"accept_thread_num": 8,
"handler_thread_num": 32,
"response_thread_num": 8,
"queue_size": 1000,
"lock_max_try_mut_times": 30,
"lock_try_mut_sleep_time_ms": 50
},
"p_prof": {
"enable": false,
"port": 6060,
"frequency": 100
},
"meta_runtime": {
"heartbeat_timeout_ms": 30000,
"heartbeat_check_time_ms": 1000
},
"rocksdb": {
"data_path": "./data",
"max_open_files": 10000
},
"journal_server": {
"tcp_port": 1778
},
"journal_runtime": {
"enable_auto_create_shard": true,
"shard_replica_num": 2,
"max_segment_size": 1073741824
},
"journal_storage": {
"data_path": [
"./data/journal/"
],
"rocksdb_max_open_files": 10000
},
"mqtt_server": {
"tcp_port": 1883,
"tls_port": 1884,
"websocket_port": 8083,
"websockets_port": 8084,
"quic_port": 9083
},
"mqtt_keep_alive": {
"enable": true,
"default_time": 180,
"max_time": 3600,
"default_timeout": 2
},
"mqtt_auth_storage": {
"storage_type": "placement",
"journal_addr": "",
"mysql_addr": "",
"postgres_addr": "",
"redis_addr": ""
},
"mqtt_auth_config": {
"auth_type": "password",
"authn_config": {
"jwt_config": null,
"password_config": {
"credential_type": "password",
"algorithm": "plain",
"salt_position": null,
"salt_rounds": null,
"mac_fun": null,
"iterations": null,
"dk_length": null
},
"http_config": null
},
"authz_config": {}
},
"mqtt_message_storage": {
"storage_type": "memory",
"journal_addr": "",
"mysql_addr": "",
"rocksdb_data_path": "",
"rocksdb_max_open_files": null
},
"mqtt_runtime": {
"default_user": "admin",
"default_password": "robustmq",
"max_connection_num": 1000000
},
"mqtt_offline_message": {
"enable": true,
"expire_ms": 0,
"max_messages_num": 0
},
"mqtt_slow_subscribe_config": {
"enable": false,
"record_time": 1000,
"delay_type": "Whole"
},
"mqtt_flapping_detect": {
"enable": false,
"window_time": 1,
"max_client_connections": 15,
"ban_time": 5
},
"mqtt_protocol_config": {
"max_session_expiry_interval": 1800,
"default_session_expiry_interval": 30,
"topic_alias_max": 65535,
"max_qos": 2,
"max_packet_size": 10485760,
"receive_max": 65535,
"max_message_expiry_interval": 3600,
"client_pkid_persistent": false
},
"mqtt_security": {
"is_self_protection_status": false,
"secret_free_login": false
},
"mqtt_schema": {
"enable": true,
"strategy": "ALL",
"failed_operation": "Discard",
"echo_log": true,
"log_level": "info"
},
"mqtt_system_monitor": {
"enable": false,
"os_cpu_high_watermark": 70.0,
"os_memory_high_watermark": 80.0
}
}

  1. 基本功能测试
1
2
3
4
5
6
7
8
9
10
# Install mqttx client (if not already installed)
npm install -g mqttx-cli


# 这里发版的页面是没有写明要用户名和密码的, 有点小坑😃
# Publish message
mqttx pub -h 127.0.0.1 -p 1883 -u admin -P robustmq -t "test/topic" -m "Hello RobustMQ!"

# Subscribe to messages
mqttx sub -h 127.0.0.1 -p 1883 -u admin -P robustmq -t "test/topic"

测试成功, 结果如图:
avatar
avatar

  1. 查看前端
    我们应该是有dist目录的, 有的话就有Web UI, 然后开放8080端口, 访问即可, 如图:
    avatar

简单测试

这里是要外部安装mqttx cli测的, 之前的是在服务器上的基本功能测试

  1. 测试发布
1
mqttx bench pub -h 服务器ip -p 1883 -u admin -P robustmq -c 1000 -im 1000 -t "test/baseline" -S 128B -q 0 -v

我的服务器是4C4G3M的配置, 最大连接数945, 这里应该是被文件描述符限制住了连接数, 我们可以查询一下:

1
2
ubuntu@VM-20-16-ubuntu:~$ ulimit -n
1024

我们修改连接符的限制, 设为无限大

1
2
3
4
5
vim /etc/security/limits.conf

# 添加以下内容:
* soft nofile 65535
* hard nofile 65535

关闭连接后重新连接, 再次查询:

1
2
ubuntu@VM-20-16-ubuntu:~$ ulimit -n
65535

再次测试, 这时1000个连接就能随便达到了, 我们继续加码测试

1
mqttx bench pub -h 服务器ip -p 1883 -u admin -P robustmq -c 100000 -im 1000 -t "test/baseline" -S 128B -q 0 -v

峰值连接数为12903, 此时内存利用率约为77%, cpu利用率约为8%, 但很诡异的是一段时间后cpu利用率达到了99%, 此时大量连接中断正在发生重连, 服务器出现ECONNRESET 錯誤, 无法继续进行测试, 我的推测可能是心跳风暴导致的, 后续有空了再测一下
avatar

  1. 测试接收
    mqttx bench sub -h 1.12.255.192 -p 1883 -u admin -P robustmq -c 10 -t “test/baseline” -q 0

2200-2600/s的接收速度, 可以算出这个接收速度和我的3Mbps的带宽是十分吻合的, 带宽就是瓶颈

踩坑过程(可不看)

一开始按照官网的Experience-MQTT的流程来, 服务器版本是CentOS 7.9

尝试快速启动

下载并解压二进制包

1
2
3
4
5
6
7
8
# Download the latest version binary package (using v1.0.0 as an example)
wget https://github.com/robustmq/robustmq/releases/download/v0.1.33/robustmq-v0.1.33-linux-amd64.tar.gz

# Extract the binary package
tar -xzf robustmq-v0.1.33-linux-amd64.tar.gz

# Enter the extracted directory
cd robustmq-v0.1.33-linux-amd64

启动

1
2
# Start Broker (using default configuration)
./bin/broker-server start

发现没有这个目录, 检查发现改名了, 改成了robust-server, 然后接着启动

1
./bin/robust-server start

发现还是不行, 结果是

1
2
3
Config: /root/robustmq-v0.1.33-linux-amd64/bin/../config/server.toml
Starting RobustMQ broker server...
❌ WARN: broker started failure. please check detail in /root/robustmq-v0.1.33-linux-amd64/logs/robustmq.log

进去查看日志内容, 发现缺了一些包:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `CXXABI_1.3.11' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.30' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.29' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `CXXABI_1.3.11' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.30' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.29' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)
/root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by /root/robustmq-v0.1.33-linux-amd64/bin/../libs/broker-server)

应该是CentOS 7.9这个版本有点低了, 于是决定自己编译

尝试自己编译项目

首先安装rust环境

1
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

可以换成阿里云的

1
curl --proto '=https' --tlsv1.2 -sSf https://mirrors.aliyun.com/repo/rust/rustup-init.sh | sh

如果页面出现:

1
Rust is installed now. Great!

表示已经安装成功

验证安装

1
2
3
source ~/.cargo/env
rustc --version
cargo --version

clone项目

1
git clone https://github.com/robustmq/robustmq.git

构建并运行

1
cargo run --package cmd --bin broker-server

报错, 缺少 libclang 这个库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
error: failed to run custom build command for `zstd-sys v2.0.15+zstd.1.5.7`

Caused by:
process didn't exit successfully: `/root/rbmq/robustmq/target/debug/build/zstd-sys-fa921af4aeab9891/build-script-build` (exit status: 101)
--- stdout
cargo:rerun-if-env-changed=ZSTD_SYS_USE_PKG_CONFIG
OUT_DIR = Some(/root/rbmq/robustmq/target/debug/build/zstd-sys-ee0b72447b2c3d2e/out)
OPT_LEVEL = Some(0)
TARGET = Some(x86_64-unknown-linux-gnu)
HOST = Some(x86_64-unknown-linux-gnu)
cargo:rerun-if-env-changed=CC_x86_64-unknown-linux-gnu
CC_x86_64-unknown-linux-gnu = None
cargo:rerun-if-env-changed=CC_x86_64_unknown_linux_gnu
CC_x86_64_unknown_linux_gnu = None
cargo:rerun-if-env-changed=HOST_CC
HOST_CC = None
cargo:rerun-if-env-changed=CC
CC = None
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
RUSTC_WRAPPER = None
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
DEBUG = Some(true)
CARGO_CFG_TARGET_FEATURE = Some(fxsr,sse,sse2)
cargo:rerun-if-env-changed=CFLAGS
CFLAGS = None
cargo:rerun-if-env-changed=HOST_CFLAGS
HOST_CFLAGS = None
cargo:rerun-if-env-changed=CFLAGS_x86_64_unknown_linux_gnu
CFLAGS_x86_64_unknown_linux_gnu = None
cargo:rerun-if-env-changed=CFLAGS_x86_64-unknown-linux-gnu
CFLAGS_x86_64-unknown-linux-gnu = None
CARGO_ENCODED_RUSTFLAGS = Some()
OUT_DIR = Some(/root/rbmq/robustmq/target/debug/build/zstd-sys-ee0b72447b2c3d2e/out)
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
TARGET = Some(x86_64-unknown-linux-gnu)
CARGO_CFG_TARGET_FEATURE = Some(fxsr,sse,sse2)
HOST = Some(x86_64-unknown-linux-gnu)
cargo:rerun-if-env-changed=CFLAGS
CFLAGS = None
cargo:rerun-if-env-changed=HOST_CFLAGS
HOST_CFLAGS = None
cargo:rerun-if-env-changed=CFLAGS_x86_64_unknown_linux_gnu
CFLAGS_x86_64_unknown_linux_gnu = None
cargo:rerun-if-env-changed=CFLAGS_x86_64-unknown-linux-gnu
CFLAGS_x86_64-unknown-linux-gnu = None
OUT_DIR = Some(/root/rbmq/robustmq/target/debug/build/zstd-sys-ee0b72447b2c3d2e/out)
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
TARGET = Some(x86_64-unknown-linux-gnu)
CARGO_CFG_TARGET_FEATURE = Some(fxsr,sse,sse2)
HOST = Some(x86_64-unknown-linux-gnu)
cargo:rerun-if-env-changed=CFLAGS
CFLAGS = None
cargo:rerun-if-env-changed=HOST_CFLAGS
HOST_CFLAGS = None
cargo:rerun-if-env-changed=CFLAGS_x86_64_unknown_linux_gnu
CFLAGS_x86_64_unknown_linux_gnu = None
cargo:rerun-if-env-changed=CFLAGS_x86_64-unknown-linux-gnu
CFLAGS_x86_64-unknown-linux-gnu = None
OUT_DIR = Some(/root/rbmq/robustmq/target/debug/build/zstd-sys-ee0b72447b2c3d2e/out)
cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
TARGET = Some(x86_64-unknown-linux-gnu)
CARGO_CFG_TARGET_FEATURE = Some(fxsr,sse,sse2)
HOST = Some(x86_64-unknown-linux-gnu)
cargo:rerun-if-env-changed=CFLAGS
CFLAGS = None
cargo:rerun-if-env-changed=HOST_CFLAGS
HOST_CFLAGS = None
cargo:rerun-if-env-changed=CFLAGS_x86_64_unknown_linux_gnu
CFLAGS_x86_64_unknown_linux_gnu = None
cargo:rerun-if-env-changed=CFLAGS_x86_64-unknown-linux-gnu
CFLAGS_x86_64-unknown-linux-gnu = None
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
exit status: 0
cargo:rerun-if-env-changed=AR_x86_64-unknown-linux-gnu
AR_x86_64-unknown-linux-gnu = None
cargo:rerun-if-env-changed=AR_x86_64_unknown_linux_gnu
AR_x86_64_unknown_linux_gnu = None
cargo:rerun-if-env-changed=HOST_AR
HOST_AR = None
cargo:rerun-if-env-changed=AR
AR = None
cargo:rerun-if-env-changed=ARFLAGS
ARFLAGS = None
cargo:rerun-if-env-changed=HOST_ARFLAGS
HOST_ARFLAGS = None
cargo:rerun-if-env-changed=ARFLAGS_x86_64_unknown_linux_gnu
ARFLAGS_x86_64_unknown_linux_gnu = None
cargo:rerun-if-env-changed=ARFLAGS_x86_64-unknown-linux-gnu
ARFLAGS_x86_64-unknown-linux-gnu = None
cargo:rustc-link-lib=static=zstd
cargo:rustc-link-search=native=/root/rbmq/robustmq/target/debug/build/zstd-sys-ee0b72447b2c3d2e/out
cargo:root=/root/rbmq/robustmq/target/debug/build/zstd-sys-ee0b72447b2c3d2e/out
cargo:include=/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zstd-sys-2.0.15+zstd.1.5.7/zstd/lib

--- stderr

thread 'main' panicked at /root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bindgen-0.71.1/lib.rs:604:27:
Unable to find libclang: "couldn't find any valid shared libraries matching: ['libclang.so', 'libclang-*.so', 'libclang.so.*', 'libclang-*.so.*'], set the `LIBCLANG_PATH` environment variable to a path where one of these files can be found (invalid: [])"
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...

安装 Clang 和它的开发库:

1
sudo yum install clang-devel

依旧报错, 版本太旧了

1
2
error: failed to run custom build command for `zstd-sys v2.0.15+zstd.1.5.7`

准备升级

1
2
sudo yum install centos-release-scl
sudo yum install llvm-toolset-14

再次遇到报错, 无法连接到官方仓库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Loaded plugins: fastestmirror
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist http://mirrorlist.centos.org?arch=x86_64&release=7&repo=sclo-rh error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Name or service not known"


One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:

1. Contact the upstream for the repository and get them to fix the problem.

2. Reconfigure the baseurl/etc. for the repository, to point to a working
upstream. This is most often useful if you are using a newer
distribution release than is supported by the repository (and the
packages for the previous distribution release still work).

3. Run the command with the repository temporarily disabled
yum --disablerepo=<repoid> ...

4. Disable the repository permanently, so yum won't use it by default. Yum
will then just ignore the repository until you permanently enable it
again or use --enablerepo for temporary usage:

yum-config-manager --disable <repoid>
or
subscription-manager repos --disable=<repoid>

5. Configure the failing repository to be skipped, if it is unavailable.
Note that yum will try to contact the repo. when it runs most commands,
so will have to try and fail each time (and thus. yum will be be much
slower). If it is a very temporary problem though, this is often a nice
compromise:

yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64

开始询问AI
1
2
3
4
5
6
7
# 指向封存服务器
sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*.repo
sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*.repo

# 清除缓存, 重新生成缓存
sudo yum clean all
sudo yum makecache

再次报错:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[root@lavm-jatbzcwqtu robustmq]# sudo yum makecache
Loaded plugins: fastestmirror
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Determining fastest mirrors


One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:

1. Contact the upstream for the repository and get them to fix the problem.

2. Reconfigure the baseurl/etc. for the repository, to point to a working
upstream. This is most often useful if you are using a newer
distribution release than is supported by the repository (and the
packages for the previous distribution release still work).

3. Run the command with the repository temporarily disabled
yum --disablerepo=<repoid> ...

4. Disable the repository permanently, so yum won't use it by default. Yum
will then just ignore the repository until you permanently enable it
again or use --enablerepo for temporary usage:

yum-config-manager --disable <repoid>
or
subscription-manager repos --disable=<repoid>

5. Configure the failing repository to be skipped, if it is unavailable.
Note that yum will try to contact the repo. when it runs most commands,
so will have to try and fail each time (and thus. yum will be be much
slower). If it is a very temporary problem though, this is often a nice
compromise:

yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

Cannot find a valid baseurl for repo: centos-sclo-sclo

经过一番查找发现[centos-sclo-sclo]的baseurl 和 mirrorlist都被注释掉了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
[root@lavm-jatbzcwqtu robustmq]# sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-SCLo-sclo.repo
sed: can't read /etc/yum.repos.d/CentOS-SCLo-sclo.repo: No such file or directory
[root@lavm-jatbzcwqtu robustmq]# grep -l 'centos-sclo-sclo' /etc/yum.repos.d/*.repo
/etc/yum.repos.d/CentOS-SCLo-scl.repo
[root@lavm-jatbzcwqtu robustmq]# sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-SCLo-scl.repo
[root@lavm-jatbzcwqtu robustmq]# sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-SCLo-scl.repo

[root@lavm-jatbzcwqtu robustmq]# sudo yum clean all

[root@lavm-jatbzcwqtu robustmq]# sudo yum makecache
Loaded plugins: fastestmirror
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Determining fastest mirrors


One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:

1. Contact the upstream for the repository and get them to fix the problem.

2. Reconfigure the baseurl/etc. for the repository, to point to a working
upstream. This is most often useful if you are using a newer
distribution release than is supported by the repository (and the
packages for the previous distribution release still work).

3. Run the command with the repository temporarily disabled
yum --disablerepo=<repoid> ...

4. Disable the repository permanently, so yum won't use it by default. Yum
will then just ignore the repository until you permanently enable it
again or use --enablerepo for temporary usage:

yum-config-manager --disable <repoid>
or
subscription-manager repos --disable=<repoid>

5. Configure the failing repository to be skipped, if it is unavailable.
Note that yum will try to contact the repo. when it runs most commands,
so will have to try and fail each time (and thus. yum will be be much
slower). If it is a very temporary problem though, this is often a nice
compromise:

yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

Cannot find a valid baseurl for repo: centos-sclo-sclo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[root@lavm-jatbzcwqtu robustmq]# grep -i 'centos-sclo-sclo' /etc/yum.repos.d/*.repo
/etc/yum.repos.d/CentOS-SCLo-scl.repo:# CentOS-SCLo-sclo.repo
/etc/yum.repos.d/CentOS-SCLo-scl.repo:[centos-sclo-sclo]
/etc/yum.repos.d/CentOS-SCLo-scl.repo:[centos-sclo-sclo-testing]
/etc/yum.repos.d/CentOS-SCLo-scl.repo:[centos-sclo-sclo-source]
/etc/yum.repos.d/CentOS-SCLo-scl.repo:[centos-sclo-sclo-debuginfo]

[root@lavm-jatbzcwqtu robustmq]# cat /etc/yum.repos.d/CentOS-SCLo-scl.repo
# CentOS-SCLo-sclo.repo
#
# Please see http://wiki.centos.org/SpecialInterestGroup/SCLo for more
# information

[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
# baseurl=http://mirror.centos.org/centos/7/sclo/$basearch/sclo/
##mirrorlist=http://##mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

[centos-sclo-sclo-testing]
name=CentOS-7 - SCLo sclo Testing
baseurl=http://buildlogs.centos.org/centos/7/sclo/$basearch/sclo/
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

[centos-sclo-sclo-source]
name=CentOS-7 - SCLo sclo Sources
baseurl=http://vault.centos.org/centos/7/sclo/Source/sclo/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

[centos-sclo-sclo-debuginfo]
name=CentOS-7 - SCLo sclo Debuginfo
baseurl=http://debuginfo.centos.org/centos/7/sclo/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

[root@lavm-jatbzcwqtu robustmq]# sudo sed -i -e "s|^# baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|" /etc/yum.repos.d/CentOS-SCLo-scl.repo
[root@lavm-jatbzcwqtu robustmq]# sudo yum clean all
[root@lavm-jatbzcwqtu robustmq]# sudo yum makecache

解决之后继续cargo run --package cmd --bin broker-server, 又又又报错了, 还是那个问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
[root@lavm-jatbzcwqtu robustmq]# cargo run --package cmd --bin broker-server
   Compiling zstd-sys v2.0.15+zstd.1.5.7
   Compiling prost-validate-types v0.2.7
error: failed to run custom build command for `prost-validate-types v0.2.7`

Caused by:
  process didn't exit successfully: `/root/rbmq/robustmq/target/debug/build/prost-validate-types-c09b5767bec0495d/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-changed=proto/validate/validate.proto

  --- stderr
  Error: Custom { kind: NotFound, error: "Could not find `protoc`. If `protoc` is installed, try setting the `PROTOC` environment variable to the path of the `protoc` binary. To install it on Debian, run `apt-get install protobuf-compiler`. It is also available at https://github.com/protocolbuffers/protobuf/releases  For more information: https://docs.rs/prost-build/#sourcing-protoc" }
warning: build failed, waiting for other jobs to finish...
error: failed to run custom build command for `zstd-sys v2.0.15+zstd.1.5.7`

Caused by:
  process didn't exit successfully: `/root/rbmq/robustmq/target/debug/build/zstd-sys-fa921af4aeab9891/build-script-build` (exit status: 101)
  --- stdout
  cargo:rerun-if-env-changed=ZSTD_SYS_USE_PKG_CONFIG
  OUT_DIR = Some(/root/rbmq/robustmq/target/debug/build/zstd-sys-ee0b72447b2c3d2e/out)
  OPT_LEVEL = Some(0)
  TARGET = Some(x86_64-unknown-linux-gnu)
  HOST = Some(x86_64-unknown-linux-gnu)
  cargo:rerun-if-env-changed=CC_x86_64-unknown-linux-gnu
  CC_x86_64-unknown-linux-gnu = None
  cargo:rerun-if-env-changed=CC_x86_64_unknown_linux_gnu
  CC_x86_64_unknown_linux_gnu = None
  cargo:rerun-if-env-changed=HOST_CC
  HOST_CC = None
  cargo:rerun-if-env-changed=CC
  CC = None
  cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
  RUSTC_WRAPPER = None
  cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some(true)
  CARGO_CFG_TARGET_FEATURE = Some(fxsr,sse,sse2)
  cargo:rerun-if-env-changed=CFLAGS
  CFLAGS = None
  cargo:rerun-if-env-changed=HOST_CFLAGS
  HOST_CFLAGS = None
  cargo:rerun-if-env-changed=CFLAGS_x86_64_unknown_linux_gnu
  CFLAGS_x86_64_unknown_linux_gnu = None
  cargo:rerun-if-env-changed=CFLAGS_x86_64-unknown-linux-gnu
  CFLAGS_x86_64-unknown-linux-gnu = None
  CARGO_ENCODED_RUSTFLAGS = Some()
  OUT_DIR = Some(/root/rbmq/robustmq/target/debug/build/zstd-sys-ee0b72447b2c3d2e/out)
  cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
  cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
  CRATE_CC_NO_DEFAULTS = None
  TARGET = Some(x86_64-unknown-linux-gnu)
  CARGO_CFG_TARGET_FEATURE = Some(fxsr,sse,sse2)
  HOST = Some(x86_64-unknown-linux-gnu)
  cargo:rerun-if-env-changed=CFLAGS
  CFLAGS = None
  cargo:rerun-if-env-changed=HOST_CFLAGS
  HOST_CFLAGS = None
  cargo:rerun-if-env-changed=CFLAGS_x86_64_unknown_linux_gnu
  CFLAGS_x86_64_unknown_linux_gnu = None
  cargo:rerun-if-env-changed=CFLAGS_x86_64-unknown-linux-gnu
  CFLAGS_x86_64-unknown-linux-gnu = None
  OUT_DIR = Some(/root/rbmq/robustmq/target/debug/build/zstd-sys-ee0b72447b2c3d2e/out)
  cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
  cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
  CRATE_CC_NO_DEFAULTS = None
  TARGET = Some(x86_64-unknown-linux-gnu)
  CARGO_CFG_TARGET_FEATURE = Some(fxsr,sse,sse2)
  HOST = Some(x86_64-unknown-linux-gnu)
  cargo:rerun-if-env-changed=CFLAGS
  CFLAGS = None
  cargo:rerun-if-env-changed=HOST_CFLAGS
  HOST_CFLAGS = None
  cargo:rerun-if-env-changed=CFLAGS_x86_64_unknown_linux_gnu
  CFLAGS_x86_64_unknown_linux_gnu = None
  cargo:rerun-if-env-changed=CFLAGS_x86_64-unknown-linux-gnu
  CFLAGS_x86_64-unknown-linux-gnu = None
  OUT_DIR = Some(/root/rbmq/robustmq/target/debug/build/zstd-sys-ee0b72447b2c3d2e/out)
  cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUT
  cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
  CRATE_CC_NO_DEFAULTS = None
  TARGET = Some(x86_64-unknown-linux-gnu)
  CARGO_CFG_TARGET_FEATURE = Some(fxsr,sse,sse2)
  HOST = Some(x86_64-unknown-linux-gnu)
  cargo:rerun-if-env-changed=CFLAGS
  CFLAGS = None
  cargo:rerun-if-env-changed=HOST_CFLAGS
  HOST_CFLAGS = None
  cargo:rerun-if-env-changed=CFLAGS_x86_64_unknown_linux_gnu
  CFLAGS_x86_64_unknown_linux_gnu = None
  cargo:rerun-if-env-changed=CFLAGS_x86_64-unknown-linux-gnu
  CFLAGS_x86_64-unknown-linux-gnu = None
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  exit status: 0
  cargo:rerun-if-env-changed=AR_x86_64-unknown-linux-gnu
  AR_x86_64-unknown-linux-gnu = None
  cargo:rerun-if-env-changed=AR_x86_64_unknown_linux_gnu
  AR_x86_64_unknown_linux_gnu = None
  cargo:rerun-if-env-changed=HOST_AR
  HOST_AR = None
  cargo:rerun-if-env-changed=AR
  AR = None
  cargo:rerun-if-env-changed=ARFLAGS
  ARFLAGS = None
  cargo:rerun-if-env-changed=HOST_ARFLAGS
  HOST_ARFLAGS = None
  cargo:rerun-if-env-changed=ARFLAGS_x86_64_unknown_linux_gnu
  ARFLAGS_x86_64_unknown_linux_gnu = None
  cargo:rerun-if-env-changed=ARFLAGS_x86_64-unknown-linux-gnu
  ARFLAGS_x86_64-unknown-linux-gnu = None
  cargo:rustc-link-lib=static=zstd
  cargo:rustc-link-search=native=/root/rbmq/robustmq/target/debug/build/zstd-sys-ee0b72447b2c3d2e/out
  cargo:root=/root/rbmq/robustmq/target/debug/build/zstd-sys-ee0b72447b2c3d2e/out
  cargo:include=/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/zstd-sys-2.0.15+zstd.1.5.7/zstd/lib

  --- stderr

  thread 'main' panicked at /root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/clang-sys-1.8.1/src/lib.rs:1859:1:

  A `libclang` function was called that is not supported by the loaded `libclang` instance.

      called function = `clang_getTranslationUnitTargetInfo`
      loaded `libclang` instance = unsupported version

  The minimum `libclang` requirement for this particular function can be found here:
  https://docs.rs/clang-sys/latest/clang_sys/clang_getTranslationUnitTargetInfo/index.html

  Instructions for installing `libclang` can be found here:
  https://rust-lang.github.io/rust-bindgen/requirements.html

  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

安装 protoc和llvm-toolset-7

1
2
3
sudo yum install epel-release
sudo yum install protobuf-compiler
sudo yum install llvm-toolset-7-clang llvm-toolset-7-clang-devel

scl enable llvm-toolset-7 'cargo run --package cmd --bin broker-server’之后报错:

1
2
3
4
5
6
7
8
9
10
error: failed to run custom build command for `prost-validate-types v0.2.7`

Caused by:
  process didn't exit successfully: `/root/rbmq/robustmq/target/debug/build/prost-validate-types-c09b5767bec0495d/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-changed=proto/validate/validate.proto

  --- stderr
  Error: Custom { kind: Other, error: "protoc failed: validate.proto: No such file or directory\n" }
warning: build failed, waiting for other jobs to finish...

后面决定直接换个服务器, 不折腾了😋