目的
想要实现的目的就是将 Easy Connect
这个软件依赖的 Pango
库降级,来达到兼容的目的。
首先看一下 Easy Connect
中 Pango
的依赖关系
$ ldd /usr/share/sangfor/EasyConnect/EasyConnect | grep pango libpangocairo-1.0.so.0 => /lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007faa0e276000) libpango-1.0.so.0 => /lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007faa0e0dc000) libpangoft2-1.0.so.0 => /lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007faa0c432000)点击复制复制失败已复制
可以看到,这三个包的地址都是指向了系统库(因为路径是 /lib/x86_64-linux-gnu/**
)我们要将其降级,是绝对不能动系统库的,需要单独为其指定依赖。
流程
Step1.
准备软件包
首先,去 ubuntu
软件中心将这三个软件包都下载下来
下图是 libpango-1.0-0
的下载页面示意:
这三个包下载下来都是 deb
文件,注意: 千万不要直接安装!
千万不要直接安装!
千万不要直接安装!
将这三个包解压, 不是双击解压!
不是双击解压!
不是双击解压!
,是 右键
--> 提起到此处
进行解压。
解压后能够看到一个以包名命名的文件夹,这里以 libpango-1.0-0
包示意,里面的文件及文件夹应如下所示:
libpango-1.0-0_1.40.14-1ubuntu0.1_amd64 ├── control.tar.xz ├── data.tar.xz └── debian-binary点击复制复制失败已复制
接下来将 data.tar.xz
压缩包解压,会得到一个 data
文件夹,里面的文件及文件夹应如下所示:
data └── usr ├── lib │ └── x86_64-linux-gnu │ ├── libpango-1.0.so.0 -> libpango-1.0.so.0.4000.14 │ └── libpango-1.0.so.0.4000.14 └── share └── doc └── libpango-1.0-0 ├── AUTHORS ├── changelog.Debian.gz ├── copyright ├── NEWS.gz ├── README └── THANKS 6 directories, 8 files点击复制复制失败已复制
其余两个包做同样的解压缩处理。
Step2.
依赖包替换
我们不想更新全局的依赖库,那么就要针对具体软件来进行单独配置。首先要了解软件是如何寻找依赖的,这个请参考上面提到的笔记:Linux系统依赖库
接下来就容易了,只需要将这三个包的 so文件
和 so指向文件
移动到 Easy Connect
的可执行文件安装路径下即可。其安装路径为: /usr/share/sangfor/EasyConnect/
Step3.
查看修改结果
$ ldd /usr/share/sangfor/EasyConnect/EasyConnect | grep pango libpangocairo-1.0.so.0 => /usr/share/sangfor/EasyConnect/libpangocairo-1.0.so.0 (0x00007f9f4dfe8000) libpango-1.0.so.0 => /usr/share/sangfor/EasyConnect/libpango-1.0.so.0 (0x00007f9f4dc50000) libpangoft2-1.0.so.0 => /usr/share/sangfor/EasyConnect/libpangoft2-1.0.so.0 (0x00007f9f4bda9000)点击复制复制失败已复制
可以看到,这三个包的指向已经从 /lib/x86_64-linux-gnu/**
转到了 /usr/share/sangfor/EasyConnect/**
,证明我们调整成功了!