3 RPM软件包简介
RPM包文件名特征
软件名-版本信息.操作系统.硬件架构.rpm
firefox-91.9.0-1.el8_5.x86_64.rpm
软件名:firefox
软件包名:firefox-91.9.0-1.el8_5.x86_64.rpm
4 RPM包的一般安装位置(分散)
普通执行程序:/usr/bin/ 、/bin/
服务器程序、管理工具:/usr/sbin/ 、/sbin/
配置文件 :/etc/、/etc/软件名/
日志文件 :/var/log/、/var/log/软件名/
程序文档、man帮助手册页 :/usr/share/doc/ 、/usr/share/man/
5 查询软件信息
查询是否安装此软件(参数是软件名)
- [root@localhost /]# rpm -qa #当前系统中所有已安装的软件包
- [root@localhost /]# rpm -q firefox #查看firefox是否安装
- firefox-52.7.0-1.el7.centos.x86_64
- [root@localhost /]# rpm -q httpd #httpd构建Web服务器软件
- 未安装软件包 httpd
- [root@localhost /]# rpm -q bash
- bash-4.2.46-30.el7.x86_64
- [root@localhost /]# rpm -qa | grep firefox
- [root@localhost /]# rpm -qa | wc -l
查询软件信息(参数是软件名)
- [root@localhost /]# rpm -qi firefox #查询软件信息
- [root@localhost /]# rpm -ql firefox #查询软件安装了哪些内容(安装清单)
- [root@localhost /]# rpm -ql firefox | less
- [root@localhost /]# rpm -ql firefox | wc -l #统计行数
- [root@localhost /]# rpm -qi bash #查询软件信息
- [root@localhost /]# rpm -ql bash #查询软件安装了哪些内容(安装清单)
- [root@localhost /]# rpm -ql bash | less
- [root@localhost /]# rpm -ql bash | wc -l #统计行数
查询某个目录/文件是哪个RPM包带来的
格式:rpm -qf [文件路径]…
即使目标文件被删除,也可以查询
- [root@localhost ~]# which vim #查询命令对应的程序文件
- /usr/bin/vim
- [root@localhost ~]# rpm -qf /usr/bin/vim
- vim-enhanced-8.0.1763-16.el8_5.13.x86_64
- [root@localhost ~]# rpm -q vim-enhanced
- vim-enhanced-8.0.1763-16.el8_5.13.x86_64
- [root@localhost ~]# rpm -qf /usr/sbin/poweroff
- [root@localhost ~]# rpm -qf /usr/sbin/ifconfig
查询软件包(参数软件包名)
- [root@localhost /]# rpm -q vsftpd #查询vsftpd软件是否安装
- 未安装软件包 vsftpd
- [root@localhost /]# ls /mnt/AppStream/Packages/v/vsftpd-3.0.3-35.el8.x86_64.rpm
- /mnt/AppStream/Packages/v/vsftpd-3.0.3-35.el8.x86_64.rpm
- 查询软件包的安装清单:
- [root@localhost /]# rpm -qpl /mnt/AppStream/Packages/v/vsftpd-3.0.3-35.el8.x86_64.rpm
- 查询软件包信息
- [root@localhost /]# rpm -qpi /mnt/AppStream/Packages/v/vsftpd-3.0.3-35.el8.x86_64.rpm
导入红帽签名信息(了解)
- [root@localhost /]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
- 查询软件包信息(没有警告输出)
- [root@localhost /]# rpm -qpi /mnt/AppStream/Packages/v/vsftpd-3.0.3-35.el8.x86_64.rpm
6 软件包的依赖关系
rpm命令方式:不能自动解决依赖关系
yum命令方式:能自动解决依赖关系
7 Yum仓库构建(光来啦!)
作用:自动解决依赖关系安装软件
服务端(本机): 1.众多的软件 2.仓库数据文件(repodata)
本地Yum仓库:服务端需要有光盘内容即可
客户端(本机):指定服务端位置
仓库配置文件:/etc/yum.repos.d/*.repo
错误的文件会影响正确的文件
yum命令执行流程:
yum命令--->读取/etc/yum.repos.d/*.repo配置文件内容--->从而找到仓库的具体位置
客户端文件配置内容:
[源名称] :自定义名称,具有唯一性
name:本软件源的描述字串
baseurl:指定YUM服务端的URL地址
enabled:是否启用此频道
gpgcheck:是否验证待安装的RPM包
gpgkey:用于RPM软件包验证的密钥文件
完整示例:
- [root@localhost /]# vim /etc/yum.repos.d/mydvd.repo
- [xixi]
- name=xixi
- baseurl=file:///mnt/AppStream
- enabled=1
- gpgcheck=1
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
- [haha]
- name=xixi
- baseurl=file:///mnt/BaseOS
- enabled=1
- gpgcheck=1
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
书写仓库配置文件:
- [root@localhost /]# vim /etc/yum.repos.d/haha.repo
- [xixi] #仓库的标识
- name=xixi #仓库描述信息,可以省略
- baseurl=file:///mnt/AppStream #指定仓库位置file://表示本地为服务端
- enabled=1 #本文件启用,可以省略
- gpgcheck=0 #不检测红帽签名信息
- [haha] #仓库的标识,不能重复
- name=xixi #仓库描述信息,可以省略
- baseurl=file:///mnt/BaseOS #指定仓库位置file://表示本地为服务端
- enabled=1 #本文件启用,可以省略
- gpgcheck=0 #不检测红帽签名信息
- [root@localhost /]# yum repoinfo #列出仓库信息
- [root@localhost /]# yum -y install httpd #安装软件包测试
- [root@localhost /]# rpm -q httpd #查询是否安装成功
- [root@localhost /]# mkdir /mydvd
- [root@localhost /]# mount /dev/cdrom /mydvd #挂载光驱设备
- [root@localhost /]# ls /mydvd
- [root@localhost /]# rm -rf /etc/yum.repos.d/*
- [root@localhost /]# vim /etc/yum.repos.d/haha.repo
- [xixi]
- name=xixi
- baseurl=file:///mydvd/AppStream
- enabled=1
- gpgcheck=0
- [haha] #仓库的标识,不能重复
- name=xixi #仓库描述信息,可以省略
- baseurl=file:///mydvd/BaseOS #指定仓库位置file://表示本地为服务端
- enabled=1 #本文件启用,可以省略
- gpgcheck=0 #不检测红帽签名信息
- [root@localhost /]# yum repoinfo #列出仓库信息
- [root@localhost /]# yum -y install mariadb-server #安装软件包测试
- [root@localhost /]# rpm -q mariadb-server #查询是否安装成功
总结:本地Yum仓库构建方法
1.显示光盘的内容,挂载光驱设备mount /dev/cdrom /mnt
2.书写仓库配置文件,指定仓库位置/etc/yum.repos.d/*.repo
3.执行流程:
yum命令--->/etc/yum.repos.d/*.repo--->baseurl=file:///mnt/AppStream
yum命令--->/etc/yum.repos.d/*.repo--->baseurl=file:///mnt/BaseOS3
总结:本地Yum仓库排除错误
1.没有挂载光驱设备
2./etc/yum.repos.d目录下的仓库配置文件内容写错
3./etc/yum.repos.d目录下,错误的配置文件影响
安装软件
- [root@localhost ~]# yum -y install httpd
- [root@localhost ~]# rpm -q httpd #检测是否安装成功
- [root@localhost ~]# yum -y install bind-chroot
- [root@localhost ~]# rpm -q bind-chroot
- [root@localhost ~]# yum -y install sssd
- [root@localhost ~]# rpm -q sssd
- [root@localhost ~]# yum -y install gcc
- [root@localhost ~]# rpm -q gcc
卸载软件(建议不要使用-y选项)
- [root@localhost ~]# yum remove gcc
- [root@localhost ~]# yum remove httpd
- [root@localhost ~]# rpm -q gcc
- [root@localhost ~]# rpm -q httpd
Yum仓库的查询
- [root@localhost /]# yum list ftp #查询仓库是否有ftp软件
- 可安装的软件包 #表示当前系统没有安装该软件
- ftp.x86_64 0.17-67.el7 nsd20
- [root@localhost /]# yum list httpd
- [root@localhost /]# yum search ftp #包含ftp就匹配
- [root@localhost /]# yum provides /usr/bin/hostname
- [root@localhost /]# yum provides /etc/passwd #仓库中那个软件包产生该文件
- [root@localhost /]# yum provides "*/guestmount" #查询仓库中那个软件可以在任意路径下产生该程序
- [root@localhost /]# yum -y install libguestfs-tools-c
- [root@localhost /]# guestmount --help #查看帮助信息
删除/usr/bin/zip程序,然后通过yum工具进行恢复
- [root@svr1 ~]# rm -rf /usr/bin/zip
- [root@svr1 ~]# ls /usr/bin/zip
- ls: 无法访问/usr/bin/zip: 没有那个文件或目录
- [root@svr1 ~]# yum provides /usr/bin/zip #查询仓库中那个软件,产生了此程序
- [root@svr1 ~]# yum -y reinstall zip #覆盖安装
- [root@svr1 ~]# ls /usr/bin/zip
- /usr/bin/zip
清空缓存(了解)
执行流程: yum命令--->/etc/yum.repos.d/*.repo--->baseurl=file:///mnt
- [root@localhost ~]# yum clean all #清空Yum的缓存
- [root@localhost ~]# yum repoinfo #列出仓库信息
8 命令补充
获取命令帮助
- 方式一:命令 --help
- [root@localhost ~]# cat --help
- [root@localhost ~]# yum --help
- 方式二:man 命令
- [root@localhost ~]# man cat #按q退出
- [root@localhost ~]# man passwd #显示passwd命令帮助
- [root@localhost ~]# man 5 passwd
- 数字5表示帮助的类型,表示配置文件类型
历史命令
管理/调用曾经执行过的命令
history:查看历史命令列表
history -c:清空历史命令
history -w:记录历史命令为空的状态
!n:执行命令历史中的第n条命令
!str:执行最近一次以str开头的历史命令
- [root@svr7 ~]# vim /etc/profile
- HISTSIZE=1000 #默认记录1000条
- [root@localhost ~]# history #显示历史命令列表
- [root@localhost ~]# history -c #清空历史命令
- [root@localhost ~]# history -w #记住历史命令为空
- [root@localhost ~]# history
- [root@localhost ~]# cat /etc/redhat-release
- [root@localhost ~]# ls /root
- [root@localhost ~]# history
- [root@localhost ~]# !cat #指定最近一条以cat开头的历史命令
- [root@localhost ~]# !ls #指定最近一条以ls开头的历史命令
date,查看/调整系统日期时间
- [root@localhost /]# date
- [root@localhost /]# date -s "2008-9-6 11:17:11" #修改系统时间
- [root@localhost /]# date
- [root@localhost /]# date -s "2023-02-21 15:55:11"
- [root@localhost /]# date
date单独显示时间
- [root@localhost ~]# date +%Y #显示年
- [root@localhost ~]# date +%m #显示月
- [root@localhost ~]# date +%d #显示日期
- [root@localhost ~]# date +%H #显示时
- [root@localhost ~]# date +%M #显示分
- [root@localhost ~]# date +%S #显示秒
- [root@localhost ~]# date +%F #显示年-月-日
- [root@localhost ~]# date +%T #显示时:分:秒
bc计算器
du,统计目录占用硬盘的空间
-s:只统计每个参数所占用的总空间大小
-h:提供易读容量单位(K、M等)
- [root@localhost ~]# du -sh /root
- [root@localhost ~]# du -sh /etc
- [root@localhost ~]# du -sh /boot
- [root@localhost ~]# du -sh /
制作链接文件(制作符号链接)(制作快捷方式)
方式一:软链接
格式:ln -s /路径/源数据 /路径/快捷方式的名称 #软链接
- [root@localhost /]# ls /etc/hosts
- [root@localhost /]# ln -s /etc/hosts /hs
- [root@localhost /]# ls /
- [root@localhost /]# ls -l /hs
- [root@localhost /]# ls /opt
- [root@localhost /]# ln -s /opt /haxi
- [root@localhost /]# ls -l /haxi #查看快捷方式详细属性
- [root@localhost /]# ls -l /haxi/ #查看源目录内容详细数据
软链接优势:可以针对目录与文件制作快捷方式,支持跨分区
软链接缺点:源数据消失,快捷方式失效
方式二:硬链接
格式:ln /路径/源数据 /路径/快捷方式的名称 #硬链接
硬链接优势:源数据消失,快捷方式仍然有效
硬链接缺点:只能针对文件制作快捷方式,不支持支持跨分区
- [root@A ~]# rm -rf /opt/*
- [root@A ~]# echo 123 > /opt/A.txt
- [root@A ~]# ln -s /opt/A.txt /opt/B.txt #软链接
- [root@A ~]# ls /opt/
- [root@A ~]# ln /opt/A.txt /opt/C.txt #硬链接
- [root@A ~]# ls /opt/
- [root@A ~]# cat /opt/B.txt
- [root@A ~]# cat /opt/C.txt
- [root@A ~]# ls -i /opt #查看硬盘存储i节点编号
- [root@A ~]# rm -rf /opt/A.txt
- [root@A ~]# ls /opt/
- [root@A ~]# cat /opt/B.txt #软链接失效
- cat: /opt/B.txt: 没有那个文件或目录
- [root@A ~]# cat /opt/C.txt #硬链接仍然有效
- 123
zip归档工具,跨平台(Windows与Linux)
- 归档+压缩操作: zip [-r] 备份文件.zip 被归档的文档...
- [-r]:被归档的数据有目录,必须加上此选项
- [root@localhost /]# ls /usr/bin/zip
- [root@localhost /]# zip -r /opt/abc.zip /etc/passwd /home
- [root@localhost /]# ls /opt/
- 释放归档+解压操作: unzip 备份文件.zip [-d 目标文件夹]
- [root@localhost /]# unzip -l /opt/abc.zip #查看压缩包的内容
- [root@localhost /]# mkdir /nsd20
- [root@localhost /]# unzip /opt/abc.zip -d /nsd20
- [root@localhost /]# ls /nsd20
- [root@localhost /]# ls /nsd20/etc
- [root@localhost /]# ls /nsd20/home
9 案例:查询已安装的软件信息
9.1 问题
- 列出当前主机已安装的所有RPM软件
- 查看firefox软件包的安装清单
- 查询ifconfig命令程序是安装哪个软件包后产生的
- 查看firefox软件包的用途
9.2 方案
查询所有已安装的rpm包,可以利用命令rpm -qa。
查询一个软件安装清单,可以利用命令rpm -ql 软件名。
查询一个文件是由哪个软件包安装后产生,可以利用命令rpm -qf 文件绝对路径。本题中首先要找到,ifconfig命令的可执行程序在哪里,可以利用which命令。
查看软件的用途,可以利用命令rpm -qi 软件名。
9.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:列出当前主机已安装的所有RPM软件
命令操作如下所示:
- [root@localhost ~]# rpm -qa
步骤二:查看firefox软件包的安装清单
命令操作如下所示:
- [root@localhost ~]# rpm -ql firefox
步骤三:查询ifconfig命令程序是安装哪个软件包后产生的
命令操作如下所示:
- [root@localhost ~]# which ifconfig #查询命令所对应的程序
- /sbin/ifconfig
- [root@localhost ~]# rpm -qf /sbin/ifconfig
- net-tools-2.0-0.52.20160912git.el8.x86_64
- [root@localhost ~]#
步骤四:查看firefox软件包的用途
命令操作如下所示:
- [root@localhost ~]# rpm -qi firefox
- Name : firefox
- Version : 91.9.0
- Release : 1.el8_5
- Architecture: x86_64
- Install Date: 2023年03月01日 星期三 09时37分59秒
- Group : Unspecified
- Size : 274681709
- License : MPLv1.1 or GPLv2+ or LGPLv2+
- Signature : RSA/SHA256, 2022年05月04日 星期三 14时37分51秒, Key ID 15af5dac6d745a60
- Source RPM : firefox-91.9.0-1.el8_5.src.rpm
- Build Date : 2022年05月04日 星期三 13时16分20秒
- Build Host : ord1-prod-x86build001.svc.aws.rockylinux.org
- Relocations : (not relocatable)
- Packager : [email protected]
- Vendor : Rocky
- URL : https://www.mozilla.org/firefox/
- Summary : Mozilla Firefox Web browser
- Description :
- Mozilla Firefox is an open-source web browser, designed for standards
- compliance, performance and portability.
10 案例:查询待安装的.rpm包
10.1 问题
- 查询光盘中的 vsftpd软件包的用途、安装清单
- 查询光盘中的 bind-chroot 软件包的用途、安装清单
10.2 方案
注意在查询未安装的.rpm包信息时,提供的命令参数应该是准确的包文件路径,仅指定软件名是不行的。指定文件路径时,多利用Tab键补全。提前将系统光盘挂载到/media目录,以便使用相关包文件。
10.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:查询光盘中的 vsftpd 软件包的用途、安装清单
首先将光盘设备手动挂载到/media目录,进行查询操作。
命令操作如下所示:
- [root@localhost ~]# mount /dev/cdrom /media/
- mount: /media: WARNING: device write-protected, mounted read-only.
- [root@localhost /]# rpm -qpi /media/AppStream/Packages/v/vsftpd-3.0.3-35.el8.x86_64.rpm
- ……
- [root@localhost /]# rpm -qpl /media/AppStream/Packages/v/vsftpd-3.0.3-35.el8.x86_64.rpm
- ……
步骤二:查询光盘中的 bind-chroot 软件包的用途、安装清单
命令操作如下所示:
- [root@localhost /]# rpm -qpi /media/AppStream/Packages/b/bind-chroot-9.11.36-3.el8.x86_64.rpm
- [root@localhost /]# rpm -qpl /media/AppStream/Packages/b/bind-chroot-9.11.36-3.el8.x86_64.rpm
11 案例:RPM软件的安装和卸载
11.1 问题
- 找出vim、vi是由哪两个包产生的
- 删除vim、vi命令程序
- 修复vim、vi
- 安装bind-chroot包,体验Linux依赖关系
11.2 方案
本题的思路是,首相通过which命令查找到vim、vi命令可执行程序所在位置,在通过“rpm –qf 文件绝对路径”命令查看该可执行程序,是由那个包产生的。删除该可执行程序后,再将软件包安装重新产生即可。但在安装时需注意,系统会提示改程序已经安装,需加上“--force”选项强制安装。
11.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:找出vim、vi是由那两个包产生的
命令操作如下所示:
- [root@localhost ~]# which vi vim
- /usr/bin/vi
- /usr/bin/vim
- [root@localhost ~]# rpm -qf /usr/bin/vi
- vim-minimal-8.0.1763-16.el8_5.13.x86_64
- [root@localhost ~]# rpm -qf /usr/bin/vim
- vim-enhanced-8.0.1763-16.el8_5.13.x86_64
步骤二:删除vim、vi命令程序
命令操作如下所示:
- [root@localhost ~]# rm -rf /usr/bin/vi /usr/bin/vim
- [root@localhost ~]#
步骤三:修复vim、vi
首先将光盘设备手动挂载到/media目录,进行修复操作。
命令操作如下所示:
- [root@localhost ~]# mount /dev/cdrom /media/
- mount: block device /dev/sr0 is write-protected, mounting read-only
- [root@localhost ~]# rpm -ivh --force /media/BaseOS/Packages/v/vim-minimal-8.0.1763-16.el8_5.13.x86_64.rpm
- [root@localhost ~]# rpm -ivh --force /media/AppStream/Packages/v/vim-enhanced-8.0.1763-16.el8_5.13.x86_64.rpm
- ……
- [root@localhost ~]#
步骤四:安装bind-chroot包,体验Linux依赖关系
命令操作如下所示:
- [root@localhost ~]# cd /media/AppStream/Packages/b
- [root@svr5 Packages]# rpm -ivh bind-chroot-9.11.36-3.el8.x86_64.rpm
- error: Failed dependencies:
- ……
- [root@svr5 Packages]# rpm -ivh bind-9.11.36-3.el8.x86_64.rpm
- Preparing... ########################################### [100%]
- 1:bind ########################################### [100%]
- [root@svr5 Packages]# rpm -ivh bind-chroot-9.11.36-3.el8.x86_64.rpm
- Preparing... ########################################### [100%]
- 1:bind-chroot ########################################### [100%]
12 案例:配置Yum仓库及客户端及验证
12.1 问题
- 将光盘挂载到/dvd,搭建本地Yum
- 将本机设置为客户端,进行Yum验证
- 查询Yum库中是否有firefox包
- 使用yum命令安装bind包
- 利用Yum安装bind
- 利用Yum卸载bind
- 利用yum search查询与httpd相关的包
- 利用yum info查询firefox包描述信息
12.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:搭建一个本地Yum,将光盘手动挂载到/dvd
命令操作如下所示:
- [root@localhost ~]# mkdir /dvd
- [root@localhost ~]# ls /dvd
- [root@localhost ~]# mount /dev/cdrom /dvd/
- mount: /dev/sr0 写保护,将以只读方式挂载
- [root@localhost ~]# ls /dvd/
步骤二:将本地设置为客户端,进行Yum验证
Yum客户端需编辑配置文件,命令操作如下所示:
- [root@localhost ~]# ls /etc/yum.repos.d/
- [root@localhost ~]# mkdir /etc/yum.repos.d/repo
- [root@localhost ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo
- [root@localhost ~]# ls /etc/yum.repos.d/
- [root@localhost ~]# vim /etc/yum.repos.d/dvd.repo
- [App] #仓库标识,可以任意
- name=App #仓库的描述信息,可以任意
- baseurl=file:///dvd/AppStream #指定服务端位置,file://代表本地为服务端
- enabled=1 #是否启用本文件
- gpgcheck=0 #是否检测红帽签名信息
- [Base] #仓库标识,可以任意
- name=Base #仓库的描述信息,可以任意
- baseurl=file:///dvd/BaseOS #指定服务端位置,file://代表本地为服务端
- enabled=1 #是否启用本文件
- gpgcheck=0 #是否检测红帽签名信息
- [root@localhost ~]# yum repoinfo -v #列出仓库信息
- [root@localhost ~]# yum repoinfo #列出仓库信息
步骤三:查询yum库中是否有firefox包
命令操作如下所示:
- [root@localhost /]# yum list | grep firefox
步骤四:利用yum安装bind包
命令操作如下所示:
- [root@localhost /]# yum -y install bind
- ……
步骤二:利用Yum卸载bind
命令操作如下所示:
- [root@localhost /]# yum -y remove bind
- ……
步骤四:利用yum search查询与httpd相关的包
命令操作如下所示:
- [root@localhost /]# yum search httpd
- ……
步骤四:利用yum info查询firefox包描述信息
命令操作如下所示:
- [root@localhost /]# yum info firefox
- ……