当前位置:首页 » 编程语言 » pythonrpm

pythonrpm

发布时间: 2025-06-10 14:26:58

‘壹’ Linux Centos YUM 与 python 的重装损坏修复记录

系统版本:CentOS 7.4

在尝试安装 Python3 时,不慎删除了 Python2,导致 yum 坏损,Python2 也被移除。经过国内外网络搜索,花费三天时间才解决此问题。

由于本人对 yum 命令和 Python 的了解有限,以下是在处理过程中总结的关键点,供参考:

1. yum 命令由 Python 编写(Python 2),因此没有安装 Python 2 无法使用,通常使用 Python 2.7。

2. Python 2 的安装方法有两种:下载源码编译安装或使用 rpm 命令安装。尝试了多种方法后,最终通过 rpm 安装成功。

3. 在重装 yum 和 Python 之前,请先删除残留文件,参考以下命令:

4. 开始安装前,先下载依赖包。由于没有 yum,需要手动下载,以下为所需包,版本号和文件名可能有所不同,但主名称一致。下载时注意系统版本(含 x86_64 的文件名)。

下载的包如下:

这些文件放置在同一目录下,但仍可能缺少依赖包。可能是版本太新或太旧,导致各种问题。请参考下一步操作。

5. 使用 rpm 命令安装,遇到提示缺少依赖包的错误时,到源镜像中查找所需依赖包,下载到目录中。

6. 如果所有 *.rpm 文件都安装完成后,说明安装已完成,但可能无法使用。由于 yum 是 Python 编写的软件(解释型开发语言可以直接查看源码),因此必须先确保 Python 安装成功后再安装 yum。执行 python -V 大概率不会有问题。如果出现问题,请先解决 rpm 安装 Python2.7 的问题。

如果此时输入 yum 命令,可能会直接报错。错误原因可能如下:

1. 查看 /usr/bin 目录下是否所有 python 命令都存在,执行 ls python* 查看结果,应有 python、python2、python2.7 等命令,可以执行查看是否有问题。如有问题,请先解决 rpm 安装 Python2.7 的问题。

2. 可能是 Python 系统环境变量未设置。请参考以下操作:(非常重要的一步)

如果这一步不正确,会有各种缺少 Python 模块的提示:No mole named xxxxxxx。

3. 以上步骤设置不正确,因此调试了 vi /usr/bin/yum 代码,查看 sys.path 路径。从另一台服务器查看路径后,在 /usr/bin/yum 中增加代码,强制指定目录,如下:

在 import sys 后增加路径,最后两行被注释的 print... 和 exit... 代码用于调试对比目录,可以尝试修改。

4. 将 Python 库路径添加到配置,不知道这一步是否有用,可以尝试。

5. 此时执行 yum 命令时,可能仍会出现相同问题,例如报缺:No mole named sos.plugins 或 from yum import Errors 缺 No mole named Errors 等。在 vi /usr/share/yum-cli/yummain.py 代码中,我在 import yum 后用 print(yum) 打印出来,显示类似以下内容:

会显示 import yum 的文件位置,.pyc 格式文件是做什么的,可以自行搜索。现在这步【【【【很重要】】】,我把这个文件重命名了,然后 yum 命令就恢复了,哈哈。

6. 实际测试发现,yum 命令只恢复了一半,因为各种 yum 命令执行一半时会报错,例如:No mole named urlgrabber.grabber。这是因为另一个地方的环境变量未设置正确。参考第 3 步强制添加的环境变量目录的方法,将 sys.path 添加到该文件:vi /usr/libexec/urlgrabber-ext-down。

7. 此时应该已恢复,使用 python 命令安装 pip 吧。有自动化安装脚本,可以下载。

8. 总结:

1. Python 2.7 是基础,在安装 yum 和 pip 之前必须先解决 Python 问题。安装 Python 的难点在于 rpm 的依赖包;安装 yum 的关键在于系统环境目录的设置,因为 yum 使用到 Python 的模块。

2. 国内找到的解决方案基本相同,但无法解决我的问题。感觉像是疑难杂症。在国外网站上找到解决思路后,感觉过程非常折腾!

‘贰’ 如何编写 RPM 的 spec 文件

深入解析 RPM 的构建指令,一切从 spec 文件开始。-- Ankur Sinha "franciscod"(作者)

上篇文章介绍了源 RPM 的构成,其中 spec 文件是关键。本文将详细探讨,以 fpaste 为例,教你如何编写和理解 spec 文件。首先,理解你要打包的软件是基础,fpaste 是个 Python 单文件脚本,版本可在 Pagure 上查看: pagure.io/releases/fpas...

fpaste 当前版本为 0.3.9.2,你需要熟悉其源文件内容和安装位置。标签如 Name、Version 等在 RPM 中具有特定含义,不能随意编写。特别是对于 fpaste,元数据会显示 RPM 的基本信息。

接下来,我们进入 spec 文件的构建指南。第一部分概述软件的常规信息,包括名称、版本和许可等。第二部分是 %prep 部分,用于准备软件构建,对于 fpaste,仅需提取源文件。这里涉及的宏和标签是 RPM 特有的解释机制。

在 %build 部分,fpaste 由于是纯 Python,无需构建。构建通常会用到特定的构建系统命令,如 Autotools 或 Setuptools。这部分对构建工具的了解至关重要。

然后是 %install 部分,RPM 会创建 buildroot 来隔离安装,确保系统安全。这里安装fpaste 到 %{_bindir} 目录,并使用 Makefile 进行安装。

接下来是 %files 部分,列出要打包的所有文件,以及 %doc 和 %license 命令的文件夹管理。RPM 能自动识别安装的文件,但未列出会提醒用户。

最后是 %changelog,记录所有变更,确保社区了解软件包的更新历史。至此,我们完成了基本的 spec 文件编写,可以构建 RPM 了。

要开始构建,按照上文设置环境,然后创建源 RPM。通过构建过程,你可以看到每个步骤的详细输出,这对于解决构建问题至关重要。

总结,spec 文件是构建 RPM 的核心,虽然本文未详尽阐述,但已给出入门指引。如果你有兴趣贡献,可以从这里加入 Fedora 社区维护者。如有疑问,开发者邮件列表是你的资源。参考资源包括fedoramagazine.org 的文章。

本文由 LCTT 原创编译,Linux中国 推出。

热点内容
安卓游戏哪里比较多 发布:2025-06-11 09:54:04 浏览:363
我的世界服务器怎么进不了啦 发布:2025-06-11 09:44:43 浏览:98
sql对查询结果求和 发布:2025-06-11 09:44:41 浏览:83
python面试题测试 发布:2025-06-11 09:30:02 浏览:595
图片存在数据库 发布:2025-06-11 09:24:18 浏览:80
台式机搭建网络存储 发布:2025-06-11 08:51:43 浏览:468
我的世界网易版有秩序的服务器 发布:2025-06-11 08:50:27 浏览:715
万网云怎么配置数据库 发布:2025-06-11 08:38:10 浏览:39
python手机编译器 发布:2025-06-11 08:22:06 浏览:213
银行存单默认密码是多少 发布:2025-06-11 08:12:16 浏览:795