本想打算centos7单机安装openstack(参考https://blog.csdn.net/u012999810/article/details/78210014),在执行packstack --allinone出现facter: error while loading shared libraries: leatherman_curl.so.1.3.0: cannot open shared object file: No such file or directory,经过ldd /usr/bin/facter发现缺少 leatherman_xxx.so.1.3.0库,卸载重装facter,还是一样遇到问题,于是去github下载leatherman动态库,但是没有1.3.0版本的动态库,想着向后兼容的原则,下载最新的动态库应该可以,把所有的 leatherman_xxx.so.1.10.0的动态库软连到 leatherman_xxxx.so.1.3.0,但是又出现boost库的问题,就又去下载boost库,通过yum install boost,结果boost库版本太低,就去下载boost_1_59版本,编译安装。到这里虽然解决动态库问题,但是运行facter直接挂了。
经过上面折腾,发现leatherman还需要1.3.0版本的,但是GitHub上的leatherman的1.3.0没有动态库,需要自己去生成,这里给出了具体动态库生成步骤(可能有其他更好的解决办法,这里没有找到):
1、下载leatherman-1.3.0.tar.gz
2、下载boost_1_59_0.tar.gz的源码
3、解压leatherman-1.3.0.tar.gz并且进入leatherman-1.3.0。
4、执行mkdir build
cd build
cmake3 ..(可能遇到curl的头文件找不到,去下载curl源码,然后编译安装即可)
vim CMakeCache.txt;找到LEATHERMAN_SHARED,修改成为LEATHERMAN_SHARED:BOOL=ON
make ;make install
上面的整个过程可能比较麻烦,这里给出编译好的leatherman-1.3.0动态库,直接拷贝到/usr/lib64/目录下
https://pan.baidu.com/s/1JD48rGZPH0hbZflm3EnQzA
提取码:scmj