大家有想过平时我们使用的软件原本的样子都是什么嘛,像.exe 运行程序还有 linux 上的可执行文件,其实按照我的理解都是文件,使用想要规范的文本编写,然后经过编译的一个符合不同平台规范的可执行程序,本质就是文件。
Linux 上的软件安装也是如此,Linux 中一切皆文件。
软件管理大概流程:编写一个纯文本文件(需要不同编程软件可视化),然后经过编码编码等成为一个可执行文件,里面包含了相关依赖脚本及依赖信息,加上一些与程序相关的信息(厂家、更新日期、版本、安装位置等等),建立成一个数据库信息,类似与 window 于 windows 的程序与功能面板。Linux 上就使用上述机制进行软件管理,分别是RPM和 debian 的dpkg,我这边主要使用 centos,因此主要了解 RPM 的使用与管理 rpm 工具。
RPM 全名是(RedHat Package Manager),最初是 Red Hat 发展出来的,是一种以数据库记录方式将所需要的软件安装到 Linux 系统的一套软件管理机制。
大概步骤:
1、要安装的软件经过编译打包成为 rpm 机制的文件,打包好的软件里面默认记录的软件安装时必须具备的依赖属性的软件。
2、当你的主机需要安装这个 rpm 软件时,rpm 机制会依照软件记录的数据查询当前主机是否满足依赖软件,满足则安装,否则不予安装,如果安装则将该软件信息写入 linux 的 rpm 数据库,以便未来的查询、验证、安装、卸载。
3、你要安装的 rpm 软件是经过相同系统进行编译打包,因此一般不同的系统打包的 rpm 不能通用,也就是不同发行版 Linux 发布的 RPM 不能用在其他的发行版 Linux 上,如 Centos6 和 Centos7 使用不同的 RPM 源。
4、rpm 软件包以.rpm 结尾
5、系统rpm数据库位置:/var/lib/rpm ,不同发行版可能不一样
示例:
mysql-server-8.0.26-1.module_el8.4.0+915+de215114.x86_64
# 以 - 区分不同部分
mysql-server:软件名称
8.0.26:软件版本
1.module_el8.4.0: RPM包的版本号,它包括主版本号(1)、模块版本号(module)、发行版版本号(el8.4.0)
+915+de215114: 这部分是构建版本号,通常由编译时的配置和一些其他信息组成。
.x86_64: 这表示的是该RPM包适用于x86_64架构的处理器。
rpm -ivh mysql-server
-i: install 安装
-v: 查看更详细的安装信息
-h: 显示安装进度
--force:强制安装,可能出现问题
--prefix 目录路径:强行安装到rpm非指定目录下
--test:测试是否能够安装,rpm -ivh mysql --test
rpm [-Uvh/Fvh] mysql-server
-Uvh: 后面接的软件没有安装过则直接安装,安装过则更新至最新版
-Fvh: 只会更新,不会新安装
查询Linux系统上安装的rpm软件信息。
如果通过编译方式就无法通过 rpm 以及 yum 查看信息。
# query查询,使用rpm查询都需要参数-q
rpm -qa: 已安装在系统上软件
rpm -q: 仅查询
rpm -qf: rpm文件,查看rpm文件
rpm -qi: 列出软件的详细信息
rpm -ql: 列出软件的目录和文件
rpm -qc: 列出软件在/etc上的配置文件
rpm -qR: 列出软件依赖软件包含的文件
用于验证现在软件文件是否被修改,就是与rpm记录的原始状态相比是否有改变,如配置文件位置,文件名称,文件大小等
rpm -V mysql-server
-V: 被修改过才会出现
-Va: 列出所有可能被修改的文件
-Vp: 文件名 列出文件是否被修改
-Vf: 显示某个文件是否被修改
# 显示结果
[root@localhost rpm]# rpm -V mysql-server
.......T. c /etc/my.cnf.d/mysql-default-authentication-plugin.cnf
S.5....T. c /etc/my.cnf.d/mysql-server.cnf
上面结果显示文件的大小和MD5校验值已经被修改了。
S 文件的大小改变
M rwx属性被修改
5 MD5校验值被修改
D 设备的主次代码被修改
L 链接路径改变
U 用户的所属用户改变
G 文件的所属组改变
T 文件的建立时间被改变
P 功能被改变
后面文件类型:
c 配置文件
d 数据文件
g 幽灵文件
l 许可文件
r 自述文件
通过 rpm -V 可以检查软件或者所属的文件是否被修改
通过-e 参数进行卸载,但是经常会出现依赖无法卸载,强行卸载有风险。
rpm -e mysql
# 由于rpm经常会安装、删除、升级等可能导致/var/lib/rpm内文件损坏,可以进行数据库信息重建
rpm --rebuilddb 重建数据库
rpm管理的缺点:
yum(全称为Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。YUM是C/S架构设计,本地电脑为客户端,从官方或者第三方提供yum服务器作为服务器端。
1、整理本地rpm数据库信息
2、从官方yum服务器获取rpm软件信息
3、需要下载的软件缓存在/var/cache/yum,新版可能在/var/cache/dnf
4、需要下载更新软件时只要联网从服务器一次性下载依赖和软件进行安装
yum使用方法:
yum [option] 查询软件 相关参数
参数:
-y: 自动选择yes
--installroot=/some/pat: 指定安装路径,不使用默认路径
# option
search: 搜索
list: 目前yum服务器所管理的所有软件与版本,类似rpm -qa
info: 列出软件的详细信息以及是否安装 类似rpm -qai
provides: 从文件查找软件 rpm -qf
yum list updates: 查看目前yum可以更新的软件及仓库名
安装与升级软件:
yum install/update 软件
install: 安装软件
update: 升级软件,若要整个系统升级直接yum update 不跟具体软件即可
删除卸载软件:
yum remove nginx
yum 配置文件 默认配置文件路径/etc/yum.repos.d/
在一个 xxx.repo
文件里面定义 yum 源,通过 enabled 启用和禁用
[base]
name=CentOS-8.5.2111 - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/$basearch/os/
http://mirrors.aliyuncs.com/centos-vault/8.5.2111/BaseOS/$basearch/os/
http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/BaseOS/$basearch/os/
gpgcheck=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
#additional packages that may be useful
[extras]
name=CentOS-8.5.2111 - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/extras/$basearch/os/
http://mirrors.aliyuncs.com/centos-vault/8.5.2111/extras/$basearch/os/
http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/extras/$basearch/os/
gpgcheck=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
[base]:软件源的名字,中括号,不能相同
name:名称随意
baseurl:使用的镜像站,可以多个
mirrorlist:有一些为这个名字,意思一样
gpgcheck=0: 是否检查RPM签名,0关闭,1开启
gpgkey:签名文件路径
enabled=0:0禁用,默认启用或者设置为1
查看所有软件源
yum repolist all
#
仓库 id 仓库名称 状态
AppStream CentOS-8.5.2111 - AppStream - mirrors.aliyun.com 启用
PowerTools CentOS-8.5.2111 - PowerTools - mirrors.aliyun.com 禁用
base CentOS-8.5.2111 - Base - mirrors.aliyun.com 启用
centosplus CentOS-8.5.2111 - Plus - mirrors.aliyun.com 禁用
docker-ce-nightly Docker CE Nightly - x86_64 启用
docker-ce-nightly-debuginfo Docker CE Nightly - Debuginfo x86_64 禁用
yum 文件必须以.repo 结尾。 yum 下载软件源列表到/var/cache/yum,新版可能在/var/cache/dnf
yum clean xxx
packages 将已下载的安装文件删除
headers 将已下载的软件源数据删除
all 将所有已下载过的软件源数据删除
# 更新缓存
yum makecache # 更新缓存
yum update -y # 升级软件源
指定 Yum 源安装,前提是已经配置好 yum 源
yum --enabledrepo=epel install netcdf R
更新系统 yum 源为阿里云源:
# yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# epel源 阿里云:https://mirrors.aliyun.com/epel/
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
总结: Centos使用rpm软件包机制进行软件的安装、升级与卸载,rpm包包括了需要安装的软件与依赖,不同发行版的rpm不能通用。离线rpm包的下载和复制较麻烦,因此出现了C/S架构的yum管理工具,通过读取本地rpm数据库形成yum数据库信息,配置yum源服务器信息从服务器下载更新软件。
下面是相关的yum源服务器:
CentOS系统的官方yum源地址:http://mirror.centos.org/
阿里云的CentOS yum源地址:http://mirrors.aliyun.com/centos/
网易的CentOS yum源地址:http://mirrors.163.com/centos/
搜狐的CentOS yum源地址:http://mirrors.sohu.com/centos/
本文由 mdnice 多平台发布