浅谈Linux平台下软件管理现状
2015-09-11岑鹏瑞吴玲达杨超
岑鹏瑞++吴玲达++杨超
摘要:从PC操作系统版本入手,结合开源平台下软件管理的特点,给出了操作系统软件管理平台架构的一般形式,并对Linux下常用软件包管理工具及图形化管理前端进行系统介绍,分析了各自的优缺点,最后展望了Linux软件包管理工具的发展趋势。
关键词: Linux平台;软件管理;架构;软件包管理工具;图形化前端
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)17-0056-04
The Present Situation of Software Management in Linux
CEN Peng-rui, WU Ling-da, YANG Chao
(Academy of Equipment, Science and Technology on Complex Electronic System Simulation Laboratory, Beijing 101416, China)
Abstract: From the PC version of the operating system ,combining the characteristics of the software management system based on open source platform ,gives the general form of the operating system software management platform architecture.Meanwhile,the software package management tools and graphical front-end management system under Linux are introduced, analyzing the advantages and disadvantages. Finally, the development trend of the linux package management tools is forecasted.
Key words:the platform under Linux; software management; architecture; the software package management tools; graphical front-end
在PC操作系统领域,如今较为常见的有微软公司的Windows系列操作系统、苹果公司的Mac OS系列操作系统以及Linux系列操作系统中比较流行的版本,如红帽、Ubuntu等。Linux是UNIX的重新实现[1],是一种非盈利性的操作系统,开发者遍布全球,完全出于兴趣爱好,采用由程序员慷慨地向社区贡献自己编写代码的开发模式,遵循开源代码最严格的GPL开源代码协议,做到一切修改都必将回馈社区,具有免费、开源软件丰富、开放性等特点。因为其具有独特优势,Linux发展迅速,成为操作系统领域一个必不可少的分支。在桌面领域,虽然Windows仍然占据绝对主导地位,但Linux多种发行版本也发展迅速,如Ubuntu、openSUSE等;在服务器领域,Linux获得IBM、HP、Novell、Oracle等IT硬件巨头的支持,市场份额领先;同时,2008年诞生的基于Linux的手机操作系统Android如今已发展成为手机操作系统的主流。
Linux具有开源优点,技术支持者和软件更新者来自世界各地,其软件开发模式从传统的集中开发模式转向分散式开发模式[2],这也同时带给Linux下软件包种类、数量繁多,软件包之间依赖性强等缺点,文献[2]对开源软件平台的特点进行了比较全面的总结,指出Linux平台下强调软件重用,重用不仅限于项目内部,更广泛地发生在不同开源项目之间,使得应用程序与操作系统、应用程序之间的依赖关系、冲突关系更为复杂,缺乏统一的组织进行管理,提出需要由开源发行操作系统提供一套有效的机制。那么,怎样更高效便利地对众多的软件包进行管理,以方便用户获取、安装和使用软件,这给Linux平台下的软件管理人员提出了严峻的挑战。
1 操作系统软件管理架构
1.1 Linux版本
Linux操作系统是指基于Linux内核开发的操作系统,其不同的发行版本是由开发人员在Linux内核基础上融入自己的特色打包发布而来的。当前比较流行的Linux发行版本版本树,如图1所示:
由Linux版本树可以清晰地看到,当前国际上比较有名的Linux发行版本公司有Red Hat和Novell公司,还有社区提供的操作系统版本,在中国,主要有中国CNN联合实验室提供的Ubuntu Kylin。总体上有企业级应用收费版本和社区免费版本之分,各家有各家的特点,与市面上主流的Windows操作系统和苹果的mac操作系统相比,开发力量相对分散,竞争力相对欠缺。
1.2 软件管理架构模型
我们通常所说的计算机软件有系统软件和应用软件之分[3]。操作系统就属于系统软件且在系统软件中占有核心地位,能够有效地协调、管理计算机硬件,应用软件等资源,使计算机高效工作。这里所说的软件管理架构模型是指操作系统对应用软件管理的架构模型。
目前,Windows操作系统在个人PC桌面领域占据大部分市场份额,在操作系统领域长期占有统治地位;Mac OS操作系统占据一定市场份额,在国外相对国内比较流行,Linux系统的用户则是最少的,这与人们长期形成的使用习惯以及操作系统本身的界面友好性、使用方便性存在很大的关系,要改变这种局面,是一个漫长的历程。随着软硬件技术地不断发展进步,操作系统上能够安装满足人们各类需求的应用软件层出不穷,如网络聊天、视频播放、音乐播放、输入法等,同时这些应用软件在不断地优化更新。那么各种操作系统是如何对这些应用软件的下载、安装以及卸载进行管理的。
我们都很熟悉,Windows平台下的软件管理,主要是通过在操作系统中安装软件管家客户端来完成,软件管家收集了市面上流行的海量应用软件,并都经过人工安装和杀毒软件测试,统一放在软件仓库中。比较流行的有360软件管家、腾讯软件管家等,该类型客户端给用户提供了软件宝库(仓库)、软件升级、软件卸载、软件下载等图像化界面列表,并对应用软件按照应用类型分类管理,用户下载安装任务在后台完成,极大地方便了用户对应用软件的管理。Mac OSX平台下的软件管理,主要是通过在互联网(Max X苹果网、苹果在线)上搜索到对应苹果系统的软件源进行下载,然后打开下载下来的安装文件后把相应的图标拖放到Application中,在Application中找到打开即可使用,就像Windows平台下使用其绿色软件一样。目前Linux平台下的软件管理相对而言没有Windows和Mac OSX下的软件管理方便友好,主要是通过终端命令或者是一些简单的图形化前端来实现。造成这种局面的主要原因是一方面由于Linux的开源特点,软件之间的依赖性强,给软件管理带来了一定程度的难度;另一方面由于Linux桌面系统的市场占有额小,这就使得软件开发商缺少开发并不断优化软件管理前端的动力。
通过对主流操作系统平台下软件管理的分析,不难看出,操作系统下软件管理架构的一般形式通常采用客户机和服务器(C/S)架构。该架构的突出优点就是可以将任务合理分配到Client端和Server端来实现,充分利用两端硬件环境资源。文献[2]给出了开源平台下软件管理的一般结构,其简化图可以用图2表示。
由图2可以看出,开源平台下的应用软件管理系统是通过软件包管理和分发系统来完成的[2],分发系统部署在服务器端,由专门的管理人员进行管理维护,并通过网络向用户提供软件包信息获取和下载服务,软件包管理部分部署在客户端,负责帮助用户对获取来的软件包格式和内容进行解析从而完成相应操作。通过这两部分的协调配合,更好地解决了开源软件的依赖性问题和获取、安装等问题。
2 Linux软件包管理工具
2.1 软件包格式
当前各类应用软件以软件包的形式被提供给使用者,是指将应用程序、配置文件以及管理数据等统一组织起来得到的,分为二进制软件包和源码包,易用性强、灵活性高和扩展性广。Linux平台下常用的应用软件包种类主要有.rpm和.deb两类,两类格式的软件包采用了不同的组织方式并且在一定条件下可以相互转换。Novell公司和RedHat公司发行的操作系统版本采用.rpm格式的软件包,社区以及中国CNN联合实验室的发行版本采用.deb格式的软件包,RPM软件包通过给出的spec文件控制软件包制作,deb软件包由ar工具对deb标志文件段、控制文件和安装文件压缩生成。两种格式软件包的组成结构[4]如图3所示。
由软件包组成结构不难看出,.rpm和.deb包中不但包含应用程序,而且还提供了软件包的相关信息及依赖性关系描述等,一定程度上可以方便软件安装过程。
2.2 软件包管理工具
不同的发行版本采用的软件管理技术不同,目前Linux平台下开源软件管理技术主要有Apt/dpkg和Yum/RPM两大分支,同时还有基于这些技术实现的较为友好的图形化管理前端(免费),如Ubuntu软件中心、新立得软件包管理器、Yumex、PackageKit等,图4给出了Linux主流版本中各自适用的软件包及软件包管理工具之间的演化关系。
软件包管理工具的设计理念是:简化定位和下载软件包的过程、自动进行系统更新和识别、方便管理软件包之间的依赖关系。dpkg和rpm是最基本的软件包管理工具,能在终端基本满足对软件包进行的操作,大大减少安装软件的工作量,但是他们仍然不能有效解决软件依赖性问题,之后便以此为前端产生了高级别的软件包管理工具APT和yum,可以自动检测软件依赖性问题下载并安装所需软件甚至可以一次性更新整个系统上所有的软件包,方便了软件的安装、升级和卸载。然而人们所追求的是能够有像Windows平台下各类软件管家一样的更为方便友好的图形化界面软件管理方式,于是在已有基础上Linux平台下的各种图形化软件管理前端应运而生。
dpkg安装软件包时,读取软件包内容进行安装并记录控制文件中的信息,为软件包维护、依赖关系处理及安装故障等的处理提供参考信息,软件包的依赖关系可以从控制文件中的depends、recommends、suggests、conflicts等关系中获取。基于dpkg的软件包管理工具APT能够主动从软件仓库中获取软件包信息列表并在本地构建软件包描述和依赖关系数据库。当使用apt命令安装软件包时,apt首先从本地数据库中找到软件包信息及依赖关系然后主动从软件仓库中下载相应的软件包并对下载下来的软件包按依赖关系进行顺序性安装。
使用RPM安装软件包时,rpm命令会把RPM包中的文件安装到系统的指定位置,同时会把这些文件的安装位置和包的信息记录在RPM数据库[4]中,这一点与dpkg存在一定的相似之处,数据库中的文件信息在RPM进行安装、升级或卸载时会有相应更新。而在实际应用中由于软件依赖关系复杂、大面积安装、软件搜索等的困扰,给使用者遇到了诸多不便,为了解决这些问题,yum软件包管理工具被设计出来。yum通过在服务器端构建RPM文件仓库和使用createrepo命令生成索引文件,在客户端构建RPM数据库和设定相应配置文件来管理软件,可以从服务器端取得安装软件所依赖的其他软件信息,先安装他们,然后在安装我们需要的软件,可更有效地解决应用软件的获取、安装、更新和卸载中存在的问题。
dselect、aptitude和tasksel属于文本窗口界面(使用窗口菜单完成软件包管理任务)的软件包管理工具[5]。其中dselect是使用菜单界面的控制台前端包管理工具,运行过程中同时使用APT和dpkg;aptitude整合了dselect和apt-get的所有功能,并提供更多特性,为apt提供了字符界面的前端命令行管理方式,Aptitude会记住哪些包是用户自己安装的,哪些包是为了满足依赖关系而安装的并在依赖包不被需要时自动卸载,同时具有内建的包过滤器[5];Synaptic则是更为友好的基于GTK的图形化APT前端程序,在Ubuntu系统中被称为“新力得”软件包管理器,底层依赖APT包管理命令,除能够实现对软件包的基本操作之外,还增加了软件包过滤、版本锁定、强制安装等功能,对于Linux初级用户来说,具有上手方便的特点。
类似于Synaptic,yumex和kyum是yum的图形化前端,在使用他们时,必须先安装配置yum。二者都提供给用户通过单击的方式选择软件库、软件包和组等功能,能方便地完成软件管理中的相应操作。
PackageKit是一个能更加方便地安装和更新软件的软件包管理工具,针对Gnome和KDE不同桌面环境提供不同版本,其设计意图是能够统一不同发行版本中的图形化软件管理工具,成为一个通用包管理器,支持将YUM、APT等作为后端[6]。
以上所述各类软件包管理工具分类及各类特点归纳总结如表1所示。
2.3 对比分析
通过对以上软件管理工具的介绍,他们的共同点是都能够从配置的软件仓库中自动下载目标软件包并进行安装,软件仓库在分发端由专门的人员来维护,从而保证了软件来源的可靠性。在解决软件依赖性过程中为了避免繁琐地手动下载、安装每一个需要的依赖包,YUM和APT管理方式又提供了自动从仓库中下载软件包和包描述信息并在客户端自动安装依赖包的机制,在解决用户界面友好性、操作简单性上,各类图形界面管理方式又提供了可行的实现。
APT和YUM的不同之处是,APT在软件仓库端对同一软件的不同版本按照稳定性进行分类维护,分为unstable、testing和stable三种发布,这使得二进制应用软件包的发布流程更加规范。
3 总结与展望
随着应用软件数量和特定领域应用软件的不断发展以及Linux市场占有率的不断增加,对Linux平台下采用的软件管理技术的友好性和安全性等提出了进一步挑战。虽然基于APT和YUM软件管理机制的图形化软件管理前端在界面友好性方面有了很大进步,但与Windows操作系统软件管理工具的界面友好性相比还存在很大的发展空间。另外,在特定应用领域对特定应用软件的权限控制及保密性传输等方面存在短板,这需要将成熟的信息系统安全、权限控制策略应用到软件包管理工具中,从而增加应用软件的安全性、完整性以及不可抵赖性等。同时,缺乏统一的组织进行软件版本发布、依赖关系处理和兼容性测试等,各发行版公司应该整合资源,增加沟通,制定统一的规范标准,使软件管理朝着共同的方向发展。
参考文献:
[1] 刘忆智. Linux从入门到精通[M].北京: 清华大学出版社, 2014 .
[2] 顾昊,钱晓俊,梁洪亮.开源平台下软件管理技术研究[J]. 计算机应用研究,2007,24(8):112-115.
[3] 王煜国.计算机软件的日常管理与维护研究[J]. 网络安全技术与应用, 2013(6).
[4] 段继刚.Linux软件管理平台的设计与实现[M]. 北京:机械工业出版社, 2013.
[5] Osamu Aoki.Debian参考手册[EB/OL]. http://qref.sourceforge.net.
[6] 曹江华.Linux系统管理员工具集[M]. 北京:电子工业出版社, 2013.