我们知道linux有许多服务,但这些服务都需要安装、升级或卸载、查询及效验,那就需要用到包管理工具,包管理器主要用于打包、包管理(安装、升级、卸载、查询及效验)。
打包:就是按照既定规范存放于一个单一的归档文件中。
安装:把一个包展开,对应的安放于某些位置。
卸载:安装后的每一个文件都给找到,收集删除。
升级:把新版本的应用程序替换旧版本。
查询:可以查询安装的程序一些相关的信息。
效验:效验程序是否被篡改过。
下面我们说下linux里面最常用的两种包管理工具,RPM和YUM工具。
1、 RPM包管理工具
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有一个分包机制。大体是一个核心程序包和一个支包也称为分包。
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|--install} [install-options]PACKAGE_FILE ...
-i 安装
-v 显示详细信息,可 加使用查看更加详细信息,如-vv,-vvv
-h 显示进度,用50个#来作为进度条
我们一般组合使用-ivh来安装rpm包
--nodeps 取消依赖关系
--replacepkgs 重新安装
--test 测试安装,而不是真正安装
例如我们现在安装一个RPM包,如图:
升级:
rpm{-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm{-F|--freshen} [install-options] PACKAGE_FILE ...
-Uvh:如果有旧版程序包,则升级之;如果没有,则安装之;
-Fvh:如果有旧版程序包,则升级之;如果没有,则不安装;
--oldpackage 降级安装
--force 忽略冲突,强制执行
我这里没有升级的程序包,只能给一个示例,如:
[root@localhost Packages]# rpm -Uvhzsh-5.0.2-7.el7.x86_64.rpm
卸载:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notrig-
gers] [--test] PACKAGE_NAME ...
--nodeps 忽略依赖关系
--test 卸载测试
如我们这里把刚才的zsh包卸载,如图:
查询:
rpm {-q|--query}[select-options] [query-options]
-q:查询已安装的包
-qa:查询所有的安装包
-qf:/path/to/somefile查询某文件是由哪个包安装生成
-qp: 查询未安装的程序包的相关信息
-qc: 查询指定程序包安装生成的配置文件
-qd: 查询指定的程序包安装生成的文档
-qi: 查询指定的程序包的相关信息;
-ql: 查询程序包安装生成的所有文件的列表
如我们查询一个未安装的包的相关信息,如图:
查询已安装的程序包相关信息,如图:
查询指定程序包安装生成的配置文件,如图:
更多选项查询我在这就不一一演示了。
效验:
常用用法:rpm -VPACKAGE_NAME
文件改动后校验会有下列相关信息提示:
5:文件的MD5校验值
S:文件大小
L:链接文件
T:文件创建的时间
D:设备文件
U:文件的用户
G:文件的用户组
M:文件的权限
包来源合法性效验:
来源合法性验正:非对称加密
完整性验正:单向加密
导入密钥:rpm --import/PATH/TO/KEY_FILE
校验:rpm -K/PATH/TO/RPM_FILE
包效验如图:
2、 YUM软件包管理器
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
Yum之所以可以自动处理依赖关系,它首先是对包做了抽取和定义,找到这一定义位置把这些包事先给存储下来,来判断这一程序包能否满足安装,如不满足Yum则处理这些依赖的包安装。根据我们安装的程序包,找到这个仓库,寻找我们所需安装的程序包,我们可以定义多个仓库,Yum会自动寻找我们定义的仓库里面的程序包,并且在这些我们定义的仓库里面找到一个最新的程序包,找到以后把程序包下载之本地,放在一个缓存空间中,包括一些所依赖的包,然后安装在本机中。
Yum依赖与外在的仓库,而我们定义的仓库,每一个都是独立管理的,每一个仓库都有一个源数据文件,Yum会事先把这些仓库的源数据文件缓存下来,如安装程序包,Yum会事先看看这些仓库的源数据文件里面是否有这个包,仓库的源数据文件包括版本号、包名、依赖关系等等。
Yum程序的配置文件:
/etc/yum.conf
定义全局配置:对所有的仓库多适用的配置
/etc/yum.repos.d/*.repo
一个文件通常用于一个或一组功能相近或相关的仓库
定义一个仓库指向:
[REPO_ID]:给定一个ID号
name=:仓库名称
baseurl=仓库指向的链接
enabled={1|0}:1是启用,0是关闭,默认都是启用的
gpgcheck={1|0}:1表示效验,0表示不效验
gpgkey=:使用哪个密钥来效验,通常密钥是放在远程服务器上的。
例如我们来定义一个Yum仓库,如图:
使用yum repolist来查看我们定义的Yum仓库,如图:
Yum命令:
yum [options][command] [package ...]
安装:install
卸载:remove
升级:update
查询:
Info:查询一些包相关信息
search KEYWORD
listall|installed|availiable:列出相关包程序
provides /PATH/TO/SOMEFILE:查询指定文件由哪个包安装生成
重新安装:reinstall
降级:downgrade
清理缓存:clean [ packages | metadata | expire-cache |rpmdb | plugins | all ]
生成缓存:makecache
包组:
Grouplist:列出所有包组
groupinfo"GRP_NAME":查看某一包组,注意:由于包组名有空格,所有要用引号。
groupinstall"GRP_NAME":安装某一包组
groupremove"GRP_NAME":卸载一个包组
仓库:
repolist[all|enabled|disabled]:列出所有仓库
repoinfo[all|enabled|disabled]:查看仓库相关信息
例如安装一个程序包,我们使用yum install加包名,Yum会自动解决依赖包的关系
如图:
如卸载一个包程序,我们使用yum remove 加包名,如图:
查询一个软件包程序,如图:
这里不在一一演示。
列出所有包组,如图:
查看某一包组,如图:
这里的命令不在一一演示。
使用光盘作为Yum仓库:
挂载光盘至某目录
定义仓库,使用file:///指明其访问路径
如图:
Yum包管理程序安装还比较简单的,不需要我们手动解决软件包的依赖性,本次就写到这里,如有不足之处欢迎指出,谢谢!