[改进版]用ubuntu又想装kde体验的,然后又想删除kde的,看这个了

软件和网站开发以及相关技术探讨
回复
baic
帖子: 166
注册时间: 2006-08-22 23:10

[改进版]用ubuntu又想装kde体验的,然后又想删除kde的,看这个了

#1

帖子 baic » 2009-05-20 9:51

改进版,过滤掉内核不操作,另自动提供删除不使用的内核命令

代码: 全选

#!/usr/bin/env python
#coding:utf-8
import sys
backupfile = 'backup'

def backup():
    import os
    cmd = 'dpkg --get-selections > %s'% backupfile
    os.system( cmd)

def restore():
    import os
    if not os.path.exists( backupfile):
        print '还没备份'
        return
    import tempfile
    tmpf = tempfile.NamedTemporaryFile()
    tmp = tmpf.name
    cmd = 'dpkg --get-selections > %s; diff %s %s | awk \'{if ($1==">"){printf " "$2}}\' | awk \'{printf "sudo apt-get autoremove --purge "$0}\''% ( tmp, backupfile, tmp)#把现在有原来没有的删除,而现在没有原来有的不理采。
    r = os.popen( cmd)
    cmd = r.read()
    cmd = clear_linux_image(cmd)
    if cmd:
        print cmd
        os.system( cmd)
    else: 
        print '没有比备份多安装的软件,不需要恢复。'
    tmpf.close()

def clear_linux_image( txt):
    import re
    #print re.sub(r'linux-headers[^ ]+','','linux-headers-2.6.32-21 linux-headers-2.6.32-21-generic wdfk55 d5')#print wdfk45 d4
    txt = re.sub(r'linux-headers[^ ]+','', txt)
    txt = re.sub(r'linux-image[^ ]+','', txt)
    if txt.strip()=='sudo apt-get autoremove --purge':
        txt=''
    return txt

def info():
    print '备份与恢复'
    print sys.argv[0],'restore'
    print sys.argv[0],'backup'

    import os, re
    cmd = 'dpkg -l |awk \'{printf $2" "}\''
    r = os.popen( cmd)
    cmd = r.read()
    r.close()
    x = re.findall(r'linux-image-(\d[^ ]+)', cmd)
    for i in x:
        print '已安装:',i
    
    n = 'uname -r'
    r = os.popen( n)
    d = r.read()
    r.close()
    print '正在使用:',d
    if len(x)==1:
        print '只有一个内核并正在使用。'
        return
    print '如果要删除不使用的内核:\nsudo apt-get autoremove --purge  ',
    for i in x:
        if i != d[:-1]:
            n = re.findall(r'([\d\.-]+)-',i)[0]
            print ' '.join( re.findall(r'([^ ]+%s+[^ ]*)'%n, cmd)),

if __name__ == '__main__':    
    if len(sys.argv) > 1:
        c = sys.argv[1]
        if c == 'restore':
            restore()
        elif c == 'backup':
            backup()
        else:
            info()
    else:
        info()



试过先备份,安装 kubuntu-desktop,然后恢复。所有kubuntu-desktop相关的193个软件都能删除。

代码: 全选

#!/usr/bin/env python
#coding:utf-8
import sys
backupfile = 'backup'

def backup():
    import os
    cmd = 'dpkg --get-selections > %s'% backupfile
    os.system( cmd)

def restore():
    import os
    if not os.path.exists( backupfile):
        print '还没备份'
        return
    import tempfile
    tmpf = tempfile.NamedTemporaryFile()
    tmp = tmpf.name
    cmd = 'dpkg --get-selections > %s; diff %s %s | awk \'{if ($1==">"){printf " "$2}}\' | awk \'{printf "sudo apt-get autoremove --purge "$0}\''% ( tmp, backupfile, tmp)#把现在有原来没有的删除,而现在没有原来有的不理采。
    r = os.popen( cmd)
    cmd = r.read()
    if cmd:
        print cmd
        os.system( cmd)
    else: 
        print '没有比备份多安装的软件,不需要恢复。'
    tmpf.close()

def info():
    print '备份与恢复'
    print sys.argv[0],'restore'
    print sys.argv[0],'backup'

    
if __name__ == '__main__':    
    if len(sys.argv) > 1:
        c = sys.argv[1]
        if c == 'restore':
            restore()
        elif c == 'backup':
            backup()
        else:
            info()
    else:
        info()
上次由 baic 在 2010-07-13 11:52,总共编辑 2 次。
头像
peachcolor
帖子: 898
注册时间: 2006-05-20 14:03

Re: 用ubuntu又想装kde体验的,然后又想删除kde的,看这个了

#2

帖子 peachcolor » 2009-05-20 10:25

觉得这种东西用python写怪怪的
头像
leeaman
帖子: 30702
注册时间: 2007-02-02 18:14
系统: debian sid

Re: 用ubuntu又想装kde体验的,然后又想删除kde的,看这个了

#4

帖子 leeaman » 2009-05-20 11:04

赞一个~~~
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
头像
想入非非
帖子: 8078
注册时间: 2008-07-14 22:42
来自: Beijing
联系:

Re: 用ubuntu又想装kde体验的,然后又想删除kde的,看这个了

#5

帖子 想入非非 » 2009-05-20 11:31

好东西,以后删除方便多了 :em06
Ubuntu User
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 用ubuntu又想装kde体验的,然后又想删除kde的,看这个了

#6

帖子 eexpress » 2009-05-20 11:32

天啊。一句话的事情。还要py。

aptitude remove ~i"libkde"
● 鸣学
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

Re: 用ubuntu又想装kde体验的,然后又想删除kde的,看这个了

#7

帖子 bones7456 » 2009-05-20 11:34

恩,确实怪怪的
关注我的blog: ε==3
头像
lerosua
论坛版主
帖子: 8455
注册时间: 2007-11-29 9:41
联系:

Re: 用ubuntu又想装kde体验的,然后又想删除kde的,看这个了

#8

帖子 lerosua » 2009-05-20 12:01

这么矛盾的人...
baic
帖子: 166
注册时间: 2006-08-22 23:10

Re: 用ubuntu又想装kde体验的,然后又想删除kde的,看这个了

#9

帖子 baic » 2009-05-20 13:29

谢谢支持。 :em09

除了kde,还有别的软件啊,比如想看看这个又想看另一个,装了又装,
我一般记不住装了什么,有个备份就可以一句话恢复了。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 用ubuntu又想装kde体验的,然后又想删除kde的,看这个了

#10

帖子 eexpress » 2009-05-20 13:56

看/var/log下的
aptitude
dpkg.log
● 鸣学
头像
nuanhuai
帖子: 7813
注册时间: 2009-03-10 13:04

Re: 用ubuntu又想装kde体验的,然后又想删除kde的,看这个了

#11

帖子 nuanhuai » 2009-05-20 14:30

ee 详细说明? :em03
baic
帖子: 166
注册时间: 2006-08-22 23:10

Re: 用ubuntu又想装kde体验的,然后又想删除kde的,看这个了

#12

帖子 baic » 2009-05-21 8:42

eexpress 写了:看/var/log下的
aptitude
dpkg.log
看了下,有点复杂,有删除的,安装的,每个软件N个相关包的
头像
非主流1987
帖子: 427
注册时间: 2008-05-09 23:50

Re: [改进版]用ubuntu又想装kde体验的,然后又想删除kde的,看这个了

#14

帖子 非主流1987 » 2010-07-13 12:21

:em04 好像很有趣的样子~
回复