Linux系统有许多服务,但这些服务都需要安装、升级或卸载、查询及效验,那就需要用到包管理工具,包管理器主要用于打包、包管理(安装、升级、卸载、查询及效验)。
打包:就是按照既定规范存放于一个单一的归档文件中。
安装:把一个包展开,对应的安放于某些位置。
卸载:安装后的每一个文件都给找到,收集删除。
升级:把新版本的应用程序替换旧版本。
查询:可以查询安装的程序一些相关的信息。
校验:校验程序是否被篡改过。
下面给大家介绍下Linux里面最常用的两种包管理工具,RPM和YUM工具。
RPM是RPM Package Manager, RPM is Package Manager(RPM软件包管理器)的缩写,这一格式虽然被打上了RedHat的标志,但其原始设计理念是开放的。在没有包管理之前,都是手动进行的,一个程序包分别由二进制程序、库文件、配置文件、帮助文件四类组成。
二进制程序一般存放于:/bin、/sbin、 /usr/bin、 /usr/bin 目录下
库文件存放于:/lib64、 /usr/lib64 目录下
配置文存件放于:/etc 目录下
帮助文件一般由多种形式存在,例如: manual、info、install等。
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包的安装有多种参数,如下:
-i //安装
-v //显示详细信息,可 加使用查看更加详细信息,如-vv,-vvv
-h //显示进度,用50个#来作为进度条
在安装包之前,一般会组合其他参数一起使用,如使用-ivh来安装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(全称为 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仓库,如图:
安装: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 加安装包名称:
查询一个软件包程序:
列出所有包组:
查看某一包组:
挂载光盘至某目录,定义仓库,使用file:///指明其访问路径
实例:
RPM包管理工具由于安装程序需要依赖,安装包比较繁琐,逐渐被淘汰,相比于YUM包工具,可以自动解决依赖,确实节省很多时间,但对于新手来说基础是必不可少的。
本文由梁桂钊于2023-09-08发表在梁桂钊的博客,如有疑问,请联系我们。
本文链接:https://720ui.com/12530.html