iNodeClient在Ubuntu 10.04时,直接运行install.sh后便安装成功。在Ubuntu 12.04的版本,安装后双击iNodeClient后却无法运行。重装后问题依旧。于是使用命令行来运行。提示说libjpeg.so.62 not found。
于是上网找资料,找到这篇文章,发现文中的方法有点复杂。他的方法除了常规的查找依赖性、定位库文件,还需要把库文件复制到当前目录,再建立软链接,略显繁琐。其实只要直接建立软链接即可,不需要做复制的动作。另外,作者过度使用sudo,这是不太好的习惯哦。
总结一下我的做法先。
1. 发现不满足的依赖性。假设iNode安装的目录是<inode>:
www.linuxidc.com @linuxidc~ ldd <inode>/iNodeClient | grep ‘not found’
这行代码的作用有二。一是寻找运行iNodeClient时不满足的依赖关系;二是看iNodeClient依赖的库所在的位置(因为可能会在多个地方存在不同的库)。在我的机器上,发现有两个库是找不到的,一个是libjpeg.so.62,另一个是libtiff.so.3。链接是这两个库wikipedia的介绍。
另外,发现iNodeClient库依赖都存在于/usr/lib/i386-linux-gnu/这个目录(我安装的是普通的32位版本,其他版本可能不同)。
2. 看本地是否有这些库。因为操作系统版本的更新,附带的库也有可能更新。这会带来库版本名字的改变,而这有可能是依赖性“不满足”的一个原因。这种“不满足”是名字不同带来的,其实较新版本的库是存在的。下面的命令就是查找本机同名库的位置。
www.linuxidc.com @linuxidc~ locate libjpeg
发现本地真的有这些库。并且在/usr/lib/i386-linux-gnu/这个目录下存在。
3. 建立软链接。在/usr/lib/i386-linux-gnu/目录下有两个libjpeg文件,一个是libjpeg.so.8,另一个是libjpeg.so.8.0.2。之前玩过一下LFS,经验告诉我libjpeg.so.8是到libjpeg.so.8.0.2的软链接。建立它可能是为了版本的小更新不会影响程序对库的使用。所以我选择链接到libjpeg.so.8,获取这种小小的便利啦。而这句也是唯一需要用到sudo获取权限的地方。
www.linuxidc.com @linuxidc~ sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so.8 /usr/lib/i386-linux-gnu/libjpeg.so.62
通过这三步,就可以解决第一个库的问题了。
第二个库的解决方法也是一样的。下面是代码。
www.linuxidc.com @linuxidc~ sudo ln -s /usr/lib/i386-linux-gnu/libtiff.so.4 /usr/lib/i386-linux-gnu/libtiff.so.3
把依赖性问题解决完以后,iNodeClient就可以使用了。