YUM报错No module named yum处理

news2024/11/16 11:32:35

一、问题描述

在这里插入图片描述

某次GreenPlum集群部署过程中,现场人员反馈,yum命令无法使用了,执行报错:No module named yum,如下所示:

在这里插入图片描述
相关资料:YUM

二、问题分析处理

2.1 YUM的本质

yum命令本质上是属于python的一个模块,打开/usr/bin/yum,会发现第一行命令#!/usr/bin/python,即它执行器/解析器是python,并且导入了yum模块。而python有一个非常重要的lib库文件,默认在**/usr/lib64**目录下,全名叫 libpython2.7.so.1.0(对应python2.7),python每次执行首先会调用该lib库,python与lib库是一一对应关系。 正常yum是通过系统自带的python使用的,也就是它需要调用OS自带的python的lib库,yum调用python使用的是绝对路径,它强依赖此python,当yum命令找不到原先它调用的库文件时,就会报如上错误信息,所以我们要做的就是让yum继续能调用原来的python以及原来python的lib库。
在这里插入图片描述

现场GPDB部署后,它自身带了python的2.7和3.4版本和相应库文件,一旦配置了全局环境变量,必然修改了python库或执行文件路径,导致yum调用失败报错。现场检查环境变量PYYHONHOME也可知;
在这里插入图片描述
在这里插入图片描述
针对上述问题,注释环境变量配置,注销后重新打开即可

2.2、升级python或使用高版本注意

可惜并未找到相关资料说明,yum有配置lib库文件路径的地方,它还是在默认路径中查找lib库文件;那么,当我们升级完python后,lib库文件更新,我们就需要给yum配置额外的lib库文件路径或将旧的库文件添加到新的库文件中,配置方法如下:

1)新增配置lib库路径,通过配置LD_LIBRARY_PATH全局环境变量来实现

LD_LIBRARY_PATH是用来指定查找共享库(动态链接库)时除了默认路径(/lib and /usr/lib)之外的其他路径。我们可将新的库文件目录设置到LD_LIBRARY_PATH中来让系统找到;

vim /etc/bashrc  #或/etc/profile
export LD_LIBRARY_PATH=/usr/local/python2.7.15/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/python2.7.15/bin:$PATH

#或
cp /usr/lib64/libpython2.7.so.1.0.bak /usr/local/python2.7.5/lib/libpython2.7.so.1.0
mv /usr/bin/yum /usr/bin/yum-exec #重命名

#新建/usr/bin/yum文件,内容如下: 
#$@和$*都表示命令行所有的参数(不包含$0),但是$*将命令行所有的参数看成一个整体,而$@则区分各个参数
#!/bin/bash
export LD_LIBRARY_PATH=/usr/local/python2.7.5/lib/
/usr/bin/yum-exec $*

#添加可执行权限:
chmod +x /usr/bin/yum
#检查yum是否已经可用
yum list installed
yum --version

知识回顾:

1、$#:表示执行脚本传入参数的个数

2、$*:表示执行脚本传入参数的列表(不包括$0)

3、$$:表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)

4、$!:Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)

5、$@:表示获取执行脚本传入的所有参数

6、$0:表示执行的脚本名称

7、$1:表示第一个参数

9、$?:表示脚本执行的状态,0表示正常,其他表示错误

2)替换文件(推荐)

# 备份原来的lib库文件
mv /usr/lib64/libpython2.7.so.1.0 /usr/lib64/libpython2.7.so.1.0.bak
# 将python的bin目录加入到PATH中
echo 'export PATH=/usr/local/python2.7.15/bin:$PATH' >> /etc/profile
# 将新的lib库文件拷贝至/usr/lib64下
cp /usr/local/python2.7.15/lib/libpython2.7.so.1.0 /usr/lib64/
source /etc/profile

三、附录

3.1、 LIBRARY_PATH 和 LD_LIBRARY_PATH

LIBRARY_PATH is used by gcc before compilation to search for directories containing libraries that need to be linked to your program.程序编译期间查找动态链接库时指定查找共享库的路径

LD_LIBRARY_PATH is used by your program to search for directories containing the libraries after it has been successfully compiled and linked.程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/623536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

泛微信创办公平台,低代码构建丰富应用,满足多种需求

信创已经成为了国家的战略规划,自2022年起,国家已全面推动国资企业的信创改造工作,要求到2027年底,对综合办公、经营管理、生产运营等系统实现“应替尽替、能替则替”。其中,门户、OA、邮件、档案、党群、纪检监察等综…

7年时间,从功能测试到测试开发,和大家聊聊如何突破职业瓶颈?少走弯路

突破自己的技术瓶颈并不是一蹴而就,还是需要看清楚一些东西,这里也有一些经验和见解跟大家分享一下。同样是职场人士,我也有我的经历和故事。在工作期间,我有过2年加薪5次的小小“战绩”(同期进入公司的员工&#xff0…

28岁,从字节退休了···

大厂一直是每个程序员都向往职业目标,大厂意味着薪资高、福利好、倍有面儿,而且发展空间也大。甚至有人调侃不想进大厂的程序员不是好程序员。 而在网上,也有各个网友分享自己在大厂的经历,在某平台还有一个近2600万浏览的话题&a…

度晓晓再战高考:百度“AI伙伴”助阵,人均学霸时代来了

6月7日,高考首日,AI 挑战高考语文的新闻刷屏。 在一场关于高考直播的中,百度搜索正在内测的“AI 伙伴”现场挑战高考语文考试,包括作文、微写作、古诗词赏析、文言文翻译、阅读填空等题型。一篇文言文作文甚至迷惑了资深语文老师庄…

永善公司招聘网络红人主播,高薪招募线上策略娱乐主播

永善公司招聘网络红人主播,高薪招募线上策略娱乐主播#主播#高薪职业#直播 招聘 公司直招网络主播多名! 直播平台:抖音、酷狗 不收任何费用 没有经验也没有关系只要你有梦想,只要你肯努力并 且有一颗想发大财的野心&#xff…

父母在家千万注意别打开“共享屏幕”,银行卡里的钱一秒被转走......

打开屏幕共享,差点直接被转账 今天和爸妈聊天端午回家的事情,突然说到最近AI诈骗的事情,千叮咛万嘱咐说要对方说方言才行,让他们充分了解一下现在骗子诈骗的手段,顺便也找了一下骗子还有什么其他的手段,打…

【Clickhouse】ReplaceingMergeTree引擎final实现合并去重探索 | 京东云技术团队

前言 在OLAP实践中,在有数据更新的场景中,比如存储订单数据,我们经常会用到ReplaceingMergeTree引擎来去重数据,以获取数据的最新状态。但是ReplaceingMergeTree引擎实现数据的去重合并的操作是异步的,这样在实际查询…

人事项目开发记录2

项目构建 前端项目构建 Vue项目使用webpack来构建。首先确保本地已经安装了NodeJS,然后在CMD中执行如下命令,可以创建并启动一个名为vuehr的前端项目: 在执行“vue init webpack vuehr”命令时,会要求依次输入项目的基本信息&…

核心领域的数字基建梳理

数字基建:新基建的核心 数字基建是数字经济发展的重要底座,《“十四五”数字经济发展规划》的首要重要任务就是“优化升级数字基础设施”,并提出要建设高速泛在、天地一体、云网融合、智能敏捷、绿色低碳、安全可控的智能化综合性数字信息基…

如何有效避免项目需求蔓延?

如何有效避免项目需求蔓延?6种措施: 1、确定项目范围 (1)确定范围基线 在项目目标明确的基础上,所有干系人在完全了解项目需求后,建立需求范围基线(项目范围说明书、工作分解结构WBS、WBS字典&a…

关于矿井地面电力综合自动化系统的研究与产品选型

摘要:煤矿供电系统是煤矿生产的重要动力保障 , 一旦电力中断 , 生产将被迫停止 , 同时停电后容易发生瓦斯积聚爆炸、淹井等恶性事故,现有配电室采用不同厂商的保护装 置产品,没有形成有效的监控配电系统,不便于管理和实现无人值守…

CSS中scope和scoped区别

前言 在css的发展中,涌现了大量的新的特性和专有名词。 scope scope 是 CSS 中的一个伪类选择器,表示当前规则所在元素,它可以用于限定元素选择器的范围。在常规的 CSS 中,所有的选择器都是全局的,即它们适用于文档…

Mybatis的parameterType造成线程阻塞问题分析 | 京东云技术团队

一、前言 最近在新发布某个项目上线时,每次重启都会收到机器的 CPU 使用率告警,查看对应监控,持续时长达 5 分钟,对于服务重启有很大风险。而该项目有非常多 Consumer 消费,服务启动后会有大量线程去拉取消息处理逻辑…

【网络安全】学习路线和资料分享

一.自己对网络安全的理解 安全其实有很多个方向,从大的方面来说,也就是测试和开发。测试,细分下来,又有渗透(也就是所谓的web),逆向(也就是所谓的二进制,主要是代码审计方…

uniapp(四) 之还原网络请求以及接口封装

通过uniapp官网,不难发现简单的接口请求格式 uni.request({url: https://www.example.com/request, //仅为示例,并非真实接口地址。data: {text: uni.request},header: {custom-header: hello //自定义请求头信息},success: (res) > {console.log(re…

零基础想学黑客?推荐你了解一下Kali Linux!(建议收藏)

最近好多朋友问我:不会编程,英语也不好,dos命令也记不住,能学习黑客技术么? 我可以明确告诉大家,可以的! 相信每一个少年心中,曾经都有过一个黑客梦! 有人觉得黑客霸气…

5.1 合并数据

5.1 合并数据 5.1.1 堆叠合并数据1、横向堆叠 concat()2、纵向堆叠 concat()和append() 5.1.2 主键合并数据 merge()和join()5.1.3 重叠合并数据 combine_first() 5.1.1 堆叠合并数据 堆叠就是简单地把两个表拼在一起,也被称作轴向连接、绑定或连接。依照连接轴的方…

U盘 PE系统制作教程(附pe启动教程+获取方式)

目录 软件介绍: 软件安装步骤: 01 02 03 04 05 06 07 08 09 附:u盘pe系统启动教程 01 02 03 软件介绍: 微 PE 工具箱 v2.2 是一款免费纯净、无捆绑软件、体积小巧、功能齐全的PE 系统,微PE工具箱 v2.2 …

正大国际期货与国内期货的区别

一:定义 国际期货:是指交易所建立在中国大陆以外的期货交易,以美国,英国,新加坡等交易所内的产品为常见交易期货合约。有些期货合约品种会对国内期货价格变动产生影响,所以国内投资者可以参考国际期货行情…

科普:python怎么添加命令行参数

目录 1. 安装click2. 官方例子,快速入门3. 使用Group实现命令选择4. 使用click.option对指定命令的入参进行详细配置4.1 指定 type4.1.1 指定type是某种数据类型4.1.2 指定type限定可选值4.1.3 指定type限定参数的范围 4.2 指定命令行参数接收的值的个数4.3 输入密码…