想升级 glic 的,结果先卸载了原先的,现在命令全都不能用了。。。 啊啊啊啊,怎么办呀?
[root@localhost gettext-0.18.1.1]# rpm -e --nodeps glibc-2.12-1.192.el6.x86_64 warning: /etc/ld.so.conf saved as /etc/ld.so.conf.rpmsave warning: %postun(glibc-2.12-1.192.el6.x86_64) scriptlet failed, exit status 127
[root@localhost gettext-0.18.1.1]# ls -bash: /bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
[root@localhost gettext-0.18.1.1]# ls -bash: /bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
[root@localhost gettext-0.18.1.1]# rpm -ivh glibc-2.15-60.el6.x86_64.rpm -bash: /bin/rpm: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
[root@localhost gettext-0.18.1.1]# cp /etc/ld.so.conf.rpmsave /etc/ld.so.conf -bash: /bin/cp: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
[root@localhost gettext-0.18.1.1]# ldconfig -bash: /sbin/ldconfig: No such file or directory
[root@localhost gettext-0.18.1.1]# l Display all 133 possibilities? (y or n)
[root@localhost gettext-0.18.1.1]# ln /etc/ld.so.conf.rpmsave /etc/ld.so.conf -bash: /bin/ln: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
[root@localhost gettext-0.18.1.1]#
1
612 OP 只剩下本地一个 ssh 连接了,新建连接都连不上了。。。。
|
2
EricInBj 2017-04-20 11:31:04 +08:00
同情&关注
|
3
knva 2017-04-20 11:31:51 +08:00
如果.还能连上 sftp 的话,下载一个 glibc 替换.也许还有救
|
4
dzxx36gyy 2017-04-20 11:31:59 +08:00 via Android
活着不好吗……
|
5
ldbC5uTBj11yaeh5 2017-04-20 11:32:30 +08:00 4
|
7
ldbC5uTBj11yaeh5 2017-04-20 11:37:05 +08:00
然后我继续观察 V2EX 小学生如何自作聪明的提出自己的方案,(笑
|
8
kokutou 2017-04-20 11:40:19 +08:00 via Android
busybox...
这玩意好牛逼。。。 |
9
nfroot 2017-04-20 11:45:33 +08:00
楼主也没说是 VPS ,还是杜甫,还是能接触到的物理机器
Windows 用户表示只要你能接触到物理机,就能存文件进去,其他都不是问题吧 |
10
holyzhou 2017-04-20 12:16:19 +08:00
远程我估计你是没戏了 这种情况大多还是需要依赖外部启动的方式来解决。讲一下对于物理机的修复方式,非 rpm 包管理的 linux 启动盘,解压相同版本 rpm ,打成 tar 包后,然后解包到挂载后的根目录。 rpm 系的启动盘,直接把这个 rpm 包安装到挂载的根目录下(关键为 rpm 的 root 参数)
|
12
xss 2017-04-20 12:22:36 +08:00
做得一手好死....
要么用光盘引导修复 要么想办法弄个 busybox 上去修复喽... |
13
treo 2017-04-20 12:26:08 +08:00 1
挂载相应系统的 iso 引导后修复就行了, kvm 架构的 vps 都可以挂 iso , vps 服务商没提供选项就发 ticket
|
14
liuqhang 2017-04-20 12:32:29 +08:00
就用 5L 的文章里面的方案。挺好的。帮你总结一下。
|
15
sgissb1 2017-04-20 12:35:11 +08:00
这就是 windows 和 linux 最大的区别:
Windows File Protection xp 以上的系统,在拿不到特权(挂入内核)的情况下,基本是动不了受保护的部分文件区域的。而大部分发行版本的 linux 在这块的管理上。。。。松散。 看以后 windows 阵营和 linux 阵营怎么互怼(商业度高的 linux 除外哈)。 哥们要么弄个 glibc 放进去,要么重装 base system/kernel system 部分?(不了解 linux 里面叫什么) |
16
okudayukiko0 2017-04-20 12:46:29 +08:00 via iPhone
用 Linux 安装盘的恢复,安装 glibc 。
|
17
liuqhang 2017-04-20 12:50:32 +08:00 1
1.找一个静态链接的 busybox 然后用 xxd 或 hexdump 查看二进制数据。
2.把上一步的数据拆解成数条“ printf '...' >> file ”这样的语句,这样复制到 shell 里面执行就相当于拷贝文件了。 3.用上一步描述的方式把 busybox 写到 /bin/cp 里面, cp 就复活了。然后 “ cp /bin/cp /bin/ln ”, 这样 ln 也就复活了,同理可以恢复其他命令。 4.用上一步恢复的命令恢复 glibc 。 |
20
liuqhang 2017-04-20 13:06:10 +08:00
@choury 我是把 5L 发的链接里面的方案总结了一下,这里描述错了,意思是直接复制到仅存的那个 ssh 连接里面执行就好了, printf 是 bash 的内部命令 glibc 没了还可以用。
|
22
eccstartup 2017-04-20 13:11:55 +08:00 via iPhone
是时候开发一个不依赖 glibc 的应急工具了
|
23
palytoxin 2017-04-20 13:12:36 +08:00 via iPhone
@jigloo 我想问问, busybox 进去以后怎么修复,回复 so,然后 rpm glibc 强制安装?
|
25
doubleflower 2017-04-20 13:17:07 +08:00
本地的话直接用个启动盘 mount 系统盘手工装一下 glibc 先启动起来再安装 glibc 。
archlinux 的话直接可以在启动盘里安装包到目标系统。 |
27
liuqhang 2017-04-20 13:22:14 +08:00
@612 第一步第二步做的事情,实际上就是把 cp 一个静态编译的 busybox 并且覆盖 /bin/cp 。
但是由于 cp 以其他相关命令没法用,所以原文作者采用了 hexdump 查看二进制然后 printf 的方式来达到复制 busybox 的目的。 |
29
sgissb1 2017-04-20 13:31:30 +08:00
@k9982874 你这言论好神奇。有那个 linux 发行商或者社区可以证实你的说法吗?
至于 win 为啥有 Windows File Protection 这个倒确实是有出处,但并非为了照顾小白。 |
30
danielmiao 2017-04-20 13:39:07 +08:00
@k9982874 mac 也有 System Integrity Protection ...所以你这言论好神奇。
|
31
ldbC5uTBj11yaeh5 2017-04-20 13:43:22 +08:00 1
楼主你先执行下这个命令
python -c 'import sys,re; print "\n\n".join(["printf \"%s\" >>/bin/cp" % "".join("\\x%X" % ord(c) for c in x) for x in re.findall(r"(?s).{1,20480}", open(sys.argv[1]).read())])' busybox-x86_64 可以把 busybox-x86_64 分割成多个 printf 命令,然后挨个粘贴执行吧。 |
33
linhua 2017-04-20 13:54:34 +08:00
@612
再次 SSH 应该只是 不能 打开 bash ( shell ) sftp 和 scp 命令应该还是可以用的吧,毕竟 服务器端的 SSH server 一直在运行,没有停掉(只要不额外打开其他程序) |
37
voocel 2017-04-20 14:55:17 +08:00
活着就好
|
38
linhua 2017-04-20 15:04:19 +08:00
|
39
612 OP |
41
yanyanjia 2017-04-20 16:05:12 +08:00
我想起了我自己的经历,曾经用 sudo 命令搞掉了 glibc ……
|
42
JJaicmkmy 2017-04-20 16:10:14 +08:00
ssh 登陆不上去, scp 总可以用吧?
|
43
VYSE 2017-04-20 16:11:02 +08:00 via Android 1
回答 glibc 删除为啥 sshd 还在
因为文件链接断了,但 inode 还在 这时就要先找本机能用的 command |
44
myself659410 2017-04-20 16:21:28 +08:00
|
45
iot 2017-04-20 16:29:00 +08:00
关爱的眼神
|
47
treo 2017-04-20 18:30:31 +08:00
什么牌子的服务器?没有 HP iLO 、 dell iDRAC 之类的远控吗
|
48
hanxiV2EX 2017-04-20 18:55:19 +08:00 via iPhone
装个 docker ,只玩虚拟机。
|
49
FifiLyu 2017-04-20 19:47:33 +08:00
|
50
acdfjelxe 2017-04-20 19:57:32 +08:00 via Android
Glibc 如此基础的东西都敢删,哇哈哈。
|
51
xuyl 2017-04-20 23:17:13 +08:00
可能比 rm -rf / 还恐怖,我也遇到过一次,为了升级 pcre ,删了系统自带的 pcre ,断了 ssh 后再也连不上了。没办法只能去现场,把丢失的 so 文件一个个拷回去。
|
52
kn007 2017-04-20 23:36:59 +08:00
明明可以共存,却要过河拆桥。
祝楼主顺利恢复物理机吧。 |
53
msg7086 2017-04-21 06:41:07 +08:00
等等, busybox 不是自带的包吗?直接运行 busybox 拿不到命令提示符?
|
54
standin000 2017-04-21 09:26:30 +08:00
刚在 openwrt 碰到, 重新下载 glibc 包,解压,然后 export LD_LIBRARY_PATH= 搞定
|
56
fuxkcsdn 2017-04-21 09:46:20 +08:00
以前遇到类似问题,不过我是 upgrade 时出问题,最后是通过启动盘解决的
|