一句话介绍
自编译的包安装的时候,需要清理之前的安装
否则可能会有冲突
介背景绍
自己在ubuntu编译libvirt的包
安装后报错
排查过程
执行
strings /usr/lib/libvirt.so.0|grep LIBVIRT_PRIVATE_1
结果如下
本人之前的版本是libvirt1.2.12
新编译的版本是libvirt1.2.7
照此看/usr/lib/libvirt.so.0中已经是新包了
但是进程依然去这里寻找1.2.12版本号当然找不到了
因此确认是两个版本之间包出现了混乱
这是UNIX很不好的一点,这么多年了,一直是在低层次上集成系统
多个应用掺杂在一起,没有很好个隔离
解决方法
如果之前版本也是make install的
可以执行make uninstall/distclean/veryclean 等等
如果还不行,只能简单粗暴
find / -name libvirt
whereis libvirt
which libvirtd
找到对应的包全删除
问题解决了没?
没有么?
这么搞,我也没有解决
再看一遍错误信息
这里居然还是引用的老版本
把老版本的so文件删掉,重新make install就可以了
然后记得执行下ldconfig更新链接库
经过验证,如果不删掉的话,每次安装后so.0的软连接都会链接到老版本上
不知道为什么
优化
源码安装的时候,记录日志方便后续分析 make >& LOG_make & make install >& LOG_install &