之前都是直接备份成别的名称不会管它的,刚才看到有 3 个启动方式,如是就删了其中一个,没太注意其他 2 个都是链接删除的哪个的,结果就悲剧了呀!!
重新安装了 python2.7.5, 将新装的 python2.7.5 软连接到 /usr/bin/yum
文件里对应的 python 解释器路径,没能解决
尝试到 centos 网站下载官方( python***-****.rpm )包(一共 6 个包), 在使用 rpm 安装过程中报错了
warning: group mockbuild does not exist - using root
warning: user mockbuild does not exist - using root
软件包并没有安装上,对 linux 不怎么熟, 有大佬指点一下吗?感谢!
今天在看rpm包管理的时候,突然把这个问题修复了,
我之前可能没说清楚, 其实我删的是/usr/bin/python2.7 这个文件之后yum就无法启动了
其实rpm包是可以单独提取这个文件出来的
rpm -qf /usr/bin/python
查询出这个文件的安装包python-2.7.5-68.el7.x86_64
并下载, 因为我删除的是/usr/bin/python2.7
rpm2cpio ./python-2.7.5-68.el7.x86_64.rpm | cpio -idv ./usr/bin/python2.7
将这个源文件包中的python2.7提取出来放到当前目录中
mv ./usr/bin/python2.7 /usr/bin/
再将提取出来的文件移到删除的目录, 可以恢复yum的使用
我刚才把文件又删除之后测试, 恢复后的yum是可以正常使用,其它场景没有测试!
1
alvin666 2018-11-12 16:04:17 +08:00 via Android
去 python 官网下 tar.gz 包,解压,make&&make install
|
3
vissssa 2018-11-12 16:07:18 +08:00
找到 yum 修改第一行的 path 即可
|
4
jiezhi 2018-11-12 16:09:37 +08:00 via iPhone
|
5
yuoboo OP |
7
likuku 2018-11-12 16:17:17 +08:00 via iPhone
节哀顺变,重装 /用快照恢复了事。
你不是需要拯救的手段,你更需要 pyenv 和 virtualenv |
8
yuoboo OP @jiezhi 之前我就是这样做的,今天脑残把自带的直接 python 删了,之后自己装的 python (和自带的版本号是一样) yum 还是报错
|
10
araraloren 2018-11-12 16:43:38 +08:00
都 8102 年了,还有删除自带 python 的
|
11
aaa5838769 2018-11-12 16:46:00 +08:00
安装 2.7.5 修改 yum 配置的路径
|
12
ccl945 2018-11-12 17:16:36 +08:00 via Android
使劲拍拍,重启试试
|
13
whwq2012 2018-11-12 17:17:33 +08:00 via Android
同掉过这个坑的路过
|
14
raysonx 2018-11-12 17:42:20 +08:00 1
YUM 是一个 Python 程序,你删除了系统内置的 Python 当然就不能运行了。更严重的问题是,你系统中还不知道有多少应用程序、第三方库依赖这个 Python 版本,现在它们都无法运行了。不清楚楼主删除系统内置 Python 的原因,猜测这是一个 X-Y 问题( https://coolshell.cn/articles/10804.html )。
再说修复方法: 1. 不要尝试 1 楼所讲的自己编译 Python。因为你的机器几乎肯定没有安装支持的编译工具和依赖,而且就算编译并安装成功了,你系统中已安装的 Python 第三方库可能因版本兼容或者安装位置不同而无法正常运作,而且以后官方源中的所有 python 第三方库及应用可能都无法与你自己安装的 Python 兼容。 2. 如果可能,最简单的方法是备份数据后重装系统。 3. 如果要针对现有版本进行修复,建议使用 rpm 工具重装 Python 解释器。首先你要了解之前系统中的 python 的 rpm 包是哪个,然后重装对应版本完全相同的 RPM 包。可以尝试运行 `rpm -qa | grep python-2`看一下之前系统中安装的 rpm 包名,然后尝试用`rpm -ivh --replacepkgs --replacefiles 文件路径`进行重新安装。`文件路径`可以是本地文件也可以是 URL。 |
15
zxcvsh 2018-11-12 17:46:11 +08:00 via iPhone
从新装一个,你也是心大不知道 yum 基于 py2 吗,你要改好多依赖;如果是服务器最快的方式是恢复
|
16
nicevar 2018-11-12 17:49:48 +08:00
为什么老有人喜欢删这个,有强迫症还是很危险,v 站上隔三差五就有人上来因为删 python 喊救命的
|
17
raysonx 2018-11-12 17:50:59 +08:00 2
楼主惜字如金地连自己敲过的命令或者到底下载了哪些 rpm 包都不愿意讲,怎么让别人帮你?
再谈下面这两句警告( warning 是警告的意思,不是错误!不是错误!不是错误!) warning: group mockbuild does not exist - using root warning: user mockbuild does not exist - using root 解释:mockbuild 是默认用来编译 SRPM 包的用户和用户组。如果系统中不存在,则使用 root 用户或者组,没毛病。 我猜测,楼主在尝试安装 SRPM 包(*.src.rpm 这种格式的文件名),也就是源码包。然而因为你不需要自己去 build Python 的 RPM,所以没有必要安装 SRPM 包。 楼主又说`软件包并没有安装上`,我想知道楼主是怎么得出这个判断的。如果真的安装失败了,请贴错误信息。 |
18
zoroojack 2018-11-12 17:51:58 +08:00
跟我以前一样,不过我是学习的时候发现的,重装系统就完事了,你要是生产环境就麻烦了。不知道啥时候才能更新到 python3,2 看着难受。
|
19
raysonx 2018-11-12 17:54:19 +08:00
@zoroojack RHEL 8/CentOS 8 默认安装的就会是 Python 3 了,而且系统中安装多个不同版本的 python 完全没有冲突,删系统 python 只能解释为强迫症。摊手~
|
20
hei1000 2018-11-12 17:55:12 +08:00
自带的 python 也敢删除,好多软件包依赖它的
|
21
yuoboo OP @raysonx 感谢, 回答这么详情,费心了,其实也没啥,昨天刚买的良心云的服务器,刚开始用,其实最简单的方式就是重装系统,我想尝试修复一下,放弃了, 刚刚重装系统,几分钟就好了!
|
23
raysonx 2018-11-12 18:03:19 +08:00
@yuoboo 如果只是单纯想在 CentOS7 用新版本 Python 的话,建议:
1. 配置 EPEL 源( yum install epel-release 就可以)。EPEL 提供 python3.6 的包,可以使用 `yum install python36` 安装。 2. 或者使用 Docker。 3. 或者自行编译新版本 Python,但请不要覆盖系统自带的版本。 |
24
yuoboo OP |
26
v2dead 2018-11-12 18:12:11 +08:00
当年我一个朋友作死的手法还和楼主不一样,他是自己编译安装了另一个版本的 python 覆盖原来的,然后 yum 不能用,我帮他调试,手工下载各种 rpm 包,手工修复依赖,再多次编译 python 试图恢复。折腾了三四个小时。
推荐最好的做法,直接快照 /重装,完全不要考虑修复的问题。 |
27
lolizeppelin 2018-11-12 18:26:09 +08:00 1
rpm 数据库是 c 写的
这玩意是红帽的, 光装 python 没法和 rpm 数据库互交 光这一个玩意就弄死 yum 了 |
28
lolizeppelin 2018-11-12 18:28:47 +08:00
网上那些一天教人 --force 和--nodeps 的就是坑
依赖都搞不清楚也敢瞎--nodeps 系统不死才怪 老老实实按规范卸载你就知道要卸多少东西才能卸掉系统的 python 了, 你当 rpm 的依赖随便写的? 不按规矩来系统就被搞乱呗 |
29
xxgirl2 2018-11-12 18:43:50 +08:00
我记得 ubuntu 的话如果误炸了什么东西,似乎可以用 live 启动盘切换 sysroot 再用 live 盘里的 apt 装回去,不知道 centos 有没有类似的操作。LZ 可以试着在这方向搜索一下。
|
30
exkernel 2018-11-12 18:45:46 +08:00
activepython 2.7 可救
|
31
likuku 2018-11-12 21:55:12 +08:00 1
@xxgirl2 你想多了,chroot 之后,livecd 环境就已经切到硬盘系统环境了,apt 管理数据库都是硬盘系统的了,和你直接用硬盘系统没差。
|
32
likuku 2018-11-12 21:56:50 +08:00
作有风险的操作之前,一定先作快照,或者全系统 tar 备份。
再次重复,看着系统自带的老旧 python,正确解法是用 pyenv 和 virtualenv |
33
omph 2018-11-12 23:19:40 +08:00
|
34
scukmh 2018-11-12 23:39:17 +08:00
我也干过这种事,没救回来,直接重装了。
|
35
yubxpku 2018-11-13 00:57:22 +08:00 via Android
直接重装吧,自带 python 的依赖关系解除了。重装很难修复,会牵连一堆软件。并不是简单的在 PATH 里加个 bin 就完事的。
|
36
Osk 2018-11-13 01:37:42 +08:00
虽然很不厚道, 笑出声, 哈哈, 不是第一次在 v 站上看到这样作死的了.
来 Arch 邪教吧, pacman 可以静态链接, 再也不怕搞挂了. 就算搞挂了也可以在 live CD 里 pacman/pacstrap 救回来. |
37
cnnblike 2018-11-13 02:40:35 +08:00
我之前也卸载过,我觉得这根本不可耻的,在学习 linux 怎么用的时候,谁没个洁癖发作把所有看不惯的包全删掉的冲动?
最后楼主,恢复非常复杂,建议你直接重装吧 |
38
msg7086 2018-11-13 03:07:15 +08:00 1
rpm 装的包和 make install 装的包是两回事。
另外 Linux 发行版是很忌讳 make install 装包的。没有了包管理,你装的软件是什么版本,打过哪些补丁,影响了哪些系统文件,全都不知道。CentOS 就算要更新,也应该用 EPEL 等第三方软件源来更新。更不要去随便动系统包,什么 libc 之类的,论坛上全是血泪史。 |
39
KasuganoSoras 2018-11-13 04:52:55 +08:00 via Android
你这操作和 yum remove iptables 一样危险。
内置的 Python 动不得,万一搞坏了就很麻烦。 当然我遇到过最恐怖的事情是 C 库坏了,那个才是真的惨 |
41
VisionTheta 2018-11-13 08:27:53 +08:00 via iPhone
因为没有大服务器(centos7)的 root 权限 一直都是手动装包 直到有一天 管理员看我太辛苦 给了我 root 权限 但是他说没啥用 rpm 早被别人玩坏了 现在他也是手动编译源码来装包 我说好呀 有时间鼓捣下 果然 我发现是有人删除了默认的 python2 然后弄了一下午 终于手动重装了 rpm python2 内心 OS: 费我这么大劲 下回一脚踢飞删了 python2 的小婊子 哈哈哈
|
42
yuoboo OP |
43
hasdream 2018-11-13 09:37:50 +08:00
vmware 装一台一样的机器 cd /; tar zcf py.tar.gz usr/lib64/python2.7 usr/bin/python* usr/lib/python2.6
然后把 py.tar.gz 包上传带误删的机器 然后 tar xvf py.tar.gz -C / |
44
hasdream 2018-11-13 09:38:14 +08:00
vmware 装一台一样的机器 cd /; tar zcf py.tar.gz usr/lib64/python2.7 usr/bin/python* usr/lib/python2.7
然后把 py.tar.gz 包上传带误删的机器 然后 tar xvf py.tar.gz -C / |
45
VisionTheta 2018-11-13 11:31:42 +08:00 via iPhone
看到当时的一个笔记 你搜一下 rpm2cpio 应该可以解决的
|
46
zaneenaz 2018-11-13 11:52:56 +08:00 via Android
备份,重装,多踩几次坑就好了。
|
47
yuoboo OP @VisionTheta 谢谢,已经重装系统了
|