|
|
发表于 2009-2-25 10:07:34
|
显示全部楼层
Post by veryxp;1949256
即使是 -Sc ,不到万不得已也没必要用,给软件包降级的最好办法就是保留缓存。如果真想省点空间,就写个脚本,保留最近 2 个版本的包。
一个简单的实现,供大家参考。
- #!/bin/bash
- # paclean.sh
- # $1 参数表示保留历史文件的个数
- if [ $# -gt 1 ] ; then
- echo -e " USAGE :\n\t paclean.sh [:digit:]\n"
- elif [ $# -eq 1 ] ; then
- reserve=$1
- else
- reserve=1
- fi
- SRC_DIR=/var/cache/pacman/pkg/
- tmpfile=/tmp/$$.tmpfile
- pacman -Q > $tmpfile
- list=$(ls -l $SRC_DIR | awk '{print $NF}')
- while read soft_name soft_version
- do
- dupl_file=$(echo "$list" | grep ^"${soft_name}"-[0-9] | grep -v $soft_version)
- if [ x"$dupl_file" != x ] ; then # 其实这个判断可有可无,加上这个判断,理论上效率更高
- if [ $reserve -ne 0 ] ; then
- old_file=$(echo "$dupl_file" | sort -g | tail -n $reserve)
- for i in $old_file
- do
- dupl_file=$(echo "$dupl_file" | grep -v $i)
- done
- fi
- dupl_file_list=$(echo $dupl_file_list $dupl_file)
- fi
- done < $tmpfile
- rm $tmpfile
- dupl_file_list=$(echo $dupl_file_list | sed 's/ /\n/g')
- if [ x"$dupl_file_list" != x ] ; then
- echo "$dupl_file_list"
- else
- echo "There's no duplicated package." >& 2
- fi
复制代码
脚本的功能是显示系统中多余的安装包。
使用就直接执行 ./paclean.sh 就好了,默认保留两个版本的安装包。如果想同时删除多余的包,也可以这样- $ cd /var/cache/pacman/pkg
- $ ~/bin/paclean.sh | xargs sudo rm # 这个脚本我放在了 $HOME/bin 目录下
复制代码 执行 ~/bin/paclean.sh 0 的效果类似 pacman -Sc,只不过会多保留一些安装包(曾经安装过的软件包,但现在已经卸载了,可是安装包还在本地硬盘上)。 |
|