0:直接上结论
删除软链接:直接
例如:libssl.so.10 -> libssl.so.1.1
(1)删除软链接文件名
rm -f libssl.so.10
(2)unlink 文件名
unlink libssl.so.10
注意,上边的方法都是正常的删除软链接方法,不会影响到被关联的文件,但是如果使用方法1如下:
rm -f libssl.so.10 -> libssl.so.1.1
这就是本人犯得严重错误,将导致被关联的原文件libssl.so.1.1也被同时清空,变为0字节,因为openssl和ssh登录相关,将原来的动态链接库清空,自然影响到了后续登录,从而服务器重启后直接失联。
1:背景描述
想要在一台P4的服务器上部署服务,但是服务本身所依赖的openssl版本比较低,当前服务器上原生带的版本较高,且不向下兼容,导致我不得不降级来适配。一些报错信息如下:
2:问题出现过程
起初因为当前服务器有其他版本的动态链接库,没想到高版本不向下兼容的问题,图省事,直接加个软链接指向这个缺少的libssl.so.10,如下
ln -s libssl.so.1.0.2 libssl.so.10
ln -s libcrypto.so.1.0.2 libcrypto.so.10
结果问题没有解决,问题指向了当前高版本不兼容我的服务依赖的版本。因此我决定降版本
降版本前,清理下刚刚创建的无效的软链接,注意,下面的是错误示范:
rm -f libssl.so.10 -> libssl.so.1.0.2
rm -f libcrypto.so.10 -> libcrypto.so.1.0.2
# 错误在于将关联的原文件内容也一并影响到了,被清空了
再粘贴一遍正常操作,只需要删除关联后生成的新文件即可:
rm -f libssl.so.10
rm -f libcrypto.so.10
wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1e.tar.gz
tar -zxvf openssl-1.0.1e.tar.gz
cd openssl-1.0.1e
./config shared zlib-dynamic
make
# 这一步会出现找不到zlib.h。如果出现类似错误,请先sudo apt-get install libz-dev
# 不出意外的话这时候目录里应该出现libssl.so.1.0.0和libcrypto.so.1.0.0
cp libssl.so.1.0.0 libcrypto.so.1.0.0 /lib/x86_64-linux-gnu
cd /lib/x86_64-linux-gnu
sudo ln -s libssl.so.1.0.0 libssl.so.10
sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10
更换完成,最终服务启动正常,但是服务器重启后发现ssh登录不上了,因为自己软链接删除失误导致与ssh关联的旧版本的动态链接库被清空了,变成了0字节。