【Linux】软件管理机制和软件安装
文章目录
- 1. 软件管理器
- 1.1 Linux的软件管理方式
- 1.2 Linux的常见软件管理机制RPM和dpkg
- 2. RPM
- 2.1 rpm安装
- 2.2 rpm升级与更新
- 2.3 rpm查询
- 2.4 rpm验证与数字签名
- 2.5 rpm反安装与重建数据库
- 3. YUM
- 3.1 yum查询
- 3.2 yum安装/升级
- 3.3 yum删除
- 3.4 yum的配置文件
- 3.5 yum的软件群组功能
- 4. SRPM
- 4.1 安装srpm文件
1. 软件管理器
1.1 Linux的软件管理方式
- Linux开发商先在固定的硬件平台和操作系统上,将需要安装或升级的软件编译好,并将与这个软件相关的所有文件打包成一个软件安装文件(这个软件安装文件中还包含了预先检测系统与依赖软件的脚本,并提供记录该软件提供的所有文件信息等)然后将这个软件安装文件发布。
- 客户端获取该文件之后,仅需通过执行特定的命令来安装,该文件就会依照内部的脚本来检测依赖的辅助软件是否存在,若安装的环境符合要求,就会开始安装。安装完后还会将该软件的信息写入软件管理机制中,以便未来进行升级、删除等。
1.2 Linux的常见软件管理机制RPM和dpkg
软件管理机制 | 使用命令 | 在线升级功能 | 发行商 |
---|---|---|---|
RPM | rpm、rpmbuild | yum | Red Hat/Fedora |
DPKG | dpkg | apt | Debian/Ubuntu |
2. RPM
RPM:RedHat Package Manager,rpm是一种以数据库记录的方式,将所需的软件安装到Linux系统中的一套软件管理机制。
RPM要求要将安装的软件先编译过,并打包为RPM机制的文件,并通过打包好的软件里默认的数据库,记录该软件要安装的时候必须具备的依赖属性软件。
RPM属性依赖的解决方式:YUM在线升级
- 发行商先将发布的软件放到yum服务器,然后分析这些软件的依赖属性问题,将这些信息(依赖项,以及所在的url)记录成一个表;
- 客户端有软件安装需求时,会主动向yum服务器的软件源地址下载列表,然后与本机rpm数据库中已存在的软件数据相比较,从而一次性安装完所有具有依赖属性的软件。
2.1 rpm安装
P.S. 只有root才能执行rpm命令。
rpm -ivh [packageName]
-i : install的意思
-v : 查看详细安装信息
-h : 显示安装进度
安装完后,软件相关的信息会被写入/var/lib/rpm
目录下的数据库文件中。
2.2 rpm升级与更新
-Uvh : 后接的软件若没有安装过,则直接安装;若之前有安装过旧版,则自动更新到新版
-Fvh : 若后接的软件未安装,则该软件不会被安装,即之后已安装的软件才会被升级
2.3 rpm查询
rpm查询是在/var/lib/rpm/
下的数据库文件中进行查询的
rpm -qa-q : 仅查询,后接已安装的软件名称
-qa : 列出所有已安装的软件名称
-qi : 列出该软件的详细信息
-ql : 列出该软件所有的文件与目录所在完整文件名
-qc : 列出该软件的所有配置文件
-qd : 列出该软件的所有说明文件
-qR : 列出与该软件有关的依赖软件所含的文件
-qf : 后接文件名,找出该文件属于哪个已安装的软件
2.4 rpm验证与数字签名
验证(Verify)的作用方式是将/var/lib/rpm/
下的数据库内容与当前系统下所有安装的软件作对比,即若当有文件修改、或误删了某个文件,就可使用验证的功能来验证下原来的文件。
rpm -Va
-V : 后接软件名,若该软件所含的文件有修改才会显示
-Va : 列出目前系统上所有被修改过的文件
-Vp : 后接某个rpm文件的文件名,列出该软件内可能被修改过的文件
-Vf : 后接系统上的某个文件,显示该文件是否被修改过
示例:
[root@server8 rpm]# rpm -Vf /var/log/lastlog
.M....G.. g /var/log/lastlogS : file size differs,文件的大小是否被改变
M : mode differs,文件的类型或属性(rwx)是否被修改
5 : md5sum differs,md5校验值已不同
D : device major/minor number mis-match,设备的主/次代码已改变
L : 链接路径已改变
U : user ownership differs,文件的所属用户已改变
G : group ownership differ,文件所属用户组已改变
T : mtime differs,文件的mtime改变
P : capability differs,功能已改变c : config file, 配置文件
d : documentation,数据文件
g : ghost file,幽灵文件,通常是该文件不被某个软件所包含,较少发生
l : license file,许可证文件
r : readme,自述文件
数字签名,是用来检验软件来源的,当要安装一个rpm文件时:
- 先要安装原厂发布的公钥文件;
- 实际安装rpm软件时,rpm命令会读取rpm文件的签名信息,并与本机系统内的签名信息相比较;
- 若签名相同则予以安装,若找不到相关的签名信息时,则告警并停止安装。
以CentOs为例,CentOS使用的数字签名系统为GnuPG(GPG),GPG通过哈希运算,算出独一无二的数字签名或专属密钥。
# CentOS的数字签名位于的路径
[root@server8 rpm-gpg]# pwd
/etc/pki/rpm-gpg
[root@server8 rpm-gpg]# ll
总用量 12
-rw-r--r--. 1 root root 1683 9月 14 2021 RPM-GPG-KEY-centosofficial
-rw-r--r--. 1 root root 1687 9月 14 2021 RPM-GPG-KEY-centostesting
-rw-r--r--. 1 root root 1855 8月 18 2021 RPM-GPG-KEY-redhat-release
[root@server8 rpm-gpg]# ll RPM-GPG-KEY-centosofficial
-rw-r--r--. 1 root root 1683 9月 14 2021 RPM-GPG-KEY-centosofficial# 安装公钥文件
rpm --import RPM-GPG-KEY-centosofficial# 安装完后,密钥基本上都是使用pubkey作为软件的名称字段
[root@server8 rpm-gpg]# rpm -qa | grep -ai "pubkey"
gpg-pubkey-8483c65d-5ccc5b19# 可使用-qi查看该软件的信息
2.5 rpm反安装与重建数据库
反安装即将软件卸载,但要注意的是卸载的时候一定要由最上层往下解除
rpm -e [要删除的软件]# rpm重建数据库
rpm --rebuilddb
3. YUM
3.1 yum查询
yum [options] [查询工作选项] [相关参数]# options
-y : 当yum需等待使用者输入时,该选项可自动提供yes回应
--installroot=/some/path/ : 将该软件安装在/some/path/而不使用默认路径# [查询工作选项 ] [相关参数]
search : 查找某个软件名称或是描述的重要关键字
list : 列出目前yum管理的所有软件与版本,类似rpm -qa
info : 同上,类似rpm -qai
provides : 从文件中去查找软件,类似rpm -qf
3.2 yum安装/升级
yum [option] [安装与升级的工作选项] [相关参数]
# 选项与参数
install : 后接要安装的软件
update : 后接要升级的软件,若要升级整个系统,则不接参数直接update
3.3 yum删除
yum remove [要删除的软件]
3.4 yum的配置文件
yum的配置文件存放在/etc/yum.repos.d/
路径下,文件的后缀为.repo
。
[root@server8 yum.repos.d]# cat CentOS-Linux-BaseOS.repo
# CentOS-Linux-BaseOS.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client. You should use this for CentOS updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.[baseos]
name=CentOS Linux $releasever - BaseOS
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
文件内容说明:
[base] : 软件源名字,中括号一定要存在,名字可以自己取,但不能有两个相同的软件源名称,否则yum会不知道该到哪里去找软件源相关的软件列表
name : 仅说明该软件源的意义,重要性不高
mirrorlist= : 列出该软件源可使用的镜像站,若不想使用可直接注释掉
baseurl= : 最重要,后接软件源实际地址。mirrorlist是由yum程序去识别镜像站;baseurl则是指定固定一个软件源url
enable=1 : 启用该软件源
gpgcheck=1 : 数字签名,指定是否需要查看rpm文件内的数字签名
gpgkey= : 数字签名的公钥文件所在位置,使用默认值即可
关于软件源:
# 列出当前yum服务器所使用的软件源
yum repolist all
# 回显内容一共有三列
# 列1 : repoid
# 列2 : repo name
# 列3 : status , 表示该软件源是否正常运行
修改软件源:
# 例如将yum源替换为国内源
# 先备份原始yum源文件
mkdir repoBak
cp -r *.repo repoBak
# 删除原来的repo文件,或者将其置为enable=0
# 下载国内源(阿里)的配置文件
sudo wget -O /etc/yum.repos.d/CentOS-Base-Ali.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# P.S. Cetnos-8.repo已停止维护,使用Centos-vault-8.5.2111.repo# 清理yum缓存.更换yum源之后需要清理原有缓存,以便使用新的源进行软件包更新
yum clean all
yum makecache
新建.repo文件。
3.5 yum的软件群组功能
yum [群组功能] [软件群组]
# 选项与参数
grouplist : 列出所有可使用的【软件群组组】
groupinfo : 后接group name,则可了解该group内含的所有软件名
groupinstall : 可安装一整组的软件群组
groupremove : 删除某个软件群组
4. SRPM
srpm文件是包含了软件源码的。srpm最大的优点就是可以让用户自行修改设置参数(makefile/configure的参数),以符合用户自己的Linux环境。
4.1 安装srpm文件
rpmbuild
命令用于安装srpm文件。使用默认值安装srpm文件:
--rebuild : 该选项会见过后跟的srpm进行编译和打包,最后产生rmp文件,但产生的rpm文件并未安装到系统上
--recompile : 这个选项会直接编译、打包并安装