当前位置:首页 > 分享 > 正文

程序安装包管理(linux安装软件包yum)

Linux系统有许多服务,但这些服务都需要安装、升级或卸载、查询及效验,那就需要用到包管理工具,包管理器主要用于打包、包管理(安装、升级、卸载、查询及效验)。

打包:就是按照既定规范存放于一个单一的归档文件中。

安装:把一个包展开,对应的安放于某些位置。

卸载:安装后的每一个文件都给找到,收集删除。

升级:把新版本的应用程序替换旧版本。

查询:可以查询安装的程序一些相关的信息。

校验:校验程序是否被篡改过。

下面给大家介绍下Linux里面最常用的两种包管理工具,RPM和YUM工具。

RPM包管理工具

RPM是RPM Package Manager, RPM is Package Manager(RPM软件包管理器)的缩写,这一格式虽然被打上了RedHat的标志,但其原始设计理念是开放的。在没有包管理之前,都是手动进行的,一个程序包分别由二进制程序、库文件、配置文件、帮助文件四类组成。

二进制程序一般存放于:/bin/sbin /usr/bin /usr/bin 目录下

库文件存放于:/lib64 /usr/lib64 目录下

配置文存件放于:/etc 目录下

帮助文件一般由多种形式存在,例如: manualinfoinstall等。

RPM包有它自己的打包机制,一个RPM包包含很多文件,同时定义了这些文件改如何存储在指定目录下的。例如:一个程序有十种功能,可能常用的就五种,另外三种不常用或用到的人很少,还有两种根本没人用,甚至漏洞百出。制作这个RPM包的人肯能就把常用的五种打进包,如果有特殊的人要到另外三种的话,RPM有一个分包机制。大体是一个核心程序包和一个支包也称为分包。

RPM包命名机制

版本号:major.minor.release

包名--->主版本号--->次版本号---->修正号

rpm包:name-version-release.arch.rpm(有源程序的rpm包和二进制的rpm包)

Rpm包的发行号(release):跟源程序不同,用于标识rpm包本身的发行号,同时包含所适用的操作系统。

例:bash-4.3.2-5.el6.x86_64.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:/path/to/somefile查询某文件是由哪个包安装生成

-qp: 查询未安装的程序包的相关信息

-qc: 查询指定程序包安装生成的配置文件

-qd: 查询指定的程序包安装生成的文档

-qi: 查询指定的程序包的相关信息;

-ql: 查询程序包安装生成的所有文件的列表

实例:

如查询刚刚卸载未安装的包的相关信息,如图:

查询已安装的程序包相关信息,如图:

查询指定程序包安装生成的配置文件,如图:


YUM软件包管理器

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的 Shell前端软件包管理器。基于 RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

Yum之所以可以自动处理依赖关系,它首先是对包做了抽取和定义,找到这一定义位置把这些包事先给存储下来,来判断这一程序包能否满足安装,如不满足Yum则处理这些依赖的包安装。根据我们安装的程序包,找到这个仓库,寻找我们所需安装的程序包,我们可以定义多个仓库,Yum会自动寻找我们定义的仓库里面的程序包,并且在这些我们定义的仓库里面找到一个最新的程序包,找到以后把程序包下载之本地,放在一个缓存空间中,包括一些所依赖的包,然后安装在本机中。

Yum依赖与外在的仓库,而我们定义的仓库,每一个都是独立管理的,每一个仓库都有一个源数据文件,Yum会事先把这些仓库的源数据文件缓存下来,如安装程序包,Yum会事先看看这些仓库的源数据文件里面是否有这个包,仓库的源数据文件包括版本号、包名、依赖关系等等。

Yum程序的配置文件:

定义全局配置

对所有的仓库都适用的配置,一个文件通常用于一个或一组功能相近或相关的仓库

定义一个仓库指向:

[REPO_ID]:给定一个ID号

name=:仓库名称

baseurl=仓库指向的链接

enabled={1|0}:1是启用,0是关闭,默认都是启用的

gpgcheck={1|0}:1表示效验,0表示不效验

gpgkey=:使用哪个密钥来效验,通常密钥是放在远程服务器上的。

实例:

使用yum repolist来查看定义的Yum仓库,如图:

Yum包管理工作相关命令使用

安装:install

卸载:remove

升级:update

查询:list installed

Info:查询一些包相关信息

search KEYWORD

listall|installed|availiable:列出相关包程序

provides /PATH/TO/SOMEFILE:查询指定文件由哪个包安装生成

重新安装:reinstall

降级:downgrade

清理缓存:clean [ packages | metadata | expire-cache |rpmdb | plugins | all ]

生成缓存:makecache

包组

Grouplist:列出所有包组

groupinfoGRP_NAME:查看某一包组,注意:由于包组名有空格,所有要用引号。

groupinstallGRP_NAME:安装某一包组

groupremoveGRP_NAME:卸载一个包组

仓库

repolist[all|enabled|disabled]:列出所有仓库

repoinfo[all|enabled|disabled]:查看仓库相关信息

实例:

安装一个程序包,我们使用yum install加包名,Yum会自动解决依赖包的关系:

卸载一个包程序,使用yum remove 加安装包名称:

查询一个软件包程序:

列出所有包组:

查看某一包组:

离线Yum仓库搭建

挂载光盘至某目录,定义仓库,使用file:///指明其访问路径

实例:

总结

RPM包管理工具由于安装程序需要依赖,安装包比较繁琐,逐渐被淘汰,相比于YUM包工具,可以自动解决依赖,确实节省很多时间,但对于新手来说基础是必不可少的。