我已经与一些需要 的旧软件斗争了一段时间libg2c.so.0
。一个软件需要i386
版本,而另一个软件需要amd64
版本。
我将旧版本添加到我的apt
配置中:
sudo nano /etc/apt/sources.list.d/old-releases.list
deb [trusted=yes] http://old-releases.ubuntu.com/ubuntu hardy universe
deb-src [trusted=yes] http://old-releases.ubuntu.com/ubuntu hardy universe
现在我可以安装其中一个:
sudo apt update
sudo apt install gcc-3.4-base libg2c0
# OR
sudo apt install gcc-3.4-base:i386 libg2c0:i386
但无法同时安装两者。一个会删除另一个。
i386
那么..如果我有 3 个软件,一个与安装的版本兼容,另外 2 个与该amd64
版本兼容,我该如何安装这两个软件呢?
请注意,这不是我的软件,并且重新编译它不是一个选择。
答案1
为了获得库gcc-3.4-base
和libg2c
,我添加了以下源apt
:
deb [trusted=yes] http://old-releases.ubuntu.com/ubuntu hardy universe
deb-src [trusted=yes] http://old-releases.ubuntu.com/ubuntu hardy universe
然后我下载库和依赖树
sudo apt install --download-only gcc-3.4-base libg2c
然后在目录中“解包它们”,例如/usr/local/mylib_i386
:
ls -1 | grep [.]deb >> all_debs.txt
cat all_debs.txt | while read fn; do dpkg-deb -x $fn /usr/local/mylib_i386; done
我有 2 个不同的文件夹用于存放我需要的 i386 和 amd64 旧库。然后,使用 i386 库运行的程序被包装在一个.sh
文件中:
export LD_LIBRARY_PATH=/usr/local/mylib_i386/usr/...:$LD_LIBRARY_PATH
path/to/program
使用...
lib 目录和子目录的路径(LD_LIBRARY_PATH
不查看子目录)。
可能还有其他方法可以做到这一点。