海岛大树 發表於 2026-1-9 11:39:00

一个编译好的Cacti-spine文件,版本1.2.20,用于Linux

<p><strong>官方</strong> 只给了源码,我不想每次都编译,应该是可以直接复制到其他的系统上使用</p>
<p><strong>要求</strong></p>
<ol>
<li>系统架构 / 版本一致:目标系统和编译系统的操作系统版本(如都是 Ubuntu 20.04/ CentOS 7)、CPU 架构(如都是 x86_64)必须完全一致,否则会出现 “无法执行” 或 “缺少库” 的错误。</li>
<li>依赖库必须安装:目标系统不需要编译环境(如 gcc、make),但必须安装 spine 运行所需的依赖库(如 MySQL 客户端库、SNMP 库等)。</li>
</ol>
<hr>
<p>文件网盘备份下载地址:https://xyweb.lanzout.com/b004j5sktc 密码:dzlt</p>
<hr>
<p><strong>1、检查CPU架构一致</strong></p>
<ul>
<li>root@Cacti:/opt# <code>uname -m</code></li>
</ul>
<pre><code>x86_64
</code></pre>
<hr>
<p><strong>2、检查系统版本(编译程序的系统如下)</strong></p>
<ul>
<li>root@Cacti:/opt# <code>cat /etc/os-release</code></li>
</ul>
<pre><code>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
</code></pre>
<hr>
<p><strong>3、查看spine依赖的库(目标系统必须有这些库)</strong> 库文件网盘备份https://xyweb.lanzout.com/ipIcH3fndlub</p>
<ul>
<li>root@Cacti:/opt# <code>ldd /usr/local/spine/bin/spine</code></li>
</ul>
<pre><code>linux-vdso.so.1 (0x00007ffc21546000)
libnetsnmp.so.40 =&gt; /lib/x86_64-linux-gnu/libnetsnmp.so.40 (0x00007c2dbc6e4000)
libmariadb.so.3 =&gt; /lib/x86_64-linux-gnu/libmariadb.so.3 (0x00007c2dbc689000)
libm.so.6 =&gt; /lib/x86_64-linux-gnu/libm.so.6 (0x00007c2dbc599000)
libc.so.6 =&gt; /lib/x86_64-linux-gnu/libc.so.6 (0x00007c2dbc3a3000)
libssl.so.3 =&gt; /lib/x86_64-linux-gnu/libssl.so.3 (0x00007c2dbc295000)
libcrypto.so.3 =&gt; /lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007c2dbbc00000)
libz.so.1 =&gt; /lib/x86_64-linux-gnu/libz.so.1 (0x00007c2dbc273000)
/lib64/ld-linux-x86-64.so.2 (0x00007c2dbc86d000)
libzstd.so.1 =&gt; /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007c2dbbb36000)
</code></pre>
<blockquote>
<p>linux-vdso.so.1是内核级的虚拟库,它不存在于磁盘的任何目录中,而是由 Linux 内核在程序运行时自动映射到进程的地址空间,所有运行在 Linux 系统上的 x86_64 架构程序,都会自动加载这个虚拟库,无需手动安装或复制。</p>
</blockquote>
<hr>
<p><strong>4、安装所有依赖库(对应ldd输出的库)和运行依赖</strong></p>
<p>4.1 Ubuntu/Debian</p>
<blockquote>
<blockquote>
<p><strong>安装运行依赖( Ubuntu/Debian )</strong></p>
</blockquote>
</blockquote>
<ul>
<li>root@Cacti:/opt# <code>apt install -y libmysqlclient-dev libssl-dev libsnmp-dev zlib1g-dev</code></li>
</ul>
<blockquote>
<blockquote>
<p><strong>依赖库( Ubuntu/Debian )</strong></p>
</blockquote>
</blockquote>
<ul>
<li>root@Cacti:/opt# <code>apt install -y libsnmp40 libmariadb3 libssl3 libcrypto3 zlib1g libzstd1</code></li>
</ul>
<blockquote>
<p>包名对应关系:<br>
libnetsnmp.so.40 → libsnmp40<br>
libmariadb.so.3 → libmariadb3<br>
libssl.so.3/libcrypto.so.3 → libssl3/libcrypto3(Ubuntu 22.04+ 版本)<br>
libz.so.1 → zlib1g<br>
libzstd.so.1 → libzstd1<br>
libm.so.6/libc.so.6//lib64/ld-linux-x86-64.so.2:是 Linux 系统核心库(glibc),所有 Linux 系统默认自带,无需安装。</p>
</blockquote>
<hr>
<p>4.2 CentOS/RHEL</p>
<blockquote>
<blockquote>
<p><strong>安装运行依赖( CentOS/RHEL )</strong></p>
</blockquote>
</blockquote>
<ul>
<li>root@Cacti:/opt# <code>yum install -y mysql-community-devel openssl-devel net-snmp-devel zlib-devel</code></li>
</ul>
<blockquote>
<blockquote>
<p><strong>依赖库( CentOS/RHEL )</strong></p>
</blockquote>
</blockquote>
<ul>
<li>root@Cacti:/opt# <code>yum install -y net-snmp-libs mariadb-connector-c-libs openssl-libs zlib zstd-libs</code></li>
</ul>
<blockquote>
<p>包名对应关系:<br>
libnetsnmp.so.40 → net-snmp-libs<br>
libmariadb.so.3 → mariadb-connector-c-libs<br>
libssl.so.3/libcrypto.so.3 → openssl-libs(CentOS 9+ 版本)<br>
libz.so.1 → zlib<br>
libzstd.so.1 → zstd-libs</p>
</blockquote>
<hr>
<p><strong>5、验证安装是否成功</strong></p>
<blockquote>
<p>在目标系统执行以下命令,若能列出库的路径,说明安装成功:</p>
</blockquote>
<pre><code># 检查libnetsnmp.so.40
ldconfig -p | grep libnetsnmp.so.40

# 检查libmariadb.so.3
ldconfig -p | grep libmariadb.so.3
</code></pre>
<p>补充:查找 spine 依赖的物理库的方法</p>
<pre><code># 查找指定库的物理路径
find /lib /usr/lib /usr/local/lib -name "libnetsnmp.so.40"
</code></pre>
<p><strong>6、复制文件并配置</strong>(配置等文件网盘备份https://xyweb.lanzout.com/iUS693fncq6b)</p>
<pre><code># 创建目录结构
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 Jan9 09:47 /usr/local/spine/bin/spine
4.0K -rw-r--r-- 1 root root 3.6K Jan9 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
</code></pre>
<p><strong>7、测试是否可用</strong></p>
<pre><code># 验证版本
/usr/local/spine/bin/spine -v

# 验证配置(无报错即正常)
/usr/local/spine/bin/spine -C /usr/local/spine/etc/spine.conf
</code></pre>
<hr>
<p><strong>在Cacti上配置:</strong><br>
<img src="https://img2024.cnblogs.com/blog/2522594/202601/2522594-20260109120623628-558671958.png"></p>
<p><img src="https://img2024.cnblogs.com/blog/2522594/202601/2522594-20260109121354215-1066992815.png"></p>
<hr>
<h3 id="尚未实际测试复制过去的二进制文件等是否可用此笔记待完善">尚未实际测试复制过去的二进制文件等是否可用,此笔记待完善</h3>


</div>
<div id="MySignature" role="contentinfo">
    <p>本文来自博客园,作者:Ojox,转载请注明原文链接:https://www.cnblogs.com/Ojox/p/19460529</p><br><br>
来源:https://www.cnblogs.com/Ojox/p/19460529
頁: [1]
查看完整版本: 一个编译好的Cacti-spine文件,版本1.2.20,用于Linux