在Linux中需要根据不同的需求安装不同的软件服务。在Linux中,软件包分类两种源码包安装与二进制包安装。
一、优缺点:
优点:安装过程简单快速
缺点:无法查看源代码、选择功能不灵活、有依赖性(需要提前一些前置依赖包)
二、依赖性:
1、树形依赖:若安装a,则需要提前安装b,安装b需要提前安装c。
解决方法:安装c→安装b→安装a
2、环形依赖:若安装a,则需要提前安装b,安装b需要提前安装c,安装c需要提前安装a。
解决方法:abc一块安装
3、模型依赖:安装a时缺少某些文件(一般是函数库,so.数字结尾)。
解决方法:http://www.rpmfind.net/ 通过这个网站结合所使用的系统版本可以查询缺少的文件属于包的名称。
三、安装方法(两种方法:rpm安装方式与yum安装方式)
(三·一、rpm安装方式)
1、rpm安装
(a)rpm -ivh 软件包名 “i”是安装的意思;“v”是显示详细的信息;“h”显示安装进度。
(b)service 服务名 start|stop|restart|status 服务的启动|停止|重启|状态
ps:系统中有RPM包的数据库(/var/lib/rpm/),对于已安装的软件包会将其写入此数据库。因此在查询或者卸载软件时也是极其方便的(前提是安装时是默认安装)。且安装时如下图所示,一般情况下可以认为是安装成功。
![1f4aeee69046ece1c872a1b7a9368ad3.png](https://i-blog.csdnimg.cn/blog_migrate/bb6d42c1ee019c649bc65b7c0641d6e5.jpeg)
(c)默认安装位置
![636a3cea68598a11965ca1c1f4bd05be.png](https://i-blog.csdnimg.cn/blog_migrate/1eb194b9185e4ebd671457840c2861db.jpeg)
(d)rpm -ivh 软件包名 --force (将已安装过的软件重新安装一遍,一般用于个别配置文件丢失等情况)
rpm -ivh 软件包名 --test (不安装软件包,只是检测其依赖性)
2、rpm查询
rpm -qa (软件包名) 查询已安装的软件包。
rpm -q | grep abc 查询软件包名中含有abc的的软件包
rpm -qi 软件包名 查询此软件的详细信息
rpm -qip 软件包名 查询未安装的软件包的信息
rpm -ql 软件包名 查询已安装的软件中包含的文件及文件的目录
rpm -qlp 软件包名 查询未安装的软件中包含的文件及文件的目录
rpm -qf 文件名 查询文件属于哪个RPM安装包(必须是RPM包安装时自动创建的文件,而不是自己手工创建的文件)
3、rpm升级
rpm -Fvh 软件包名 升级安装(若安装过旧版本则升级到新版本;若没安装过,则不会进行安装)
rpm -Uvh 软件包名 升级安装(若安装过旧版本则升级到新版本;若没有安装过,则直接安装)
4、rpm卸载软件
rpm -e 软件包名
rpm -e 软件包名 --nodeps 不检测依赖性,直接强制卸载
ps:卸载时也需要检测依赖性,但是卸载依赖包的顺序与安装时顺序相反。不建议使用--nodeps选项直接卸载。
5、验证
rpm -V 已安装软件包名 校验指定的软件包中的文件
rpm -Vf 系统文件名 校验某个系统文件是否被修改
若软件包有过修改,会出现下图所示(示例)
![d88c2e545ef9983951931bb3ca11a753.png](https://i-blog.csdnimg.cn/blog_migrate/4e304b8f64398b65a663377ac97fa510.jpeg)
(a).表示所验证属性一致;S表示文件大小被修改;M表示文件的类型或者权限被修改;5表示文件内容被修改;D表示设备的主副码被修改;L表示路径被修改;U表示所有被修改;G表示所属组被修改;T表示文件修改时间被改变;
以上对比中都会存在一个原始值去对比。
(b)c位置也有以下几个类型:
c表示配置文件;d表示普通文件;g表示鬼文件(意思这个文件不应该在这个软件包内,出现情况及少);l表示许可证文件;r表示自述文件
(c)最后是被改动的文件的所在路径
6、数字证书
上面记录了在软件包中会有原始值供文件去进行对比,这样可以发现文件是否被修改从而排查问题。但是如何保证原始值的准确性,这里便用到了数字证书。
(1)数字证书原理:
(a)必须找到原厂的公钥文件进行安装
(b)安装RPM包时,会提取其中的证书信息与安装的原厂证书进行比对
(c)若通过验证,则允许安装软件包;若不通过,则禁止安装并警告
(2)证书保存位置:
![896b00dc951b509c4f809458ede340ad.png](https://i-blog.csdnimg.cn/blog_migrate/41bb16e33acfbabd07d66cf617887632.jpeg)
存在光盘之中
![9ff6a65a5ac6ddfea5ce4236b360128e.png](https://i-blog.csdnimg.cn/blog_migrate/4c499e7988a4b3b706fbdf6e3a980186.jpeg)
系统之中 /etc/pki/rpm-gpg
(3)导入方法:
rpm --import /etc/pki/rpm-gpg/ RPM-GPG-KEY-CentOS-7
(4)查询已安装的数字证书
rpm -qa |grep gpg-pubkey
(三·二、yum安装)
1、yum的配置文件
yum的配置文件存在/etc/yum.repos.d/目录中,文件扩展名为.repo的为yum的配置文件。(默认情况下CentOS-Base.repo使用此文件)。使用vim编辑器可以打开查看。
yum中参数有以下几个
[base] 容器名称。(注意别忘记[])
name 容器说明(可随意填写,但建议写描述,而不是乱写)
mirrorlist 镜像网址
baseurl yum源的服务器地址。默认是CentOS的官方yum源服务器。可以修改为国内的yum源服务器。
enabled 此容器是否启用。(默认不写或者enabled=1表示启用;enabled=0表示不启用)
gpgcheck 数字证书是否启用(gpgcheck=1表示启用数字证书;gpgcheck=0表示不启用数字证书)
gpgkey 数字证书的公钥文件保存位置。
2、搭建本地yum源
![4cacdd49478775f7408c167eb5df0a71.png](https://i-blog.csdnimg.cn/blog_migrate/12ad92dbe261555725969c15d221c734.jpeg)
本地yum源配置文件内容:
![16cd4b177e9c474978d1e9695ea05b78.png](https://i-blog.csdnimg.cn/blog_migrate/8dad161f739ca59c82485039b2c3ebc5.jpeg)
3、yum命令
yum list 查询yum源服务器上可安装的软件包
yum list 软件包名 查询是否含有某个软件包
yum search 关键字 查询与关键字有关的软件包
![7a2ce27fa96c768c45eeaa56111b6339.png](https://i-blog.csdnimg.cn/blog_migrate/93bf3445e4f8158a2f6b32975cba7226.jpeg)
yum info 软件包名 查询软件包的详细信息
yum -y install 软件包名 安装软件包(-y是自动回答yes的意思)
yum -y update 软件包名 升级软件包
yum -y update 升级系统安装的所有软件包
yum -y remove 软件包名 卸载软件包(卸载软件包会检查依赖性,并且将依赖性软件包一并卸载,但是此依赖包可能被其他软件使用。慎用)