Linux九阴真经之摧心掌残卷11(rpm和yum包管理)

一、rpm包管理器

rpm是一个功能强大的包管理工具,可用于构建,安装,查询,验证,更新和卸载软件包。

用法:

  rpm [OPTION...]

    例 rpm  -ivh +包名

配置文件:

/var/lib/rpm/ 已安装rpm包的元数据

选项:

  • -i:安装
    • --test:测试安装
    • --nodeps:忽略依赖关系
    • --replacepkgs | replacefiles 重装
    • --nosignature:不检查来源合法性
    • --nodigest:不检查包完整性
    • --noscript:不执行程序包脚本
    • --nopre:不执行安装前脚本
    • --nopost:不执行安装后脚本
    • --nopreun:不执行卸载前脚本
    • --nopostun:不执行卸载后脚本
    • -v|-vv:显示过程
    • -h:显示进度条
    • --force:强制
  • -e:卸载
    • --allmatches:卸载包的所有版本
  • -U:升级安装
  • -F:升级
  • --oldpackage:降级
  • -q:查询
    • -a:显示所有包
    • -f:查询文件是由哪个包生成的
    • -p:查询未安装的文件名
    • -c:只看配置文件
    • -d:显示文档
    • -i:包的说明信息
    • -l:查看程序包提供了哪些文件
    • --scripts:查询包的脚本信息
    • -R:查询包所依赖的“能力”
    • --whatprovides CAPABILITY:查询指定的”能力“由哪个包所提供
    • --whatrequires CAPABILITY:查询指定的“能力”被哪个包所依赖
    • --changelog:查询rpm包的更新日志
    • --provides:列出包提供的“能力”
  • -V:校验包属性是否发生变化,以下为变化的信息
    • S file Size differs
    • M Mode differs (includes permissions and file type)
    • 5 digest (formerly MD5 sum) differs
    • D Device major/minor number mismatch
    • L readLink(2) path mismatch
    • U User ownership differs
    • G Group ownership differs
    • T mTime differs
    • P capabilities differ
  • -K:检查包的签名和完整性
  • --import /etc/pki/rpm-gpg/KEY导入公钥
  • --root=/path/ 安装到指定“/”下
  • --initdb:初始化rpm数据库
  • --rebuilddb:重建rpm数据库

相关命令:

ldconfig -p 查看系统中所有的库 rpm2cpio FILE.rpm |cpio -tv  预览包内文件 rpm2cpio FILE.rpm |cpio -idv /path/file 解压rpm包指定文件

ldconfig -p 查看系统中所有的库
rpm2cpio FILE.rpm |cpio -tv  预览包内文件
rpm2cpio FILE.rpm |cpio -idv  /path/file  解压rpm包指定文件

二、yum包管理

yum是存储了众多rpm包,以及包的相关的元数据文件

yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386, x86_64
$YUM0-$YUM9:自定义变量

yum的用法
yum [options] [command] [package ...]
显示仓库列表:
yum repolist [all|enabled|disabled]
显示程序包:
yum list
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]
安装程序包:
yum install package1 [package2] [...]
yum reinstall package1 [package2] [...] (重新安装)

升级程序包:
yum update [package1] [package2] [...]
yum downgrade package1 [package2] [...] (降级)
检查可用升级:
yum check-update
卸载程序包:
yum remove | erase package1 [package2] [...]

查看程序包information:
yum info [...]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
清除/var/cache/yum/$basearch/$releasever缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:
yum makecache

搜索

yum  search string1 [string2] [...]    例如:yum  search  *app*

配置文件:

/etc/yum.conf 配置文件

  • cachedir 缓存目录
  • keepcache=0|1  安装时是否保留缓存的rpm包
  • logfile 日志文件
  • gpgcheck=0|1  检查签名和完整性

/var/log/yum.log 日志

/etc/yum.repos.d/FILE.repo  yum源文件

复制代码
[base]
name=base               #描述信息
baseurl=http|ftp|file   #yum仓库,路径指向repodata的父目录
enabled=0|1
gpgcheck=0|1
gpgkey=/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
failovermethod={roundrobin|priority}
                        #roundrobin:意为随机挑选,为默认值
                        #priority:按顺序访问
cost=                   #优先级,默认1000,值越小越优先
mirror=http|ftp|file    #指向repo地址的文件
复制代码

/var/cache/yum/x86_64/6 缓存路径

# yum-config-manager --add-repo=https://mirrors.aliyun.com/centos/6/os/x86_64/

# yum-config-manager --disable “仓库名" 禁用仓库

# yum-config-manager --enable “仓库名” 启用仓库

# createrepo /rpmdir 创建元数据

选项:

  • -y 安装或卸载是直接回答yes,不进入交互式
  • -q 静默模式
  • --disablerepo=repoidglob:临时禁用此处指定的repo
  • --enablerepo=repoidglob:临时启用此处指定的repo
  • --noplugins:禁用所有插件

子命令:

  • list 列出repo源包含的所有软件包
  • installed 列出所有已安装的包
  • install 安装
  • reinstall 重新安装
  • repolist [all|disabled] 列出当前生效的repo源[所有|已关闭的]
  • clean all 清除缓存
  • update [package1...] 升级软件包
  • downgrade [package1...] 降级软件包
  • check-update 检查可升级的包
  • remove 卸载软件包
  • info 查看包的详细信息
  • provides 查找命令由哪些包提供
  • makecheck 手动生成缓存
  • search 模糊搜索包信息
  • deplist 检查依赖包
  • history 安装卸载的历史
    • list # 列出指定的操作
    • info # 列出指定操作的详细信息
    • undo # 撤销指定id的操作
    • redo # 重新执行
  • groupinstall 安装包组
  • groupupdate 升级包组
  • grouplist 列出所有包组
  • groupremove 移除包组
  • groupinfo 查
  • 看包组的详细信息

 练习

一、搭建一个本地yum源

1:首先进入etc下yum.repos.d目录下,将系统自带的yum源移到新建目录aa下

[root@laobai ~#cd /etc/yum.repos.d
[root@laobai /etc/yum.repos.d#mkdir aa
[root@laobai /etc/yum.repos.d#mv *.repo aa/

2:为了方便,将光盘挂载到指定目录

[root@laobai /mnt#mkdir cdrom
[root@laobai /mnt#ls
cdrom
[root@laobai /mnt#mount /dev/sr0 /mnt/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@laobai /mnt#cd cdrom
[root@laobai /mnt/cdrom#ls
CentOS_BuildTag  isolinux                  RPM-GPG-KEY-CentOS-Debug-6
EFI              Packages                  RPM-GPG-KEY-CentOS-Security-6
EULA             RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Testing-6
GPL              repodata                  TRANS.TBL
images           RPM-GPG-KEY-CentOS-6

[root@laobai /mnt/cdrom#df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2       50264772 4362068  43342704  10% /
tmpfs             502056      76    501980   1% /dev/shm
/dev/sda1         999320   34920    911972   4% /boot
/dev/sda3       30106576   44992  28525584   1% /date
/dev/sr0         3878870 3878870         0 100% /mnt/cdrom

3:进入etc下的yum.repos.d目录下,创建一个以repo结尾的文件,如cdrom.repo

[root@laobai /mnt/cdrom#cd /etc/yum.repos.d/
[root@laobai /etc/yum.repos.d#vim cdrom.repo

4:开始配置yum源并测试

[base]
name=base centos
baseurl=file:///mnt/cdrom
gpgcheck=0
[root@laobai /etc/yum.repos.d#yum repolist
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
base                                                                        | 4.0 kB     00:00 ... 
base/primary_db                                                             | 4.7 MB     00:00 ... 
repo id                                     repo name                                        status
base                                        base centos                                      6,706
repolist: 6,706

测试正常

二、配置yum网络源

 1 :在/var/www/html/下创建一个挂载目录centos

[root@centos7 ~]#mkdir -p centos/{6,7}/os/x86_64/

2:开启httpd服务,关闭防火墙并且设置开机不启动

[root@centos7 ~]#systemctl start httpd
[root@centos7 ~]#systemctl stop firewalld
[root@centos7 ~]#systemctl disable firewalld

3:添加一个centos6.9的光盘镜像至7的系统中,分别挂载到centos6和7的挂载目录内

[root@centos7 html]#mount /dev/sr0 centos/6/os/x86_24/
[root@centos7 html]#mount /dev/sr1 centos/7/os/x86_24/

4:本地测试访问,测试访问后没有问题后再去配置其他服务器的yum源
 $releasever:是获取发行版本号的变量

 $basearch:是获取cpu架构类型的变量 (使用参数实现自动识别请求的系统版本)

5 :在其他系统上直接将yum仓库的源修改下地址即可,后面的版本号和cpu架构类型可以用变量代替

 [root@laobai /etc/yum.repos.d#vim cdrom.repo 

[base]
name=base centos
baseurl=http://192.168.95.130/centos/6/os/x86_24/
gpgcheck=0

 6:配置好以后,直接用yum安装即可

原文地址:https://www.cnblogs.com/huxiaojun/p/8903757.html