一个编译好的Cacti-spine文件,版本1.2.20,用于Linux
官方 只给了源码,我不想每次都编译,应该是可以直接复制到其他的系统上使用
要求
- 系统架构 / 版本一致:目标系统和编译系统的操作系统版本(如都是 Ubuntu 20.04/ CentOS 7)、CPU 架构(如都是 x86_64)必须完全一致,否则会出现 “无法执行” 或 “缺少库” 的错误。
- 依赖库必须安装:目标系统不需要编译环境(如 gcc、make),但必须安装 spine 运行所需的依赖库(如 MySQL 客户端库、SNMP 库等)。
文件网盘备份下载地址:https://xyweb.lanzout.com/b004j5sktc 密码:dzlt
1、检查CPU架构一致
- root@Cacti:/opt#
uname -m
x86_64
2、检查系统版本(编译程序的系统如下)
- root@Cacti:/opt#
cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
DEBIAN_VERSION_FULL=13.2
ID=debian
3、查看spine依赖的库(目标系统必须有这些库) 库文件网盘备份https://xyweb.lanzout.com/ipIcH3fndlub
- root@Cacti:/opt#
ldd /usr/local/spine/bin/spine
linux-vdso.so.1 (0x00007ffc21546000)
libnetsnmp.so.40 => /lib/x86_64-linux-gnu/libnetsnmp.so.40 (0x00007c2dbc6e4000)
libmariadb.so.3 => /lib/x86_64-linux-gnu/libmariadb.so.3 (0x00007c2dbc689000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007c2dbc599000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007c2dbc3a3000)
libssl.so.3 => /lib/x86_64-linux-gnu/libssl.so.3 (0x00007c2dbc295000)
libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007c2dbbc00000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007c2dbc273000)
/lib64/ld-linux-x86-64.so.2 (0x00007c2dbc86d000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007c2dbbb36000)
linux-vdso.so.1是内核级的虚拟库,它不存在于磁盘的任何目录中,而是由 Linux 内核在程序运行时自动映射到进程的地址空间,所有运行在 Linux 系统上的 x86_64 架构程序,都会自动加载这个虚拟库,无需手动安装或复制。
4、安装所有依赖库(对应ldd输出的库)和运行依赖
4.1 Ubuntu/Debian
安装运行依赖( Ubuntu/Debian )
- root@Cacti:/opt#
apt install -y libmysqlclient-dev libssl-dev libsnmp-dev zlib1g-dev
依赖库( Ubuntu/Debian )
- root@Cacti:/opt#
apt install -y libsnmp40 libmariadb3 libssl3 libcrypto3 zlib1g libzstd1
包名对应关系:
libnetsnmp.so.40 → libsnmp40
libmariadb.so.3 → libmariadb3
libssl.so.3/libcrypto.so.3 → libssl3/libcrypto3(Ubuntu 22.04+ 版本)
libz.so.1 → zlib1g
libzstd.so.1 → libzstd1
libm.so.6/libc.so.6//lib64/ld-linux-x86-64.so.2:是 Linux 系统核心库(glibc),所有 Linux 系统默认自带,无需安装。
4.2 CentOS/RHEL
安装运行依赖( CentOS/RHEL )
- root@Cacti:/opt#
yum install -y mysql-community-devel openssl-devel net-snmp-devel zlib-devel
依赖库( CentOS/RHEL )
- root@Cacti:/opt#
yum install -y net-snmp-libs mariadb-connector-c-libs openssl-libs zlib zstd-libs
包名对应关系:
libnetsnmp.so.40 → net-snmp-libs
libmariadb.so.3 → mariadb-connector-c-libs
libssl.so.3/libcrypto.so.3 → openssl-libs(CentOS 9+ 版本)
libz.so.1 → zlib
libzstd.so.1 → zstd-libs
5、验证安装是否成功
在目标系统执行以下命令,若能列出库的路径,说明安装成功:
# 检查libnetsnmp.so.40
ldconfig -p | grep libnetsnmp.so.40
# 检查libmariadb.so.3
ldconfig -p | grep libmariadb.so.3
补充:查找 spine 依赖的物理库的方法
# 查找指定库的物理路径
find /lib /usr/lib /usr/local/lib -name "libnetsnmp.so.40"
6、复制文件并配置(配置等文件网盘备份https://xyweb.lanzout.com/iUS693fncq6b)
# 创建目录结构
mkdir -p /usr/local/spine/bin /usr/local/spine/etc
# 文件位置(配置等文件网盘备份链接:https://xyweb.lanzout.com/iUS693fncq6b)
root@Cacti:/opt# ls /usr/local/spine/bin/spine /usr/local/spine/etc/spine.conf.dist -lash
472K -rwsr-xr-x 1 root root 471K Jan 9 09:47 /usr/local/spine/bin/spine
4.0K -rw-r--r-- 1 root root 3.6K Jan 9 10:35 /usr/local/spine/etc/spine.conf.dist
# 官方推荐设置权限
chown root:root /usr/local/spine/bin/spine
chmod u+s /usr/local/spine/bin/spine
# 配置spine(可选:修改数据库连接信息,但我发现好像这里不需要操作)
cp /usr/local/spine/etc/spine.conf.dist /usr/local/spine/etc/spine.conf
vim /usr/local/spine/etc/spine.conf
# 可选:修改以下核心配置(和Cacti的数据库配置一致),但我发现好像这里不需要操作:
# DB_Host = localhost
# DB_Database = cacti
# DB_User = cactiuser
# DB_Pass = cactipassword
# DB_Port = 3306
7、测试是否可用
# 验证版本
/usr/local/spine/bin/spine -v
# 验证配置(无报错即正常)
/usr/local/spine/bin/spine -C /usr/local/spine/etc/spine.conf
在Cacti上配置:


尚未实际测试复制过去的二进制文件等是否可用,此笔记待完善
本文来自博客园,作者:Ojox,转载请注明原文链接:https://www.cnblogs.com/Ojox/p/19460529

浙公网安备 33010602011771号