Linux删除多余的安装包,rpm批量删除安装包

这几天在安装一些软件时,版本总有这样或那样的问题,这就是开源的痛苦之处,总是有版本的问题,很难像windows那样可以很好的兼容,所以常常需要安装和卸载,有时安装了一系列相关的rpm包,卸载却只能一个一个的卸,很烦,所以自己写了个批处理,感觉还蛮好用的,现共享给大家:

#!/bin/bash

#

#  function: batch uninstall rpm packages

#  setup:

#         1. copy the scripts and save as a file, such as: ex.sh

#         2. switch to root user. su - root

#         3. change the file's permission: chmod +x ex.sh

#         3. running the script with no parameter: ./ex.sh

#  runing:

#        uninstall [rpm package name]

#  author: Topurce Zhou (topurce#at#hotmail.com)

#

if [ "$UID" -ne 0 ]

then

echo -e 'must be \E[34m\033[1mroot\033[0m to run this script.'

echo -ne '\E[0m'

exit 67

fi

if [ ! -f /usr/bin/uninstall ]

then

echo "building file..."

scripts="$(cat $0)"

declare -i index=1

cat $0 | while read line

do

if (( index == 19 ))

then

echo 'echo -e "must be \E[34m\033[1mroot\033[0m to run this script."'>>/usr/bin/uninstall

echo 'echo -ne "\E[0m"'>>/usr/bin/uninstall

elif (( index == 23 ))

then

echo 'stips="searching packages for \"$1\":"'>>/usr/bin/uninstall

echo 'usage="usage: $0 \"package name\""'>>/usr/bin/uninstall

elif (( index != 19 && index != 20 && (index<23 || index>52) ))

then

echo $line>>/usr/bin/uninstall

fi

index+=1;

done

chmod +x /usr/bin/uninstall

echo "try \"uninstall [package name]\" again."

exit

fi

stips="searching packages for \"$1\":"

usage="usage: $0 \"rpm package name\""

if [ $# -eq 0 ]

then

echo "$0: no rpm packages given for uninstall."

echo $usage

elif [ $# -gt 1 ]

then

echo $usage

else

echo $stips

rpms="$(rpm -qa | grep $1)"

declare -i count=0

for rpmk in $rpms

do

count+=1

echo "package: $rpmk"

done

if (( count == 0 ))

then

echo "no packages"

exit

fi

echo "packages: $count"

echo

read -p "are you sure you want to uninstall all above packages?(y/n)"

if [[ $REPLY == [Yy] ]]

then

echo "starting to uninstall packages..."

for rpmk in $rpms

do

count+=1

echo "uninstalling package: $rpmk"

rpm -e --nodeps $rpmk

if [ $? -eq 0 ]

then

echo "done"

else

echo "faild to uninstall $rpmk"

fi

done

fi

fi

将上面的代码复制,然后保存到一个文件,并修改文件属性为可执行。然后以root身份执行之后,这个代码会将自己安装到/usr/bin/uninstall

这样,你就可以执行uninstall [包名]  进行批量卸载了,这里的包名是模糊查询,并且在正式卸载之前会提醒你确认的,所以多了一层保护,以免错删。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值