已整理-rpm 包管理与yum服务器配置操作

目录:

  1、零散软件包的管理

  2、挂载光盘

  3、使用rpm命令管理软件

  4、YUM 软件包仓库-自动解决依赖关系

  5、使用yum命令

  6、自建yum服务器

  7、自定义yum源

  8、通过yum到公网上面下载rpm包

  9、yum update 与 upgrade 区别

 

1、零散软件包的管理
从光盘里面的Packages目录获取需要的RPM软件包;

 

 

2、挂载光盘

# 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配置文件会影响正确的配置文件。

 

5、使用yum命令

# 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         #查看与关键字匹配的包,非常实用

 

 

 

6、自建yum服务器

# 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源服务器配置完毕!


7、自定义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

 

posted on 2022-06-07 11:35  tengq  阅读(258)  评论(0)    收藏  举报

导航