# 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等动态库文件源自debian 12，请遵守相应的许可。

#### 注意事项

1. 只在deepin测试过，但应该能在所有debian系发行版上运行。目前只支持amd64，但是移植到其他发行版平台也很容易。
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