目录:
1、零散软件包的管理
从光盘里面的Packages目录获取需要的RPM软件包;
# mount /dev/sr0 /mnt #或搭建web服务器,把光盘的所有内容放到web服务器上也可以
3、使用rpm命令管理软件
RPM Package Manager, RPM包管理器
【1】 查询rpm包及相关信息
语法格式:rpm -q 软件名.. ->查询软件包
# rpm -q vsftpd
vsftpd-3.0.2-29.el7_9.x86_64 #能查询到,表示已安装了
常用的用法有:
# rpm -qa |grep vsftpd #查询所有包,然后grep 过滤关键字
# rpm -ql vsftpd #查看已安装软件包的安装清单,查看安装的软件包生成了哪些文件
# rpm -qlp vsftpd-3.0.2-25.el7.x86_64.rpm #查看未安装的软件包的安装清单,必须指定这个rpm在哪个位置
# rpm -qi httpd #查询已安装包:httpd的相关元数据信息
# rpm -qip vsftpd-3.0.2-25.el7.x86_64.rpm #查询:vsftpd-3.0.2-25.el7.x86_64.rpm 这个包的信息,可以已安装,也可能未安装
【2】安装rpm包
语法格式:rpm -ivh 软件名-版本信息.rpm ->安装软件包,没有安装位置的选择,无法解决依赖
【3】卸载rpm包
语法格式:rpm -e --nodeps 软件名... ->卸载软件包,其中--nodeps 表示不检测依赖包
如下实例:
# rpm -qa |grep httpd #httpd包依赖于httpd-tools ,如果我们卸载了httpd-tools ,不带--nodeps ,会把httpd一起卸载了
httpd-tools-2.4.6-97.el7.centos.5.x86_64
httpd-2.4.6-97.el7.centos.5.x86_64
# rpm -e --nodeps httpd-tools #带--nodeps,表示只卸载httpd-tools,不会卸载依赖此包的rpm包
# rpm -qa |grep httpd #发现只卸载了httpd-tools包,依赖于它的包没有事
httpd-2.4.6-97.el7.centos.5.x86_64
【4】通过rpm包升级Linux内核
# uname -r #查看当前内核版本 3.10.0-957.el7.x86_64 # rpm -ivh kernel-3.10.0-957.el7.x86_64.rpm #时间比较长,需要耐心的等待
【5】重新构建rpm数据库
# cd /var/lib/rpm #rpmdb所在目录
# rm -f __db.* #清除原rpmdb文件
# rpm --rebuilddb #重建rpm数据库
# yum clean all #清除所有yum的缓存
a.当无法使用rpm -qi 查询已安装的rpm信息时,可尝试使用使用重建rpm数据库操作;
b.或者直接现象是所有与rpm相关的安装查询指令都会卡主,进程处于S状态,无法自行结束;
# ps -aux |grep rpm
以上2种方法可以尝试重建rpm数据库
4、YUM 软件包仓库-自动解决依赖关系
服务:可以为客户端自动解决依赖关系,安装软件包
客户端手写一个.repo文件,把repo文件放到:/etc/yum.repos.d/ 如下:
[cdrom] ->仓库标识
name=cdrom ->仓库描述信息
baseurl=file:///mnt ->指定文件位置
enabled=1 -> 等于1表示开启
gpgcheck=0 -> 关闭,不检测包的签名
一个简单的repo文件就配置好了!
注意:错误的repo配置文件会影响正确的配置文件。
# yum repolist #列出仓库信息,能显示但并不一定能使用
# yum install httpd #会分析安装httpd软件包,需要哪些包(依赖包)
# yum remove httpd-tools #不要使用这种方法卸载软件包,会导致httpd-tools包及依赖于httpd-tools包一起被卸载,建义不要跟-y,推荐用:rpm -e --nodeps 软件包 的方式卸载
# yum clean all #清空缓存
# yum makecache #生成缓存
# yum provides vim #查询关键字(比如命令名字),由哪个包提供,非常实用
# yum search vim #查看与关键字匹配的包,非常实用
# yum install vsftpd #使用ftp来做yum源
# systemctl start vsftpd
# systemctl enable vsftpd
# mkdir /var/ftp/CentOS-1804 #存放光盘的目录
# mount /dev/sr0 /var/ftp/CentOS-1804
然后编辑客户端的repo 文件:
[cdrom] ->仓库标识
name=cdrom ->仓库描述信息
baseurl=ftp://192.168.1.254/CentOS-1804 ->指定文件位置
enabled=1 -> 等于1表示开启
gpgcheck=0 -> 关闭,不检测包的签名
完成以上配置,一个yum源服务器配置完毕!
# yum -y install createrepo #createrepo用于生成repodata文件
# createrepo /tools/other/ #后面跟上存放rpm包的绝对路径
# ls /tools/other/ #会生成repodata 目录,里面包含5个压缩文件
客户端再次编写repo文件:
[myrpm]
name=myrpm
baseurl=file:///tools/other/ #也可以传到ftp的yum源服务器上面去
enabled=1
gpgcheck=0
8、通过yum到公网上面下载rpm包
应用场景:
公司内网,服务器没有上网权限,需要手动下载rpm包,且包含相关的依赖包,然后再通过createrepo制做成yum源,上传至内网的yum源服务器,供内网Linux服务器使用;
# yum install yum-plugin-downloadonly
# mkdir -p /opt/rpm #创建目录用来缓存rpm包
# yum install --downloadonly --downloaddir=/opt/rpm nginx #不安装,只下载nginx及相关的依赖包,并存放至:/opt/rpm 这个目录下
# ls /opt/rpm/ #可以看到已下载的文件
centos-indexhtml-7-9.el7.centos.noarch.rpm nginx-filesystem-1.20.1-9.el7.noarch.rpm
nginx-1.20.1-9.el7.x86_64.rpm openssl11-libs-1.1.1k-3.el7.x86_64.rpm
# createrepo /opt/rpm/ #生成repodata 目录,可以把整个目录/opt/rpm传至内网的yum服务器,供内网使用
# ls /opt/rpm/
centos-indexhtml-7-9.el7.centos.noarch.rpm nginx-filesystem-1.20.1-9.el7.noarch.rpm repodata
nginx-1.20.1-9.el7.x86_64.rpm openssl11-libs-1.1.1k-3.el7.x86_64.rpm
9、yum update 与 upgrade 区别
yum update和yum upgrade的功能是一样的,都是将需要更新的package更新至软件源中的最新版。
区别是 yum upgrade会删除旧版本的package,而yum update则会保留。因此如果软件依赖旧版本的package。
建议:最好是使用 yum update,确保不会出现兼容问题。
升级软件包的时候,如果不需要升级的内核,可以添加 exclude 参数过滤,例如centos的升级
# yum --exclude=kernel* --exclude=centos-release* -y update
或者直接修改配置文件 /etc/yum.conf, 在[main]配置添加配置项
exclude=kernel*
exclude=centos-release*
之后重新执行
# yum -y update