解决新版本思源打开提示内核错误或者获取内核服务端口失败

本贴最后更新于 192 天前,其中的信息可能已经事过景迁

故障描述

我更新到 V3.0.12 开始,思源的就提示内核的故障了,我之前也在论坛发了帖子,也看到了很多其他人的帖子,然后也没人理,就自己来解决一下了。有相同故障的可以看看

环境:ubuntu 20.04

image.png

问题分析

我看到是 kernel 的故障就去 kernel 看了看,很明显是 GLIBC 库的问题

TRUMjwdlIJ.png

附一下 linux 下各版本的 glibc 库情况

Ubuntu Debian CentOS Glibc
22.04 - - 2.34
20.04 11 - 2.31
- 10 8 2.28
18.04 - - 2.27
- 9 - 2.24
16.04 - - 2.23
14.04 8 - 2.19
13.04 - 7 2.17
12.04 - - 2.15
- 7 - 2.13
- - 6 2.12

解决方案

方案一:更新 linux 发行版本 (不推荐,主要没必要)

方案二:更新 glibc 库(不推荐,这个升级坑比较多)

方案三:自行编译

这里主要针对方案三展开说说,这里是 siyuan kernel 的问题,就重新编译 kernel 就好了

cd kernel
go version
export GO111MODULE=on
export GOPROXY=https://goproxy.io
export CGO_ENABLED=1

export GOOS=linux
export GOARCH=amd64
go build --tags fts5 -v -o "../app/kernel-linux/SiYuan-Kernel" -ldflags "-s -w" .

编译结果在../app/kernel-linux/SiYuan-Kernel,,然后 go 版本要求是 go1.22.0

image.png

把编译完的 bin,替换的下载的包里就 ok,正常启动,其他的模块的故障也可以自行编译替换

建议

作为思源 3 年的用户了,有一些想法和建议,看看 D 大怎么想

1.像基础库依赖这种,编译的版本可以低一点,很多人还在使用 ubuntu 18,那么他们除了自己编译,不然没有办法使用。很多时候,一些基础库,没办法说更新就更新,思源的更新直接导致一个 linux 大版本下无法使用,而且更新的必要性是什么

2.很多的策略的更新我觉得比较随意,没有合理的测试验证,像之前同步机制变化,作为一个商用软件了,合理的向上兼容是很重要的

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22346 引用 • 89408 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250

    感谢反馈,升级并不是随意而为,主要是因为一些依赖已经不支持(比如前端 pnpm node 版本问题),所以只能升级到新版操作系统后编译,在选择的时候我们也考虑了 glibc 的兼容情况,所以选择的是两年前的 22.04,不过目前看来还是有较多兼容问题,下个版本我们使用 Ubuntu 20.04 编译吧,谢谢 Issue #11417 · siyuan-note/siyuan

    2 回复
  • 其他回帖
  • ebird98 1 赞同

    弄两个 docker container,一个搞最新的,叫标准版,一个搞旧的,叫 compat 版 😳

  • 88250

    我记得是 Ubuntu 18 ,其他细节你可以参考 GitHub 仓库当时版本的源码,package.json 里有 pnpm 的版本,go.mod 里有 go 的版本。

  • 查看全部回帖