Linux系统有许多服务,但这些服务都需要安装、升级或卸载、查询及效验,那就需要用到包管理工具,包管理器主要用于打包、包管理(安装、升级、卸载、查询及效验)。 打包:就是按照既定规范存放于一个单一的归档文件中。 安装:把一个包展开,对应的安放于某些位置。 卸载:安装后的每一个文件都给找到,收集删除。 升级:把新版本的应用程序替换旧版本。 查询:可以查询安装的程序一些相关的信息。 校验:校验程序是否被篡改过。 下面给大家介绍下Linux里面最常用的两种包管理工具,RPM和YUM工具。 RPM包管理工具 RPM是RPMPackageManager,RPMisPackageManager(RPM软件包管理器)的缩写,这一格式虽然被打上了RedHat的标志,但其原始设计理念是开放的。在没有包管理之前,都是手动进行的,一个程序包分别由二进制程序、库文件、配置文件、帮助文件四类组成。 二进制程序一般存放于:bin、sbin、usrbin、usrbin目录下 库文件存放于:lib64、usrlib64目录下 配置文存件放于:etc目录下 帮助文件一般由多种形式存在,例如:manual、info、install等。 RPM包有它自己的打包机制,一个RPM包包含很多文件,同时定义了这些文件改如何存储在指定目录下的。例如:一个程序有十种功能,可能常用的就五种,另外三种不常用或用到的人很少,还有两种根本没人用,甚至漏洞百出。制作这个RPM包的人肯能就把常用的五种打进包,如果有特殊的人要到另外三种的话,RPM有一个分包机制。大体是一个核心程序包和一个支包也称为分包。RPM包命名机制 版本号:major。minor。release 包名主版本号次版本号修正号 rpm包:nameversionrelease。arch。rpm(有源程序的rpm包和二进制的rpm包) Rpm包的发行号(release):跟源程序不同,用于标识rpm包本身的发行号,同时包含所适用的操作系统。 例:bash4。3。25。el6。x8664。rpm 包名主版本号次版本号源程序发行号rpm包的发行号主机平台cup架构 注意:包和包之间有可能存在依赖关系的,例如一个包要实现某些功能需要另外一些包的支撑。RPM包管理应用 RPM包安装 rpm包的安装有多种参数,如下: i安装 v显示详细信息,可加使用查看更加详细信息,如vv,vvv h显示进度,用50个来作为进度条 在安装包之前,一般会组合其他参数一起使用,如使用ivh来安装rpm包 实例: 安装rpm包 如果在安装过程中需要对安装进行调整以及依赖关系,需要加上以下参数: nodeps取消依赖关系 replacepkgs重新安装 test测试安装,而不是真正安装 安装包升级 Uvh:如果有旧版程序包,则升级之;如果没有,则安装之; Fvh:如果有旧版程序包,则升级之;如果没有,则不安装; oldpackage降级安装 force忽略冲突,强制执行 安装包卸载 e卸载 nodeps忽略依赖关系 test卸载测试 实例: 安装包查询 上面已经说明了rpm包的安装、升级和卸载,下面介绍下rpm包管理工具的查询参数,如下: q:查询已安装的包 qa:查询所有的安装包 qf:pathtosomefile查询某文件是由哪个包安装生成 qp:查询未安装的程序包的相关信息 qc:查询指定程序包安装生成的配置文件 qd:查询指定的程序包安装生成的文档 qi:查询指定的程序包的相关信息; ql:查询程序包安装生成的所有文件的列表 实例: 如查询刚刚卸载未安装的包的相关信息,如图: 查询已安装的程序包相关信息,如图: 查询指定程序包安装生成的配置文件,如图: YUM软件包管理器 Yum(全称为YellowdogUpdater,Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。 Yum之所以可以自动处理依赖关系,它首先是对包做了抽取和定义,找到这一定义位置把这些包事先给存储下来,来判断这一程序包能否满足安装,如不满足Yum则处理这些依赖的包安装。根据我们安装的程序包,找到这个仓库,寻找我们所需安装的程序包,我们可以定义多个仓库,Yum会自动寻找我们定义的仓库里面的程序包,并且在这些我们定义的仓库里面找到一个最新的程序包,找到以后把程序包下载之本地,放在一个缓存空间中,包括一些所依赖的包,然后安装在本机中。 Yum依赖与外在的仓库,而我们定义的仓库,每一个都是独立管理的,每一个仓库都有一个源数据文件,Yum会事先把这些仓库的源数据文件缓存下来,如安装程序包,Yum会事先看看这些仓库的源数据文件里面是否有这个包,仓库的源数据文件包括版本号、包名、依赖关系等等。 Yum程序的配置文件: 定义全局配置 对所有的仓库都适用的配置,一个文件通常用于一个或一组功能相近或相关的仓库 定义一个仓库指向: 〔REPOID〕:给定一个ID号 name:仓库名称 baseurl仓库指向的链接 enabled{10}:1是启用,0是关闭,默认都是启用的 gpgcheck{10}:1表示效验,0表示不效验 gpgkey:使用哪个密钥来效验,通常密钥是放在远程服务器上的。 实例: 使用yumrepolist来查看定义的Yum仓库,如图: Yum包管理工作相关命令使用 安装:install 卸载:remove 升级:update 查询:listinstalled Info:查询一些包相关信息 searchKEYWORD listallinstalledavailiable:列出相关包程序 providesPATHTOSOMEFILE:查询指定文件由哪个包安装生成 重新安装:reinstall 降级:downgrade 清理缓存:clean〔packagesmetadataexpirecacherpmdbpluginsall〕 生成缓存:makecache 包组 Grouplist:列出所有包组 groupinfoGRPNAME:查看某一包组,注意:由于包组名有空格,所有要用引号。 groupinstallGRPNAME:安装某一包组 groupremoveGRPNAME:卸载一个包组 仓库 repolist〔allenableddisabled〕:列出所有仓库 repoinfo〔allenableddisabled〕:查看仓库相关信息 实例: 安装一个程序包,我们使用yuminstall加包名,Yum会自动解决依赖包的关系: 卸载一个包程序,使用yumremove加安装包名称: 查询一个软件包程序: 列出所有包组: 查看某一包组: 离线Yum仓库搭建 挂载光盘至某目录,定义仓库,使用file:指明其访问路径 实例: 总结 RPM包管理工具由于安装程序需要依赖,安装包比较繁琐,逐渐被淘汰,相比于YUM包工具,可以自动解决依赖,确实节省很多时间,但对于新手来说基础是必不可少的。