1、很多各个用户独立定制的东西没有必要在整个系统的层面共享,比如gtk主题、emerald主题和图标主题之类,只需要放在用户家目录里就可以了。对于gtk主题、emerald主题和图标主题来说,直接下载压缩包文件解压到~/.themes、~/.emerald和~/.icons就可以,但是无法实现自动更新,所以有必要用类似于软件源的机制来解决,且设计为无需根用户权限。
2、出于安全考虑,其实很多操作可以避免使用根用户权限,比如安装现在很时髦的linux绿色软件(http://portablelinuxapps.org/),甚至连guest用户都可以进行。这方面唯一缺少的也是一个以普通用户权限实现的类似于软件源的自动更新机制。
3、方便从windows迁移过来的用户适应linux。在windows下普通的应用软件都能以普通用户权限安装,只有涉及到系统底层的软件才需要管理员权限(此即所谓的UAC),实际上在linux下也是如此,只要无需改动像/boot和/etc这些目录的软件都可以直接以普通用户权限装在家目录作为个人专用的应用程序,不一定非得装在/usr下作为全局应用程序。
好了,动机说清楚了,来讲讲具体的实现方案(yy中):
1、以ubuntu为例,两套独立的软件安装机制并存,当以根用户权限apt-get update/upgrade/install时,是访问系统层级的或者全局的软件源,这是已有的软件安装机制;而以普通用户权限apt-get update/upgrade/install时,是访问个人专用的软件源,此时美化主题之类的包直接安装到~/.themes、~/.emerald和~/.icons这些地方,而绿色软件直接安装到家目录下以软件名字命名的目录中(比如qtweb这个软件安装到~/qtweb中)。
2、当有大量的应用软件直接安装到家目录中之后,病毒和恶意软件的传播就成了一个问题。一个初步设想的解决方案是,每次update时将可执行文件的md5值与软件源进行核对,如果版本号不一致当然可以进行升级,如果版本号一致但是md5值不一致,那么说明本地软件已被改动,提醒用户执行reinstall命令重新下载源里的软件包覆盖安装即可。
