rpm --nodeps——坑爹的参数啊

最近都在virtualbox上折腾虚拟机,只是想把他最大化,看起来跟真实的操作系统一样(本人比较追求完美),但是安装virtualbox的增强功能总是报错,原因在于有关内核的几个包的版本不一致,这是就想到了升级版本为统一的,但是升级之后,发现可以同时存在,不知道为什么增强go能就是死活安装不上,因此就直接rpm -e 加对应的软件包,结果删着删着,发现依赖太多了,那么有没有顺带删除依赖呢?--nodeps就就出现了。加上它顺利删除,然后增强工具安装也成功了,最大化,用着很爽,但是一重启,发现起不来了哭,我想应该就是这个命令的导致的,结果可想而知了(本人评估了下重新安装和自己去探索所谓的救援模式的所用的时间,决定重新安装了)。

 

正文:

利用yum管理软件时,安装很方便,可以自动找寻安装此软件需要的依赖,前提是你的源要配置妥当,不然也是没有多大用处的。如果源找不到合适的,执行“yum install 软件名”就会报错,那么此时能想到的就是挨个下载对应的rpm包,然后用rpm -hiv rpm包名 的方式进行安装,如果安装此rpm又依赖其他的rpm包的话,那就得挨个找他们的依赖,少的话,还好,多了的话,能把人烦死。

 

同样,卸载rpm包的命令也很简单,”rpm -e 对应的包名“,如果不知道的话,可以用”rpm -qa|grep 关键字“查询。但是卸载的时候,如果有其他的包依赖当前包怎么办,单独一个-e参数,提示是不让卸载的,但是加上一个参数"--nodeps",也就是说不检查依赖。这样的话,那些使用该软件包的软件在此之后可能就不能正常工作了。当时自己没有深入思考,加之对这个参数的含义不是很懂,结果搞得系统起不来了。

 

再回来,如果你明确的知道当前包有那些依赖它的话,就直接用rpm -e先删除依赖此包的那些包,然后再删除,如果多的话,就只能写个shell脚本了。

 

PS:本文相当于发泄下了,也让自己记住这个参数的含义,吸取教训吧。参考意义不大。

### 如何使用 `xargs` 和 `rpm -e --nodeps` 批量卸载 RPM 包 在 Linux 中,可以利用 `xargs` 工具配合 `rpm -e --nodeps` 来实现批量删除 RPM 软件包并忽略依赖关系的功能。以下是具体方法: #### 方法描述 通过组合 `rpm` 的查询功能和 `xargs` 的批处理能力,可以高效完成任务。假设目标是要移除位于 `/home/HK/rpm` 下的所有已安装的 RPM 包,则可以通过以下方式操作。 1. **获取要卸载RPM 包列表** 使用 `rpm -qa | grep` 或其他筛选工具找到需要卸载的目标包名称[^3]。 2. **构建命令管道** 将上述结果传递给 `xargs` 并附加参数 `-n 1` 表示每次只传入一个包名作为输入项,再调用带有选项 `--nodeps` 的 `rpm -e` 命令强制卸载这些包而无需考虑其依赖性[^4]。 下面是完整的 Shell 脚本形式展示这一过程: ```bash #!/bin/bash # 定义变量存储路径 RPM_DIR="/home/HK/rpm" # 查询指定目录下的所有 .rpm 文件对应的已安装包名,并将其逐一交给 rpm -e 处理 find ${RPM_DIR} -type f -name "*.rpm" | \ xargs -I {} basename {} ".rpm" | \ xargs -n 1 rpm -e --nodeps ``` 以上脚本首先定位到设定好的 `.rpm` 存储位置 `${RPM_DIR}` ,接着提取文件基础名字去掉扩展部分形成实际可被识别的名字串送给后续环节做进一步动作即逐条执行带参设置成不验证关联性的软件消除指令[^1]。 注意:这种做法虽然简单有效但也存在一定风险因为完全忽略了必要的组件间联系可能导致系统不稳定甚至崩溃所以除非特别必要否则建议谨慎采用此类手段解决常规维护之外的情况[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值