前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【复】一次搭建 wiki 的悲惨经历

【复】一次搭建 wiki 的悲惨经历

作者头像
sidiot
发布2023-08-31 13:24:49
2280
发布2023-08-31 13:24:49
举报
文章被收录于专栏:技术大杂烩技术大杂烩

前言

想着搭建一个 wiki,将自己本地的 md 都上传到服务器上,来实现远程办公,一切工作平板化,那自然是说干就干;

首选的是 mindoc,因为之前学长也有用过,感觉还可以,事实证明,只是感觉罢了,为了安装这个 mindoc,使得我整个服务器回滚,大无语!

接下来就唠嗑唠嗑;

正文

mindoc 是国内开源的 wiki,因此直接进到 github 上看,github.com/mindoc-org/…

在这里插入图片描述
在这里插入图片描述

其实开发文档也给了注意,我的服务器恰巧就是 CentOS7...,稳重起见,事先也查了关于 CentOS 安装 mindoc 的资料,看着大家都能成功搭建,我也就头铁硬上了;

好家伙,不负所望,报错了,version GLIBC_2.28 not found (required by ./mindoc_linux_amd64) ,这也是悲剧开始的地方😭

少了个 GLIBC_2.28,那咱就安呗,即使在文献检索的时候也有看到有风险要慎重,但当时没有在意,头铁直接上了,好家伙,搞到一半直接被拒绝远程连接了,又无法对这段进行回滚,只能通过以前的快照回滚了🙃

这一回滚,就只剩点基础环境了,真是令人悲伤;

然鹅事情还没结束,

回滚重新配环境这会,我又了解到了一个新东西,glibc-all-in-one ,涵盖了大量的 GLibC,直接 down 就好了;

参考这篇博文的安装教程,以下就简述执行代码:

代码语言:javascript
复制
git clone https://github.com/matrix1001/glibc-all-in-one

# 然后进入 glibc-all-in-one 的文件夹
cd glibc-all-in-one

# 进入文件夹后,执行 update_list,然后会在文件夹内出现 list 和 old_list 两个文件
# 查看两个文件
cat list
# cat old_list

# 输出的内容为可供下载的 glibc 版本
# 执行 download 或者 download_old (具体执行哪个看是在 list 中还是在 list_old 中)
./download xxx

# 下载完以后会出现一个 libs 文件夹,里面存放的就是下载的 glibc 文件夹

这时候就需要另一个工具配合了,patchelf

代码语言:javascript
复制
git clone https://github.com/NixOS/patchelf

cd patchelf

# 执行以下代码
./bootstrap.sh
./configure
make
sudo make install
make check

然后运行下述命令来更改文件的 GLibC:

代码语言:javascript
复制
# patchelf --set-interpreter [你下载的glibc目录下ld文件] --set-rpath [libc的目录] [需要更改的文件]
patchelf —-set-interpreter ~/glibc-all-in-one/libs/2.28-0ubutu11.3_amd64/ld-2.28.so —-set-rpath ~/glibc-all-in-one/libs/2.28-0ubutu11.3_amd64 ‘/home/mindoc/mindoc_linux_amd64’

这时我报了一个错误:

代码语言:javascript
复制
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 

这是因为在这之前我把 gcc 升到了 9.1,但是我并没有更换动态库,才导致的这个问题,说到这个,我安装 gcc9.1 花了一个半小时,却没有用上,难受;

解决方法如下:

代码语言:javascript
复制
# 查找编译 gcc 时生成的最新动态库
find / -name "libstdc++.so*"

# 输出如下(gcc-build 是输出目录,安装时自定义的目录)
/home/gcc-9.1/gcc-build/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
/home/gcc-9.1/gcc-build/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/home/gcc-9.1/gcc-build/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.28  # 最新动态库
…
…

# 将上面的最新动态库 libstdc++.so.6.0.28 复制到 /usr/lib64 目录下:
cp /home/gcc-9.1/gcc-build/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.28 /usr/lib64

# 接下来重建默认库的软连接
cd /usr/lib64
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.28 libstdc++.so.6

# 默认动态库升级完成,运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC

来对比一下更改 GLibC 文件前后状态:

更改前

在这里插入图片描述
在这里插入图片描述

更改后

在这里插入图片描述
在这里插入图片描述

写到这的时候,我才发现我 interpreter 了别的文件,这可能就是导致我最后在初始化 mindoc 的数据库时,出现了段错误;

在查找这个段错误的时候,突然找到了 CentOS 安装 Golang 的姿势,就安装上了 Go,操作如下:

代码语言:javascript
复制
# 版本号根据官网自行修改
# Golang 官网:https://golang.google.cn

wget https://golang.org/dl/go1.15.2.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.15.2.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' > /etc/profile.d/golang.sh
source /etc/profile.d/golang.sh

检验一下是否安装成功了:

代码语言:javascript
复制
go version
go version go1.15.2 linux/amd64

参考教程:www.daniao.org/5094.html

装完 Go 之后,跟着 mindoc 的开发文档装就完事了…

代码语言:javascript
复制
# 克隆源码
git clone https://github.com/mindoc-org/mindoc.git

# 进入解压目录 cd
# go包安装
go mod tidy

# 编译(sqlite需要CGO支持)
go build -ldflags "-w"

# 数据库初始化(此步骤执行之前,需配置`conf/app.conf`)
./mindoc install

# 执行
./mindoc

别忘了配置 app.conf,配个数据库就好了,想改端口的把 port 改一下,同时要把防火墙的端口设置一下~

嗯,就这样十分钟能解决的事情,搞了我一天😵‍💫,还让服务器回滚了🤯  

后记

等我安装完 mindoc 后,学长跟我说 mindoc 不好用,现在转飞书了; 我:???

参考文献

  1. 如何更改linux内程序的glibc文件
  2. 解决类似 /usr/lib64/libstdc++.so.6: version GLIBCXX_3.4.21 not found 的问题
  3. 宝塔面板Linux环境-安装Golang:Go语言环境安装以及程序如何运行
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
  • 后记
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档