第一种方法:简单些,只是操作/var/log/dpkg.log。适合于刚刚安装的软件,操作量小。
代码: 全选
#!/bin/bash
[ -z $1 ] && exit 1;
arg=$1
grep '[0-9]\ install' /var/log/dpkg.log>tmp
find=`awk '$4~/'$arg'/ {print $2}' tmp` [color=red]#不知道awk如何执行{find=$2:0:5}这样的功能,只好输出到find,再有bash处理。[/color]
find=${find:0:5}
dpkg=`awk '$2~/'$find:[0-9][0-9]'/ {print $4} ' tmp` [color=red]#目前只是判断了同一分钟的,需要判断上下2分钟内的。也是不知道awk如何执行{dpkg+=" "$4}这样的功能[/color]
echo sudo apt-get remove --purge $dpkg
第二种方法:由于上面的操作,是读dpkg.log内容,有可能文件内容已经不包含所有包的信息,下面修改为另外一种操作。直接操作/var/lib/dpkg/info/目录。这样可以追溯系统的所有安装的包。exp@eexpress:~$ ./find-install-dpkg-group.sh 囗囗囗
sudo apt-get remove --purge libevent1 囗囗囗囗囗囗囗 囗囗囗囗囗囗 囗囗囗
exp@eexpress:~$ ./find-install-dpkg-group.sh eyed3
sudo apt-get remove --purge python2.4-eyed3 python-eyed3 eyed3
代码: 全选
#!/bin/bash
[ -z $1 ] && echo "输入一个正则表达式参数,指明需要查找的包。本bash将给出与指定包同时安装的那些依赖包的卸载命令。" &&exit 1;
arg=$1
cd /var/lib/dpkg/info/
ls -l -t *.list|awk '$5!=0 {gsub(".list","",$8); print $6"-"$7,$8}'>~/dpkg.list
awk '$2~/'$arg'/' ~/dpkg.list>~/tmp
echo 找到如下结果:
cat ~/tmp
t=`cat ~/tmp|wc -l`
[ $t -eq 0 ] && echo "没有找到任何包" && exit 1;
[ $t -gt 1 ] && echo "找到以上一系列包。但需要确定唯一的一个包。" && exit 1;
echo 可以使用以下命令,卸载全部与 `awk '{print $2}' ~/tmp` 同时安装的依赖的包
find=`awk '{print $1}' ~/tmp`
dpkg=`awk '$1~/'$find'/ {print $2} ' ~/dpkg.list`
echo --------------------------------------------
echo sudo apt-get remove --purge $dpkg
echo --------------------------------------------
cd ~
rm dpkg.list tmp
$ ./find-install-dpkg-group-1.sh eth
找到如下结果:
2006-03-14-05:23 ethtool
可以使用以下命令,卸载全部与 ethtool 同时安装的依赖的包
--------------------------------------------
sudo apt-get remove --purge tcpd ubuntu-keyring reiser4progs reiserfsprogs strace pciutils python netbase netcat net-tools ntpdate whiptail memtest86+ mii-diag libiw28 libsysfs2 libwrap0 lsb-release lsof libpopt0 libreiserfs0.3-0 libldap2 libncursesw5 libnewt0.51 libopencdk8 libtasn1-2 libusb-0.1-4 less libatm1 libgcrypt11 libgpg-error0 liblzo1 iputils-ping jfsutils grepmap ifupdown libgnutls12 libgpmg1 gettext-base eject ethtool libfribidi0 cpio console-common
--------------------------------------------
$ ./find-install-dpkg-group-1.sh amule
找到如下结果:
2006-03-26-18:25 amule
2006-03-26-18:25 amule-utils
找到以上一系列包。但需要确定唯一的一个包。
$ ./find-install-dpkg-group-1.sh amule$ <------使用正则表达式,确定唯一的包
找到如下结果:
2006-03-26-18:25 amule
可以使用以下命令,卸载全部与 amule 同时安装的依赖的包
--------------------------------------------
sudo apt-get remove --purge amule amule-utils
--------------------------------------------