删除软件后 GConf 中无用项的清理
{ 撰文/jqxl0205 }
不知道大家有没有这样的经历,删除某个使用 GConf 的软件后,通过 gconf-editor 你会发现在左侧边栏中与它相关的内容仍然存在。
比如我使用 Archlinux 安装了 Compiz 后,它会在 GConf 的 /apps 中生成一些东东。删除 Compiz 后那些东东还是存在于 GConf 中,虽然这不影响使用,但看着还是挺不舒服的。Archlinux 下安装 iBus 然后卸载后也会出现这种情况。(呵呵,删除 ~/.gconf 也不顶用)
通过 Goolge 搜索一番,找到 gconf-cleaner 这个软件(呵呵,估计它已经处于半死不活状态)。怀着试一试的心态 yaourt -S gconf-cleaner 安装了这个软件,可惜使用后还是不能解决上面的问题。
想一想,这种情况肯定是系统某处对那些东西进行了缓存,又 Goolge 之,终于找到一个方法可以解决上面出现的问题(可在 Archlinux 中使用,其他发行版也可,但需要自己更改相应路径)。
方法如下:
#!/bin/bash
rm /etc/gconf/gconf.xml.defaults/*
export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
find /usr/share/gconf/schemas -name "*.schemas" | xargs \
/usr/bin/gconftool-2 --makefile-install-rule > /dev/null
chmod 755 /etc/gconf/gconf.xml.system
PID=`pidof gconfd-2`
if [ ! -z "${PID}" ]; then
kill ${PID}
fi
使用 root 用户运行上述 shell 即可。
{ Thanks jqxl0205. }
Read More:
楼主注意了,你已经有了计算机洁癖,另外附加一点强迫症。。。。
再者,如果删除了软件后又想删除配置的话,应该删除你个人目录里 的gconf吧,如果软件清除以后还在/etc下留下东西的话,这 好像是包的bug吧。。。。
同意楼上
艾,就这样把,反正我不用DE,用wm都是自己写菜单,反正看不到
这么没啥必要吧 ubuntu的apt里面的软件都可以删除etc里面的配置文件的 只要清除用户目录对应的.XXXX文件夹就行了
如果你必须用复杂的操作才能完成简单的任务,那应该想想的是,一定是哪里出问题了。
呃,据我所知,gconf-editor编辑的就是.gconf中的xml文件
gconf 应该被删除掉,搞得像注册表一样。。。GNOME 3 还在讨论中,估计最后还是会保留。 再者,xdg已经定义了一些规范和目录,为什么不用呢?.cache,.local, .config 等。
有时候不同版本的程序在 gconf 上会因为冲突而无法启动,所以这个还是很有用的……不过,chmod 755 这种方法科学么……
gconf应该被删掉,遵守xdg规范就好了。
@hantsy: 严重同意
@Iven: "chmod 755 这种方法科学么",上面的shell我是从Archlinux的gconf的.INSTALL中修改和抄过来的。
tumashu说,那个“如果软件清除以后还在/etc下留下东西的话,这好像是包的bug吧。。。。”,其他的发行版我不只道是什么情况,但是至少Archlinxu的好多包就是这种情况。gedit,eog,ibus,compiz,anjuta……
“应该删除你个人目录里的gconf”,这个上面说了删除~/.gconf*,那些东西还存在。
其实我个人跟倾向于这个文体是软件本身的文体(或者说是gconf的问题),因为自己也通过手工gconftool-2 --makefile-uninstall-rule,但依然删除不了诸如ibus在/apps下生成的ibus及其子目录。
抱歉,上面好几处错别字。
你删除了.gconf后如果系统没有安装软件的话,比如ibus,是不会仍然存在ibus的键值的,你需要重新启动gconfd-2或者注销才能看到效果。
而且没看出那段脚本的作用。。
@lh: 这个你确定??
估计我说的不是很清楚,那个还存在的应该不能叫“键值”,软件删除了,“键值”的确不存在,我说的是:你打开gconf-editor左侧那个树状的东西(这个名字叫什么呢?应该是叫子目录吧)
用法: gconftool-2 [选项...] - 用于修改 GConf 配置的工具 --all-dirs 显示某个目录下的所有子目录。
运行gconftool-2 --all-dirs /apps,你就会发现那些子目录还存在,比如:/apps/ibus, /apps/anjuta
我上面说的是Archlinux下的情况,有使用Archlinux的出来说说。
fedora没有这种情况
我是及其讨厌gnome这种配置机制,尤其是如果不开启gnome-settings-deamo进程,在Gconf中注册过的gtk程序是不会读取用户的个人设置的,只会去遵守/etc/gtk-2.0/gtkrc的设置,非常之让人讨厌。
唉,有点像注册表了
gconf 这种恶心的东西,ibus 依赖,chromium 依赖…… 真是无语了……
楼主说的没错。
我查了偶的系统如下:
$> gconftool-2 --all-dirs /apps
/apps/gconf-editor
/apps/evince
/apps/gnome-keyring
/apps/gksu
/apps/shotwell
这个shotwell就是垃圾,俺从aur安装的,早已删掉。
不过奇怪的是俺的系统有ibus,咋的没出现呢?
楼主啊,这个脚本其实很简单啦。
它就是删掉 /etc/gconf/gconf.xml.defaults 就行了
从此 gconftool-2 --all-dirs /apps 就空了
后面的语句是重建该目录,只添加该有的项。
export GCONF_CONFIGSOURCE=`gconftool-2 --get-default-source`
的意思是说把gconftool-2的输出值赋给该变量,我手动改了:
export GCONF_CONFIGSOURCE=“xml:merged:/etc/gconf/gconf.xml.defaults”
不过添不添加好像无所谓,偶的evince运行的好好地。
哦对了,这些操作都要su到root账户来运行哦,sudo不行,因为export变量时只对当前账户有效。
还有奇怪的是,俺的系统ps -ef |grep gconf 根本没有 gconfd 在运行啊,哪里需要kill它呢?
哦我知道了。。。我都没装gnome,我只用fluxbox的啦,又小又快。
所以不用重建也不所谓啦。
如果有谁需要的话:
用root登陆,export那个变量,然后:
#> cd /usr/share/gconf/schemas
#> gconftool-2 --makefile-install-rule evince.schemas
把这个目录底下的 .schemas 都来一遍就行了.
大家的明白?
唉用了井号那行命令就消失了. 把命令再发一遍: 如果有谁需要的话: 用root登陆,export那个变量,然后: cd /usr/share/gconf/schemas gconftool-2 --makefile-install-rule evince.schemas 把这个目录底下的 .schemas 都来一遍就行了.
yaourt -Rn 不是可以一起删除配制文件吗? 否则应该是包的问题
windows下注册表的种种弊端再现
我们公司还曾经要求把一些配置文件(二进制的)都放到注册表中,而且说这是MS的规范——也不知是哪里找来的,我立马晕倒!
邪恶的注册表啊
@huangda1982: 看不出注册表有什么邪恶的。注册表只是一个系统信息的数据集合,它是供系统各个部件使用的共享信息。现在桌面系统设计是任务可以由多个软件协同完成的,要实现协同工作这样的共享信息是必不可少的。window 95起采用二进制的数据库集中管理共享信息,编程和管理方便,操作效率高,希望linux桌面也引进类似的机制。
@linooxlee: /etc不是挺好么?
gconf 是基于 XML 的,和 Win32 的二进制注册表不一样的……
@linooxlee: Linux桌面又不是没有类似的机制,问题是Gnome抛开Freedesktop的标准XDG另搞一套,这就令人厌恶了。
就像grissiom说的,输入法浏览器你依赖那玩意干啥?注册表本身不邪恶,但是被邪恶了。
@chi: 1、共享信息对桌面系统是必须的;2、共享信息数据的储存可以是各种各样的形式,但有一个标准规范更容易能被使用者利用;3、windows注册表是一个有标准规范严格定义的集中式二进制数据库,相对/etc的松散结构的文本文件的形式其先进性是显而易见的;4、由于软件设计不规范、恶意软件、病毒木马等原因会出现共享信息数据与系统实际情况不一致,但这不是由共享信息本身来解决。5、手动和自动更正采用数据库存储形式的windows注册表要比松散结构的/etc更简单容易。
KDE用户飞过,KConfigXT的config文件和相应包捆绑,删包就删全局设置,非常干净。愿意的还可以去.kde4/share/config再清理,非常干净。KDE现在很干净的说,最多说个他包比较多,设计什么确实好。没有办法的说。
@linooxlee: 我什么技术也不懂,也没接触过注册表,不敢多说。但就作为一个普通linux桌面用户来说,纯文本的配置文件改起来很方便,而且灵活。看过一点文本与二进制格式的讨论,个人认为文本有portability这优点。至于标准什么的,楼上Roller同学提到了freedesktop,不知道你觉得xdg怎么样。
支持 xdg,赞 KDE~;)
@chi: Freedesktop太弱了,kde和gnome都不完全遵循xdg。kde和gnome不死一个linux桌面是没有活路的,多嘴了:-)
纯文本的配置文件并不比数据库方便,方便的仅是你可以随手取得修改工具-文本编辑器。linux桌面的共享信息分布在多个目录上百个文件中,试想像360、迅雷之类的软件把它们恶意修改了,你得打开上百个文件确认变更并修复它们这是多么繁重的工作--你还得非常小心,文本编辑器没有数据校验功能的。
@linooxlee: 只能说各有利弊,二进制数据库文件的单点失效问题也是非常恐怖的。 我比较喜欢AIX的方法,重要的系统设置是被权限保护的数据库,其他设置是文本。
@linooxlee: 如果是文本文件,那么可以修改他的就不只是“文本编辑器”,你还有 sed、awk、what ever you name it...(当然也可以说他们是广义的文本编辑器……)为什么一定要手工一个一个改呢?呵呵……
Linux发行版是来源复杂的无数包组成的,不比AIX和Win,就是一家公司的团队写的,要他们都把配置信息都写到某个数据库里怕是很难办到啊……连Freedesktop这样的组织都没有约束力,只能各人自搞一套了……