[Seek Help] 怎么通过patchelf将glibc库链接到deb中?
Tofloor
poster avatar
138******55
deepin
2026-04-02 16:39
Author

我下载了snapd 2.74版本的deb(系统为国产电脑统信UOS20),也编译安装了glibc 2.38(安装snapd需要的最低版本),但我试了一些办法,不能通过patchelf --set-rpath 将libc6.so链接到deb中(deb通过dpkg -x 解压),试了几次,重新生成deb安装时始终提示glibc版本低于2.38,也不知道怎么弄?请问有高手指点一下吗?

Reply Favorite View the author
All Replies
avatar
chmod700
deepin
2026-04-02 17:05
#1
It has been deleted!
avatar
米饭虚拟机-nana版
deepin
2026-04-02 17:47
#2

装snap?是有什么软件需要通过snap安装吗?

Reply View the author
avatar
138******55
deepin
2026-04-02 19:31
#3

snap里面的软件都比较新,比如gimp,但统信UOS20 源里面的软件太旧,更新太慢。我就是想研究一下,顺便学习一下技术。

Reply View the author
avatar
comicfans
deepin
2026-04-02 20:30
#4

统信的系统锁比麒麟更严谨一些 强制安装flatpak的时候试过一次 麒麟还可以绕过进程锁安装上 但会跳出桌面

统信应该是按不上 按上默认使用也不是编译路径 就像wine引擎默认低版本python一样

至于软件可以到星火里看看 版本可能会好一点

Reply View the author
avatar
kero990
deepin
2026-04-03 09:23
#5

deb包的依赖信息写在control里,不管包里的程序如何,环境如何,安装deb时只认control信息。

现在的情况是,你编译安装了glibc,但这不是系统的glibc包,dpkg只认安装的deb包,不认你编译的信息。

所以你并不能编译了glibc,安装deb时就不报glibc版本低了,这是两回事,deb包是一个体系,编译安装是另一个体系,不仅仅是debian系这样,任何包管理器,rpm,aur都是不认编译安装的依赖的,整个linux体系里就没有一个自动检测依赖的机制。包管理器只认包。

当然,我认为你直接用dpkg-deb -R完整解压snap,把control信息里的依赖直接删掉就行,反正你安装了新的glibc,肯定是能用的。

最后,gimp官方的appimage是打包了glibc的,任何系统都能直接用,并不需要snap

Reply View the author
avatar
kero990
deepin
2026-04-03 09:33
#6

其实我更倾向于建议你使用flatpak

原因是1.flatpak不会依赖系统glibc,也不存在版本过低无法安装软件,apt install flatpak应该就能用。

2.flatpak有国内网络镜像源,安装软件会快得多。snap在国内使用其实是很慢的,经常卡住安不上。

Reply View the author
avatar
kero990
deepin
2026-04-03 10:19
#7

哦对了,我以前是折腾过snap的,刚找到我当初折腾的笔记

答案是需要使用ubuntu18库里的snap,ubuntu为18.04保留了一版2.58的snap,这版没有任何问题,可以安装任何core

根据你的架构去下载

https://mirrors.bfsu.edu.cn/ubuntu-ports/pool/main/s/snapd/snapd_2.58+18.04.1_arm64.deb

直接用apt安装就行,不需要编译glibc,不需要任何调整,直接用就可以。

实际上无论任何情况,我们都不推荐升级glibc的,极易把系统搞坏并且不可逆(不仅仅是glibc,编译安装的软件一般都没有卸载办法),也就是说你除了重装,不然已经回不到glibc2.28了。

退一步说,用snap就是为了不升级glibc的情况下用各种最新软件。那你升级了glibc还用snap干啥,大部分软件都能直接跑了,还跑啥snap版

Reply View the author
avatar
comicfans
deepin
2026-04-03 10:56
#8
kero990

其实我更倾向于建议你使用flatpak

原因是1.flatpak不会依赖系统glibc,也不存在版本过低无法安装软件,apt install flatpak应该就能用。

2.flatpak有国内网络镜像源,安装软件会快得多。snap在国内使用其实是很慢的,经常卡住安不上。

麒麟和UOS20都没法升级可用的flatpak glibc也是限定低版本 估计得UOS25才能放开

楼主要学习或者习惯安装新版本 不如换deepin25或者debian 如果单位电脑不方便 搞个虚拟机也行

Reply View the author
avatar
138******55
deepin
2026-04-03 13:00
#9
kero990

其实我更倾向于建议你使用flatpak

原因是1.flatpak不会依赖系统glibc,也不存在版本过低无法安装软件,apt install flatpak应该就能用。

2.flatpak有国内网络镜像源,安装软件会快得多。snap在国内使用其实是很慢的,经常卡住安不上。

谢谢,我试试。

Reply View the author
avatar
138******55
deepin
2026-04-03 13:01
#10
kero990

deb包的依赖信息写在control里,不管包里的程序如何,环境如何,安装deb时只认control信息。

现在的情况是,你编译安装了glibc,但这不是系统的glibc包,dpkg只认安装的deb包,不认你编译的信息。

所以你并不能编译了glibc,安装deb时就不报glibc版本低了,这是两回事,deb包是一个体系,编译安装是另一个体系,不仅仅是debian系这样,任何包管理器,rpm,aur都是不认编译安装的依赖的,整个linux体系里就没有一个自动检测依赖的机制。包管理器只认包。

当然,我认为你直接用dpkg-deb -R完整解压snap,把control信息里的依赖直接删掉就行,反正你安装了新的glibc,肯定是能用的。

最后,gimp官方的appimage是打包了glibc的,任何系统都能直接用,并不需要snap

谢谢,我就是想修改deb包中的库链接地址。

Reply View the author
avatar
神末shenmo
deepin
Spark-App
Q&A Team
2026-04-03 13:33
#11

glibc问题可以用ABL解决 https://gitee.com/spark-store-project/additional-base-lib

关于老UOS如何安装新应用,可以试试星火应用商店,安装时选APM包,可以用到最新的应用

Reply View the author
avatar
kero990
deepin
2026-04-03 18:25
#12
comicfans

麒麟和UOS20都没法升级可用的flatpak glibc也是限定低版本 估计得UOS25才能放开

楼主要学习或者习惯安装新版本 不如换deepin25或者debian 如果单位电脑不方便 搞个虚拟机也行

flatpak作者在ubuntu上维护了一个ppa,上面有为18.04编译的,这个可以用

我新写了一个教程

https://bbs.deepin.org/post/296805

Reply View the author
avatar
comicfans
deepin
2026-04-03 20:59
#13
kero990

flatpak作者在ubuntu上维护了一个ppa,上面有为18.04编译的,这个可以用

我新写了一个教程

https://bbs.deepin.org/post/296805

感谢大佬分享 我再去试试 去年刚用信创的时候 强制用ppa在麒麟v10上安装过高版本(ubuntu20.04) 没成功 会跳出桌面 UOS也试过 能装上但安不了软件 路径有异常 后来还用ace试过 但flatpak本就不能在ace下运行 不确定是不是之前编译版本选错了

Reply View the author