软件包管理概述
在Linux系统中,用户可以直接编译软件的源代码来安装软件,也可以使用软件包管理器来安装或管理软件,它与直接从源代码安装相比,软件包管理有着下面的优点:
• 易于更新已安装的软件包
• 易于保护配置文件
• 易于跟踪已安装文件
缺点:
源代码安装软件是可以自己自定义的,但是软件包管理器是已经给打包好的,不能自定义
RHEL7使用的软件包管理器一般有两个:
1、RPM包管理器;2、YUM包管理器
RPM包的管理
rpm包管理器的概述
RPM全称是Red Hat Package Manager(Red Hat包管理器)
在Linux操作系统中,软件包的安装其实是文件的拷贝,即把软件所用的各个文件拷贝到特定目录。当然RPM安装软件包也不例外。但RPM更“先进”一些,因为它在安装前,还会执行检查软件包的依赖(Dependency)、检查软件包的冲突 (Conflicts)。最后才将软件包里面的相关文件解出并存放到相应位置
rpm软件包的命名
在Redhat Linux中,其rpm包的命名规则为:
• 软件名-版本号-释出号.体系号.rpm
例: zsh-4.2.6-1.i386.rpm
zsh为软件名;
4.2.6为版本号 (4为主版本号、2为次版本号、6为修订版本号) ;
1为释出号(发布号);
rpm为扩展名,这是红帽的特定的扩展名
rpm包的安装
通过RPM来安装软件包的指令与语法如下:
rpm <选项> <软件包名>
安装选项
• -i 安装一个以前从未安装过的软件包。
• 例如:rpm –i zsh-4.2.6-1.i386.rpm
• -v 将安装过程打印在屏幕上;
• -h 以hash字符“#”显示安装进度条;
[root@server1 Server]# rpm -ivh zsh-4.2.6-1.i386.rpm
Preparing… ###########################################[100%]
1:zsh ###########################################[100%]
rpm包的卸载
通过RPM来卸载软件包的指令与语法如下:
rpm <选项> <软件名>
卸载选项
• -e 卸载一个已经安装过的软件包。
例如:rpm –e zsh
注意:
• rpm对一个未安装的软件包进行操作,参数为软件包名
• rpm对一个已经安装过的软件包进行操作,参数为软件名
rpm包的升级
通过RPM来升级软件包的指令与语法如下:
rpm <选项> <软件包名>
升级选项
• -U 对一个已经安装的旧版本软件包进行升级(如果以前没有安装过此包则安装它)
• -F 对一个已经安装的旧版本软件包进行升级
其它配用选项
• --force 强制执行,它与-Uvh组合使用可重新安装某个已经安装的软件包当中丢失的文件
rpm的查询
通过RPM来查询的指令与语法如下:
rpm <选项> <软件名|软件包名|文件名>
查询选项
• –q 软件名:查询某一个RPM包是否已安装
• –qi 软件名:查询某一个RPM包的详细信息
• –ql 软件名:列出某RPM包中所包含的文件(已安装的)
• –qf 文件名:查询某文件属于哪一个RPM包(已安装的)
• –qa :列出当前系统所有已安装的包
• –qip 软件包:列出未安装RPM包的详细信息
• –qlp 软件包:列出未安装RPM包中的文件
rpm包的检查
从互联网上下载的软件包,我们应该对下载的软件包进行检查
通过RPM来检查软件包的指令与语法如下:
rpm <选项> <软件包名>
检查选项
• -K 检查RPM包的GPG签名
注意
在检查之前应该先导入红帽官方的GPG KEY文件
GPG KEY文件在官方的安装光盘上与系统中都有
rpm -import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
rpm的校验
当一个软件包被安装后,用户可以对其进行检验,以检测软件是否被用户修改过
通过RPM来校验软件包的指令与语法如下:
rpm <选项> <软件名>
校验选项
• -V 校验软件;-Va 校验所有软件
校验出被修改地方
• S 文件大小;M 文件权限与类型;5 MD5求和;U 文件的所属用户;G 文件的所属组;T 更改时间
使用YUM来管理软件包
YUM概述
yum是Yellow dog Updater Modified的简称
yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以通过http或ftp共享出来,也可以是本地软件池。在软件仓库中包括了所有RPM包的头信息(header)描述,比如依赖性等。客户端在第一次安装的时候就会去下载header文件并加以分析,因此能够自动地从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。自己本身也可以做yum服务器,本身可以根据光盘镜像做yum服务器
YUM安装软件包
yum仓库(也称yum源)用于存放各种rpm的软件包以及软件包之间的依赖关系(repodata目录)。需要安装软件的计算机连接到指定yum仓库来安装软件包
通过yum来安装软件
语法:yum <选项> <软件名|组名>
安装选项
• install <软件名> 安装指定的安装包package
是客户端从远程仓库中下载软件并安装 。如果指定下载下来的软件包的绝对路径也可以安装本地下载下来的软件包
• localinstall <软件包> 本地安装软件包
localinstall 是安装一个本地已经下载来的的软件包
• groupinstall <组名> 组安装
如果仓库为软件包分了组,则可以通过安装此组来完成安装这个组里面的所有软件包
YUM客户端配置
yum客户端的配置文件放在本地的/etc/yum.repos.d/*.repo
注意:一定要以.repo结尾
配置文件的格式为 :
• [仓库名1] 这个必须写在第一行。下面的信息只要有就可以,顺序无所谓
• name=仓库描述 叫什么都行,描述仓库里有什么
• baseurl=仓库位置 只能 http,ftp,本地:file,不支持https
• enabled=0/1 0是关闭仓库,1是开放仓库
• gpgkey=GPG文件的位置 即公钥值的文件路径
可以指定到http,ftp,file。如果是http或ftp就写它们的URL,如果是file就写本地绝对路径
GPG在Linux上的应用主要是实现官方发布的包的签名机制
• gpgcheck=0/1(0:安装前不对RPM包检测 ;1:检测,这时需要导入公钥和私钥)
例子:
[BASE]
name=Red Hat Enterprise Linux Server
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch
enabled=1
gpgcheck=1 它等于1的时候必须要有gpgkey,它等于0的时候gpgkey可以不写
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
#(我的安装光盘就是我本地的光盘时不用做gpgkey的指定。
# 如果需要指定的时候gpgkey一般都放在file:///etc/pki/rpm-gpg/里,
# 文件名为类似RPM-GPG-KEY-CentOS-6或者RPM-GPG-KEY-redhat-release这样的
#但是ftp和http是明文传输,需要进行RPM包的检测,就需要进行gpgkey的指定,
# 具体gpgkey的链接是什么,只需要看url里取找即可,比如例子中的http://mirrors.163.com/里一层一层就能找到)
本地yum源和网络yum源
① 本地yum源
所谓本地yum源是指yum仓库在本地,一般是本地系统光盘或镜像文件
② 网络yum源
所谓网络yum源是指yum仓库在远程(不在本地),需要联网才能安装
yum源配置步骤:
挂载iso:
mount -o loop <光盘/镜像文件的绝对路径> <挂载点的绝对路径>
yum源安装:
mount | grep iso
查看系统中的挂载文件
看到有一个/dev/sr0 on /run/media/root/RHEL-7.4 Server.x86_64 type iso9660 (ro,nosuid,nodev,relatime,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500,uhelper=udisks2)。
将绝对路径部分复制
创建yum仓库:
cd /etc/yum.repos.d/
vim rhel.repo
[rhel]
name=rhel
enable=1
baseurl=file:///run/media/root/RHEL-7.4\ Server.x86_64
#将刚才复制的部分粘过来↑,4和S中间有一个空格,这个不能删,需要在它前面加一个转义符\
gpgcheck=0
yum repolist
如果repolist:后面显示的不是0,以及rhel前面没有!,就说明配好了
如果配完了yum源还不好用,可能是配置文件写错了,就
yum clean all
清除当前缓存
修改配置文件成正确的内容
yum makecache
创建新的缓存
yum repolist
yum list
显示软件仓库中可以安装的软件包
yum install httpd
安装httpd软件包
yum install mariadb -y
安装mariadb软件包,并且对应询问默认yes
yum groupinstall "Security Tools" -y
安装Security Tools组安装包
软件包在这个路径里/run/media/root/RHEL-7.4\ Server.x86_64/Packages/
[root@localhost yum.repos.d]# cp /run/media/root/RHEL-7.4\Server.x86_64/Packages/mod_ssl-2.4.6-67.el7.x86_64.rpm ./
[root@localhost yum.repos.d]# ls
mod_ssl-2.4.6-67.el7.x86_64.rpm redhat.repo
[root@localhost yum.repos.d]# yum install ./mod_ssl-2.4.6-67.el7.x86_64.rpm
[root@localhost yum.repos.d]# rpm -qa | grep httpd
httpd-2.4.6-67.el7.x86_64
httpd-tools-2.4.6-67.el7.x86_64
YUM升级软件包
通过yum来升级软件
语法:yum <选项> [软件包|软件名|组名]
升级选项
• update 更新全部可以更新的软件包
• update <软件名> 更新指定程序包package
• check-update 检查系统中可以被升级的软件包。
• groupupdate <组名> 升级组group1 里面的软件包。
YUM卸载软件包
通过yum来卸载软件
语法:yum <选项> <软件名|组名>
卸载选项
• remove <软件名> : 卸载软件包package1
• groupremove <组名> :卸载组group1里面所包括的软件包。
yum remove httpd -y
YUM查询
通过yum来查询软件
语法:yum <选项> [软件包|软件名|组名]
查询选项
• info <软件名> :显示安装包信息
• list :显示所有已经安装和仓库中可以安装的程序包
• list <软件名> :显示指定软件包安装情况
• search <关键字>:查找软件包
yum httpd tab键补齐
的时候什么都没显示的话说明httpd相关的所有软件包都已经安装了
yum remove httpd 键补齐
的时候什么都没显示的话说明httpd相关的所有软件包都已经被卸载了
yum -y reinstall httpd
(如果使用yum install xxxx,会找到安装包之后,询问你Is this OK[y/d/N],需要你手动进行选择。但是如果加上参数-y,就会自动选择y,不需要你再手动选择):重新安装。这个在无意删除了某需要的文件而仓库里还有这个文件的时候就可以重新安装,这样原来存在的不会被重新安装,但是没有的文件会帮你安装上