[Linux] 记录一次未遂的事故

一. 前言

这是一个风和日丽的周日早晨, 我打开浏览器, 连上咱们学院服务器上的Rstudio Server准备学习。想到服务端的Rstudio没有客户端那么灵活, 用户不能自己切换所需的R路径(只能让服务器管理员在 /etc/rstudio/rserver.conf 里面修改, 而且是全局修改), 于是我询问神奇的ChatGPT, 看看有没有什么奇技淫巧, 能让我切到自己的Conda里, 用上之前配置好的环境。

二. 事发

很快啊! ChatGPT告诉我, 一个名叫"reticulate"的R包能在Server里设置自己的Conda环境。看到右侧的Packages里的System Library恰好有这个包, 我也没多想, 随手就在Rstudio Server的Console里面输入"library(reticulate)", 回车, 没想到居然报错了?

不过, 有之前debug咱们院Rstudio Server的经验, 我一下子就意识到问题所在: 是这个"libz.so.1"的动态库太老了, 缺东少西的。

可以看到, 原版本是1.2.7, 之后我将它更新到了1.2.13

接下来, 我一顿操作猛如虎, 先 "sudo find / -name libz.so" 看看咱们服务器有没有哪个大佬用户有高版本的libz.so, 要是有就直接"拿来主义", 省得我去网上下载了。挺幸运, 又在lincs那里找到了 (为什么说又? 因为上次调试Rstudio Server找高版本libstdc++.so.6也是在TA那儿找到的)

把lincs的高版本libz.so.1复制到了/usr/lib64之后, 我心里一阵窃喜: "没想到这么简单, 马上就能成功咯!" 接着就删掉了原来的软链接——"sudo rm libz.so.1", 准备建立新的软链接。可是, 当我进行下一步的时候, 事情开始变得不对劲了起来:

纳尼? 我的sudo之力怎么消失了??? 定睛一看: "sudo: unable to load /usr/libexec/sudo/sudoers.so: libz.so.1: cannot open shared object file: No such file or directory" 没想到sudo居然需要我刚刚删掉软链接的动态库!!!

顿时, 我意识到自己可能闯祸了, 但倒也不是很慌, 因为我也想到了解决方法: 让root上号, 链接一下不就好了嘛~ 于是我在QQ上联系了导师, 说明相关情况, 请求她动用 "真·root之力" 救场。没想到, 导师发过来一张截图, 让我瞬间冷汗直流 : 

万万没想到SSH也需要这个libz动态库, 所以她登不上号了!!!!!! 啊啊啊啊啊啊啊啊

导师叫我别慌, 问我有没有退出登录。幸好, 我没退, 校园网也没抽风。她告诉我root密码, 我双手颤巍巍地将它输到了su里面:

(当时急得把ln里面的文件顺序弄颠倒了...)

链接结束后退出root, 再次输入sudo。看到这熟悉的用法, 说明我的sudo之力又回来咯! 导师也能正常连上服务器了。

三. 后记

幸好当时没有退出SSH, 要是我当时退出了, 补救措施将十分麻烦: 打电话给学校信网中心, 然后肉身进入机房, 外接显示屏操作服务器......(嘶,怎么有点像EVA里面操作NERV的大脑MAGI呢?)

经历了本次未遂的事故, 我明白了:

1. 系统里的动态库能不改尽量别改

2. 尽量在自己Conda里面用R包

3. 出事了千万别慌, 尤其是别退出SSH界面


其实"reticulate"这个R包只是把Python接入R里面......文章开头的需求只需要.libPaths("/public/workspace/stu22230111/miniconda3/envs/r4.3.1/lib/R/library")就行了......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值