2023-07-31 00:09:46 +08:00

47 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Additional Base Lib 附加基础库
用轻量级容器工具bubblewrap解决GNU/Linux操作系统中常见的glibc不兼容问题。暂时只支持debian系
#### 概述
如果经常在GNU/Linux平台使用非系统软件源内的应用很容易遇到这样的问题
``/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.xx' not found (required by /path/to/xxx``
这是因为程序编译时的使用的glibc高于运行时使用的版本。网上流传的解决方案通常是让你升级系统中的glibc但是由于glibc是GNU/Linux系统中极其重要的组件贸然行事很容易造成系统损坏。尽管确实有一些更合理的解决方法但是他们都比较麻烦。而这个小工具简单快捷方便安装没有任何安全隐患。
#### 许可
ablrun等脚本文件没有许可证限制。附带的glibc等动态库文件都是取自一些GNU/Linux发行版的请遵守相应的许可。
#### 注意事项
1. 只在deepin测试过但应该能在所有debian系发行版上运行。移植到其他发行版平台也很容易。
2. 由于使用了bwrap容器环境因此有些程序不能运行的比如说在程序内部使用了容器技术或者需要挂载文件系统的程序就不行。appimage是例外因为我专门设计了单独的方案去运行他。
3. 在glibc之外还打包了一个libstdc++的动态库,因为这个问题也比较常见。
4. 你可以在使用ablrun的同时使用LD_LIBRARY_PATH环境变量改变动态库寻找的位置解决一些其他动态库问题。
#### 用法
首先需要安装additional-base-lib的debian包请在右侧发行版处下载
`sudo apt install "path/to/package_name.deb"`
此后只需要在出现glibc问题的命令前面加上ablrun和空格即可
`ablrun [命令 [运行选项 ...]]`
卸载:
`sudo apt remove additional-base-lib`
#### 其他资源
最初的发布页面:
https://bbs.deepin.org/post/256555
解决动态库问题的通用解决方法:
https://bbs.deepin.org/post/256081
想要移植程序到其他系统或平台的,可以参考:
https://bbs.deepin.org/post/258721
#### 定制
如果这里发布的deb包不符合你的要求库版本、架构你可以使用make-deb.sh创造你自己的附加基础库。你需要将项目下载到本地然后编辑这个脚本把三个包的下载链接改成你想要的即可。你可以在debian的网站找到各种版本和架构的下载链接https://www.debian.org/distrib/packages 然后在当前目录中执行make-deb.sh即可。他会自动识别软件包的架构并采取相应方案。
需要依赖bash, coreutils, dpkg, dpkg-dev, grep, wget, patchelf