Linux进阶之软件管理
本节内容
一、rpm:管理linux软件程序的
特点:安装方便
不能解决依赖关系
1、安装软件:
-i:
-v:
-h:
rpm -ivh 包名
2、卸载软件
-e: 清楚
rpm -e 程序名
3、查询
-q: 查询
-l: 查询软件生成的相关文件
-i: 软件信息
-a: 查询所有已经安装的程序
-f: 查找文件所依赖的包
-c:
-d:
rpm -q 程序名 --》查询该程序是否已经安装
rpm -ql 程序名 --》查询该程序生成的文件
rpm -qf `which command` -->查看文件所依赖的包
rpm -qa -->查询所有已经安装和未安装的包
4、升级
-U:安装并升级
-F:只升级
二、yum
安装方便,可以自动解决依赖关系。
1、yum工作原理
2、yum仓库配置
3、yum配置文件
主配置文件:/etc/yum.conf
子配置文件:/etc/yum.repos.d/*.repo
4、yum仓库配置
本地yum仓库:
cd /etc/yum.repos.d
mkdir ken
mv C* ken
touch local.repo
[repoid]
name=reponame
enabled=1
gpgcheck=0
baseurl=file:///mnt
网络仓库
cd /etc/yum.repos.d
mkdir ken
mv C* ken
touch local.repo
[repoid]
name=reponame
enabled=1
gpgcheck=0
baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/
5、yum常用的用法
安装:
yum install 软件名 . . . -y
卸载:
yum remove 软件名. . . -y
查询:
查询所有包:yum list / yum list all
查询已经安装的: yum list installed
查询所有未安装的: yum list available
清空缓存: yum clean all
查询仓库信息: yum repolist
一、 软件包管理简介
1、软件包分类
(1)源码包(脚本安装包)
(2)二进制包(RPM包、系统默认包)
2、源码包
源码包的优点:
(1)开源,如果有足够的能力,可以修改源代码
(2)可以自由选择所需的功能
(3)软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高
(4)卸载方便
源码包的缺点:
(1)安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误
(2)编译过程时间较长,安装比二进制安装时间长
(3)因为是编译安装,安装过程中一旦报错新手很难解决
3、RPM包
二进制包的优点:
(1)包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
(2)安装速度比源码包安装快的多
二进制包缺点:
(1)经过编译,不再可以看到源代码
(2)功能选择不如源码包灵活
(3)依赖性非常复杂
4、软件安装方式总结
安装软件方式有如下几种
方式1:编译安装
将源码程序按照需求进行先编译,后安装
缺点:安装过程复杂,而且很慢
优点:安装过程可控,真正的按需求进行安装(安装位置、安装的模块都可以选择)
方式2:rpm安装(用rpm来安装rpm后缀的安装包)
优点:安装和卸载过程非常方便
缺点:安装过程不可控(安装位置,安装那些功能模块)rpm包的依赖关系非常复杂
方式3:yum安装
yum安装,其实就是自动分析rpm包的依赖关系,然后按照需要的顺序依次安装
方式4:绿色安装
二、 RPM
1、rpm简介
这是一个数据库管理工具,可以通过读取数据库,判断软件是否已经安装,如果已经安装可以读取出来所有文件的所在位置等,并可以实现删除这些文件。
rpm:RPM is Redhat Package Manager(递归缩写)
rpm可以完成的操作
安装软件
卸载软件
查询软件信息
升级、降级
检验
打包程序
rpm软件包命名规则
rpm软件包的文件格式:package-version-release.type.rpm
各字段的说明:
- package软件的名称。
- version软件的版本。
- release软件的释放号码。
- type软件的类型。
- rpm扩展名
rpm仅仅能管理符合rpm格式的程序包,不能管理源码格式的程序
程序的格式:
(1)源码格式的程序:都是以压缩方式呈现的(后缀都是.tar.gz|bz2)
(2)rpm格式的程序:这都是编译以后的程序 (后缀都是.rpm)
rpm依赖关系:
树形依赖:a---b---c
环形依赖:a---b---c---a
模块依赖:模块依赖查询网站(www.rpmfind.net)
2、安装rpm包
格式:rpm -ivh 软件包名
选项
-i:(install)安装软件
-v:(verbose)显示安装详细过程
-h:(hash散列)用#表示安装进度(# 2%)
-vv:显示更详细的安装过程信息
-vvv:显示更更详细的安装过程信息
--nodeps:不检查依赖性(不建议使用)
3、卸载rpm包
格式:rpm -e 软件名
选项:
-e:(erase擦去,删除)卸载软件
--nodeps:不检查依赖性
例子:卸载软件包ren
# rpm -e ren
4、查询已经安装的rpm包
格式:rpm -q 软件名
选项:
-q:(query查询,询问)查看一个已经安装的软件
-a:(all)查看所有已经安装的软件
-l:(list)显示软件安装完成以后生成文件列表(所有文件)
-i:(infomation)查看软件包的相关信息
-p:(package)查询未安装包信息
-d:(docfiles)显示该软件所生成的说明性质的文档列表
-c:(configfiles)查看软件所生成的配置文件列表
--scripts:查看软件相关的脚本
补充:
安装前脚本(preinstall)
安装后脚本(postinstall)
卸载前脚本(preuninstall)
卸载后脚本(postuninstall)
例子:查看ren是否安装
# rpm -q ren
例子:查看当前系统所有已经安装的软件
# rpm -qa
5、查看文件是哪个软件(rpm包)生成的
rpm -qf /path/to/file
-f:(file)查询系统文件属于哪个软件包
6、升级软件
选项
-U:(upgrade)升级或安装软件
-F:(filename)仅仅是升级操作
使用格式;
rpm -Fvh 软件包名
rpm -Uvh 软件包名
7、查询软件包的依赖性
rpm -qR 软件包名
选项:
-R:(requires)查询软件包的依赖性
8、rpm包校验
rpm -V 已安装的包名
选项:
-V:(verify核实,验证)校验指定RPM包中的文件
验证内容中的8个信息的具体内容如下:
S | 文件大小是否改变 |
M | 文件的类型或文件的权限(rwx)是否被改变 |
5 | 文件MD5校验和是否改变(可以看成文件内容是否改变) |
D | 设备的主从代码是否改变 |
L | 文件路径是否改变 |
U | 文件的属主(所有者)是否改变 |
G | 文件的属组是否改变 |
T | 文件的修改时间是否改变 |
文件类型:
c | 配置文件(config file) |
d | 普通文件(documentation) |
g | “鬼”文件(ghost file),很少见,就是该文件不应该被这个rpm包包含 |
l | 授权文件(license file) |
r | 描述文件(read me) |
三、yum 软件管理
也是一个rpm包的管理工具,可以实现自动解决rpm包的依赖关系(自动安装依赖顺序进行rpm包的安装)
为何rpm包会有依赖关系?
制作rpm的人,在制作rpm包的时候,就将这个rpm的所依赖的软件的信息保存在这个rpm包的内部
1、yum的工作原理
(1)需要首先创建一个yum仓库(rpm包仓库、软件仓库)
1)仓库其实就是一个目录
2)仓库中存放的是rpm包
3)仓库中还保存了一个文件,文件中记录了该仓库中所有rpm包的元数据信息
4)元数据信息包括
软件名
软件版本
软件是否已经安装
软件的依赖关系
(2)用 yum 来从仓库中找软件进行安装的过程(比如要安装软件A,A依赖B 和C,B依赖C和D)
1)yum首先会扫描保存元数据信息的文件,检查A是否已经安装,如果已经安装,那提示已经安装
2)如果A尚未安装,那么扫描A的依赖关系信息,会发现A 依赖B 和C
3)yum会再次扫描元数据文件,检测B和C 是否安装,如果都已经安装,那么会开始开始安装A
4)如果B和C尚未安装,那么会检测 B和C的依赖关系,会发现B依赖C和D
5)yum会再次扫描元数据文件,检测C和D是否安装,如果都已经安装,那么会开始开始安装B,然后安装C,然后安装A
2、yum仓库
本地:将本地的一个目录做成yum仓库,只有当前系统可以
网络:通过网络将服务器上的一个目录作为yum仓库,网络中的全部主机都可以用
使用yum仓库的方式,就是修改yum的配置文件
yum的配置文件
主:/etc/yum.conf
子:/etc/yum.repos.d/*.repo
/etc/yum.conf文件:cachedir=/var/cache/yum/$basearch/$releasever
指定缓存文件的保存位置,默认:/var/cache/yum/x86_64/7/
keepcache=0:指定是否保留缓存文件
用yum安装软件过程中会从yum仓库下载并缓存多个资源
1)会将yum仓库的元数据文件缓存到配置文件所指定的路径中
2)会将要安装的软件及其依赖的软件一并缓存到配置文件指定的目录中
3、yum配置文件的构成
[localRpm] <<< 指定yum仓库的id,可以随便写,但是中间不能有空格
name=xxx <<< 指定yum仓库的名称,可以随便写
enabled=0|1 <<< 指定是否使用该yum仓库,0表示不使用;1表示使用
gpgcheck=0|1 <<< 指定是否对rpm包做完整性和来源合法性验证,0表示不做验证;1表示必须做验证
gpgkey= <<< 指定公钥文件(如果gpgcheck=1,那么该项不能省略)
baseurl= <<< 指定yum仓库的url(yum源服务器地址),可以改成其他的(比如:阿里、清华、华为开源镜像站)
4、yum仓库的url的表示方式
注意:
在指定yum仓库的时候,其实不是指向rpm包的目录,而是执行repodata所在目录
本地yum仓库
file://
例子:比如我的yum仓库 /myrpm,此时yum仓库的表示方式就是file:///myrpm
网络yum仓库
http://
5、创建本地yum仓库
使用光盘中的rpm包作为yum仓库
第一步:挂载光盘
# mount /dev/cdrom /media
第二步:备份yum自带的配置文件
# cd /etc/yum.repos.d
# mkdir bak
# mv *.repo bak
或者
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
第三步:创建yum的配置文件,使用光盘作为yum仓库
# vim 1.repo
[myrepo]
name=my repo
enabled=1 #让这个yum源配置文件生效
gpgcheck=0
baseurl=file:///media #地址为自己光盘的挂载地址
第四步:执行yum命令检测结果
# yum clean all <<< 清空yum缓存的全部数据
# yum repolist <<< 检查yum仓库中有多少个可用的rpm包
6、yum使用
(1)安装软件
yum -y install 软件1 软件2 软件3 ....
yum -y localinstall 软件包 #安装本地安装包
(2)卸载软件
yum -y remove 软件1 软件2 软件3 ....
(3)管理包组
grouplist:查看系统中的全部的包组
groupinfo 包组名:查看指定包组的信息(包组的作用、包含的软件)
groupinstall 包组名:安装指定的包组
groupremove 包组名:卸载指定的包组
CentOS7:命令行界面升级为图形化界面
yum groupinstall "X Window System" -y
yum groupinstall "GNOME Desktop" "Graphical Administration Tools" -y
这时,我们可以通过命令 startx 进入图形界面,第一次进入会比较慢,请耐心等待。(可能需要重启,命令为reboot)
(4)管理yum的缓存数据
clean [ packages | metadata | all ]
all:清除所有数据
packages:仅仅清除rpm包
metadata:仅仅清理缓存元数据
(5)查看所有已经安装和尚未安装rpm包
yum list all 或者yum list 可以列出所有的软件包
yum search 关键字 #搜索服务器上所有和关键字相关的包
(6)yum list available:仅仅显示可以安装但是尚未安装的rpm包
(7)yum list installed:仅仅显示已经安装rpm包
@:表示已经安装rpm
(8)查看yum仓库的信息
yum repolist
7、网络yum源的使用方式
国内主流的网络yum仓库地址
mirrors.aliyun.com
mirrors.163.com
mirrors.sohu.com
rpm的yum源
centos提供的
epel提供的:
例子:使用aliyun提供的epel 和centos的yum源
cd /etc/yum.repos.d
mkdir bak
mv *.repo bak
vim new.repo
[centos]
name=centos repo
enabled=1
gpgcheck=0
baseurl=http://mirrors.163.com
[epel]
name=epel repo
enabled=1
enabled=1
baseurl=http://xxxx
8、制作一个网络yum源
思路:在网络上准备一个主机,在其中安装一个web服务器软件(比如apache),然后创建一个目录,在这个目录中准备上yum仓库的全部资源,如果用户可以通过网络访问到该主机的这个目录,那么这个目录就成为网络yum仓库
实现过程
第一步:配置yum源主机
1)安装配置apache
略
2)配置yum仓库相关资源
1. 创建一个目录,作为存储yum资源的目录
# mkdir /usr/local/apache/htdocs/mysource
2. 挂载光盘
# mount /dev/cdrom /mnt
3. 将光盘中的资源复制到前面所创建的目录下
# cp /mnt/* /usr/local/apache/htdocs/mysource -rvf
4. 用浏览器访问一下yum仓库,检查是否可以看到相关文件
http://ip/mysource
第二步:配置客户端主机
修改yum配置文件
1)备份原有的配置文件
# mkdir bak
# mv *.repo bak
# vim a.repo
[]
name
enabled=
gpgcheck=
baseurl=http://ip/mysource
2)测试一下
# yum repolist