在我们学习和生产的环境中,经常需要安装现有系统中没有的软件来满足相应的需求。debian里管理deb文件的是 dpkg包管理器,而redhat管理rpm文件的rpm包管理器,就是我们的主角了。今天阿拉就CentOS6.9与CentOS7.3的环境,跟大伙唠一下红帽经典的包管理器——rpm。当然,要说rpm,当然离不开他的老伙计yum。自然,阿拉提及的未必全面,欢迎各位补充哟。科科。
因为linux开源软件提供的都是源码。编译源码虽然并不复杂,但在生产环境中,编译后的软件包无疑更为普及,也更方便安装和使用。为了生产效率,也为了提高Linux的通用性,就有了方便安装的编译后的二进制应用包。好吧,以上这些都是阿拉信口胡扯的。总之,二进制应用程序由二进制文件、库文件、配置文件、帮助文件组成。为了管理程序包,红帽推出了名为rpm的编辑器,这也就是我们今天的话题来由。
rpm包的命名如下:
name-VERSION-release.arch.rpm
举个例子的话就比如:
tree-1.6.0-10.el7.x86_64.rpm
VERSION是源码的版本号,release对应e17,是编译号,一啊不能用来指编译的次数。arch指平台,常见的有x86_64,指64位系统,i386代表32位系统,noarch则与平台无关,即适用于任何系统。很多程序的包不止一个。按其形式大致有如下几种:
Application-VERSION-ARCH.rpm: 主包
Application-devel-VERSION-ARCH.rpm 开发子包
Application-utils-VERSION-ARHC.rpm 其它子包
Application-libs-VERSION-ARHC.rpm 其它子包
因为rpm自身也是个包,我们可以以此为例:
[root@centos7 Packages]# ls rpm-* rpm-4.11.3-21.el7.x86_64.rpm rpm-apidocs-4.11.3-21.el7.noarch.rpm rpm-build-4.11.3-21.el7.x86_64.rpm rpm-build-libs-4.11.3-21.el7.i686.rpm rpm-build-libs-4.11.3-21.el7.x86_64.rpm rpm-cron-4.11.3-21.el7.noarch.rpm rpm-devel-4.11.3-21.el7.i686.rpm rpm-devel-4.11.3-21.el7.x86_64.rpm rpm-libs-4.11.3-21.el7.i686.rpm rpm-libs-4.11.3-21.el7.x86_64.rpm rpm-plugin-systemd-inhibit-4.11.3-21.el7.x86_64.rpm rpm-python-4.11.3-21.el7.x86_64.rpm rpm-sign-4.11.3-21.el7.x86_64.rpm
对了,使用rpm之前记得光盘或iso要挂载呦。科科,不会的小伙伴自行百度啦!光是rpm就够呛,阿拉实在无力兼顾这个啦!
总之,我们可以从上对rpm的包名有个大体的认知。一般情况下,第一个直接软件名-版本号的就够我们用的啦!但是其他的,我们也有了解,不然以后耍帅都不够格呐!
鉴于我们的废话还要再说一会,接下来我们先小窥门径,安装个软件包试试看:
[root@centos7 Packages]# rpm -ivh gcc-4.8.5-11.el7.x86_64.rpm warning: gcc-4.8.5-11.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY error: Failed dependencies: cpp = 4.8.5-11.el7 is needed by gcc-4.8.5-11.el7.x86_64 glibc-devel >= 2.2.90-12 is needed by gcc-4.8.5-11.el7.x86_64 libmpc.so.3()(64bit) is needed by gcc-4.8.5-11.el7.x86_6
看运行结果,第一行看着有点懵,我们后面说,第二行,清晰晰写着error。error后面Failed dependencies是说由于依赖关系,当前软件需要安装以下几个包后才能安装。这里就要提到一个概念了。
包之间可能存在依赖关系,甚至循环依赖。
不懂,好,让我们继续刚才的。既然安装gcc需要cpp,那我们就干脆装一下好了。
[root@centos7 Packages]# rpm -ivh cpp-4.8.5-11.el7.x86_64.rpm warning: cpp-4.8.5-11.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY error: Failed dependencies: libmpc.so.3()(64bit) is needed by cpp-4.8.5-11.el7.x86_64
这样下去要装到什么时候啊!正常人都会这样想的。
关键是,哪个libmpc.so.3的又是个什么鬼啊!装一下试试。诶,tab补全不了。嗯~硬敲!
[root@centos7 Packages]# rpm -ivh libmpc.so.3 error: open of libmpc.so.3 failed: No such file or directory
作为和linux闹脾气的结果,丫果然给报了个错。
好吧,还记得我们提过的二进制应用程序由二进制文件、库文件、配置文件、帮助文件组成的概念吗?这个libmpc开头的,是一个库文件啦!库文件里一般存放算法和函数、变量或类之类可供程序调用的信息。你可以简单的将其理解为仓库。
包的依赖关系很是麻烦,于是解决依赖包的管理工具yum也就应运而生了。类似的linux常用包管理器有:
yum:rpm包管理器的前端工具
apt-get:deb包管理器前端工具
zypper: suse上的rpm前端管理工具
dnf: Fedora 18+ rpm包管理器前端管理工具
关于库文件相关的命令则如下:
ldd /PATH/TO/BINARY_FILE 查看二进制程序所依赖的库文件
ldconfig 加载库文件
/sbin/ldconfig -p: 显示本机已经缓存的所有可用库文件 名及文件路径映射关系
相关配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
相关缓存文件:/etc/ld.so.cache
现在再来重申概念实在微妙。不过我们事先熟悉了部分理念,现在不来总结实在浪费。嘛嘛,阿拉会用尽量精简的言语啦!
包管理器的功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、 升级和校验等管理操作
包文件组成 (每个包独有):RPM包内的文件;RPM的元数据,如名称版本依赖性描述等;安装或卸载时运行的脚本
数据库(公共):/var/lib/rpm (程序包名称及版本、依赖关系、功能说明、包安装后生成的各文件路径及校验码信息)
[root@centos7 Packages]# ls /var/lib/rpm Basenames __db.002 Group Obsoletename Requirename Triggername Conflictname __db.003 Installtid Packages Sha1header __db.001 Dirnames Name Providename Sigmd5
要获取rpm可直接安装的包非常容易啦!我们可以从本地ISO镜像直接安装,当然镜像可以自官网得到,地址为https://www.centos.org/download/。官网上提供有阿里云、搜狐等的国内链接,在国内下载更快呦。 另外Fedora-EPEL和Rpmforge也是官方及其推广的网站。不过第三方的包还是要仔细检查下其合法性及完整性哟,不然丢失数据就得不偿失啦!
同时,rpm我们是可以自己制作的,此处不再细说。其实阿拉还没学到啦,科科。
终于要真实的说到rpm啦!啦啦啦,让我们先瞅瞅这个能够进行安装、卸载、升级、查询、校验、数据库维护的家伙的用法!
安装:
rpm {-i|--install} [install-options] PACKAGE_FILE… 安装完成不提示,安装失败会报错
-v: (verbose)安装完成后显示包名
-vv: 显示详细安装过程(基本不用,但可以看到安装包的详细步骤)
-h: 以#显示进度
rpm -ivh PACKAGE_FILE ... 经典安装包命令
rpm包安装 [install-options]
--test: 测试安装,但不真正执行安装,即dry run模式
--nodeps:忽略依赖关系
--replacepkgs 已安装过的包重装。
--replacefiles 其他已安装的RPM包的文件,与即将装的RPM中的文件冲突时,则覆盖文件并安装。(如新旧版本软件冲突时)
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本
%pre: 安装前脚本; --nopre
%post: 安装后脚本; --nopost
%preun: 卸载前脚本; --nopreun
%postun: 卸载后脚本; --nopostun
#普通情况下安装包 [root@centos7 Packages]# rpm -ivh screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm warning: screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:screen-4.1.0-0.23.20120314git3c29################################# [100%] #忽略依赖关系强制安装gcc包 [root@centos7 Packages]# rpm -ivh gcc-4.8.5-11.el7.x86_64.rpm --nodeps warning: gcc-4.8.5-11.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:gcc-4.8.5-11.el7 ################################# [100%] #安装一个已安装过的包会提示 [root@centos7 Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm warning: tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] package tree-1.6.0-10.el7.x86_64 is already installed #强制覆盖重装已安装过的包 [root@centos7 Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm --replacepkgs warning: tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:tree-1.6.0-10.el7 ################################# [100%]
升级(升级在生产环境中要谨慎使用):
rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
rpm {-F|--freshen} [install-options] PACKAGE_FILE...
rpm -Uvh PACKAGE_FILE ... 当有旧的版本的包时,则卸载旧包再装新包,如没有旧包,直接装新包
rpm -Fvh PACKAGE_FILE ... 当有旧的包时,卸载旧包装新包,无旧包时,do nothing
--oldpackage:降级
--force: 强制安装(相当于--replacepkgs --replacefiles --oldpackage的全部功能)
升级注意项:
(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此 ,同时保留旧版本内核为宜
(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本 的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留(不适用于所有程序包)
哈哈,光升级软件多没意思,这次的例子阿拉来装个双内核给你们玩!CentOS7.3以外的7系列iso镜像不太好下,那我们就用CentOS6.8与6.9来玩。
#第一件事,我们在装系统的时候已经做过。铛铛铛铛,当然是把新的镜像文件添加到设备中了。 #这个过程在vmware上设置,不会的自行百度vmware上CentOS系统的搭建。 #首先,我们用uname -r查看一下当前内核版本。记住这个数字哦! [root@CentOS6 ~]# uname -r 2.6.32-696.el6.x86_64 #其次,以防万一,我们来备份一个小玩意,这个文件是开机用的。嗯~看一眼这个文件然后暂且把它忘了吧 [root@CentOS6 ~]# cp /boot/grub/grub.conf /boot/grub/grub.conf.bak [root@CentOS6 ~]# cat /boot/grub/grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS 6 (2.6.32-696.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=3a7f425f-d1ed-4f9c-9037-4df7275720b4 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-696.el6.x86_64.img #遗憾的事阿拉在做这个实验的时候出了点小麻烦,是关于网络配置的。那就只能草草的说明一下了,抱歉啊! #下面的结果没办法粘出来了,ssh用不了,呜呜 #把镜像添加好之后可能需要重启,光盘才会加载出来 #使用mount将两个光盘挂载起来(记得搞清对应关系呦) [root@CentOS6 ~]# mount /dev/sr0 /media/CentOS6.8 [root@CentOS6 ~]# mount /dev/sr1 /media/CentOS6.9 #强制卸载内核,其实这一步不是必须的啦,但为了刺激,我们就这么干 [root@CentOS6 ~]# rpm -e kenrel --nodeps #安装6.8的内核。记住,这之前绝对不要重启。科科,断电这种情况阿拉不管哟。科科,真到那步之能救援模式见咯 [root@CentOS6 ~]# cd /media/CentOS6.8/Packages [root@CentOS6 Packages]# rpm -ivh kenrel-2.6.32-642.el6.x86_64 #安装完成后我们再去看一下刚开始的/boot/grub/grub.conf文件,会发现它的内容还是和之前一样 #为了能够正常启动,我们要把里面的2.6.32-696.el6.x86_64改为2.6.32-642.el6.x86_64 [root@CentOS6 Packages]# cd /boot/grub [root@CentOS6 grub]# vim grub.conf #在编辑模式下,执行:%s/-696.e16/-642.e16/g,然后wq退出 #这样就可以正常启动了。怎样,6.9的系统上装了个6.8的内核是不是觉得自己酷酷哒!(呀呸,版本更低了有什么得意的?!) #咳咳,开机了我们就继续了啊。不把下面的进行完,要出去秀可是会被打的! #总之,呃,例行挂载。 [root@CentOS6 ~]# mount /dev/sr0 /media/CentOS6.8 [root@CentOS6 ~]# mount /dev/sr1 /media/CentOS6.9 #废话不多说,准备装6.9内核 [root@CentOS6 ~]# cd /media/CentOS6.9/Packages #用uname -a查询会发现内核版本还是6.8的kenrel-2.6.32-642.el6.x86_64 #用-Uvh的话,科科,可以一试呦。不过是覆盖罢了,从头开始就可以了哟。对了,记得grub.conf的设置呦 #阿拉这里就只用下面这个咯。 [root@CentOS6 Packages]# rpm -ivh kenrel-2.6.32-696.el6.x86_64 #装过之后也没有完成的提示。那么,装上没有呢?让我们去/boot/grub/grub.conf瞅一瞅 [root@CentOS6 ~]# cat /boot/grub/grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS 6 (2.6.32-696.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=3a7f425f-d1ed-4f9c-9037-4df7275720b4 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-696.el6.x86_64.img title CentOS 6 (2.6.32-642.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=3a7f425f-d1ed-4f9c-9037-4df7275720b4 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-642.el6.x86_64.img #因为我们先装的旧版本,所以这里不需要加--什么的选项。如果先装6.8再装6.9的话要加--oldpackage或--force哦 #默认会进入上面的系统了,想要开机自动进入6.8系统的话要把二者的位置换一下哟。
下面是包查询:
rpm {-q|--query} [select-options] [query-options]
-q 软件包名 查询已安装过的软件包名。
-qa 列出所有的已安装过的rpm包
-qa "name*"
-qa |grep name
-qf 查询一个文件来自于哪一个rpm包 (已安装的rpm)
-q --changelog 版本更新日志
-qc 查询软件包的配置文件(不是所有包都有配置文件)
-qd 查询软件包的帮助文档
-qi 查询软件包的详细信息
-ql 查询软件包所安装到系统当中的所有文件路径
-q --scripts 查询软件包自带的脚本
-q --provides 查询自身的功能
-qR 查询实现自身的功能需要什么能力
-qp[licd] rpm包 查看未安装的rpm包的各项信息
#查询安装软件的包名 [root@centos7 ~]# rpm -q tree tree-1.6.0-10.el7.x86_64 #-qf后跟文件名,查询文件来源于哪个包 [root@centos7 ~]# rpm -qf `which pwd` coreutils-8.22-18.el7.x86_64 #查询screen在系统中的所有文件路径,下面太长阿拉省略了哦 [root@centos7 ~]# rpm -ql screen /etc/pam.d/screen /etc/screenrc /usr/bin/screen /usr/lib/tmpfiles.d/screen.conf ...
包卸载(咳咳,这个就不用演示了吧):
rpm -e 软件名
--nodeps 忽略依赖性。强制卸载
包校验,即验证包来源合法性及完整性。软件有公钥和私钥一说,这个在没学过操作系统和数据结构的阿拉理解起来也真心迷茫。简而言之,公钥负责加密,私钥负责解密;私钥负责签名,公钥负责验证。
还记得我们安装软件时一直出现的warning这一行吗?
[root@centos7 Packages]# rpm -ivh screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm warning: screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] package screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64 is already installed
"Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY"这部分就设计到包校验了。包校验相关命令如下:
rpm -K|checksig rpmfile 检查包的完整性和签名
--import GPG-KEY.... 导入公钥
-qa "gpg-pubkey*" 显示所有已导入的公钥
-e gpg-pubkey....
-K rpm包 验证某rpm签名是否合法
下面我们就来玩玩看。
[root@centos7 Packages]# rpm -K tree-1.6.0-10.el7.x86_64.rpm tree-1.6.0-10.el7.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#f4a80eb5)
也许这里你就会纳闷了,诶,怎么是NOT OK呢?我用的镜像就是从官网上下载的啊???
别急别急,毕竟我们还没有导入公钥。
#在挂载后的光盘里,我们可以看到一个RPM-GPG-KEY-CentOS-7的文件 [root@centos7 media]# ls CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI p_w_picpaths Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TB #file一下这个文件,显示为公钥 [root@centos7 media]# file RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-7: PGP public key block #导入公钥 [root@centos7 media]# rpm --import RPM-GPG-KEY-CentOS-7 #用-qa查询,会发现这个文件生成了个软件包。(不服气的-e删除,再-qa看看能不能查看到) [root@centos7 media]# rpm -qa "gpg-pubkey*" gpg-pubkey-f4a80eb5-53a7ff4b #再用-K查询,就各方面都OK啦! [root@centos7 media]# cd Packages/ [root@centos7 Packages]# rpm -K tree-1.6.0-10.el7.x86_64.rpm tree-1.6.0-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
然后就到rpm数据库了。
数据库重建: /var/lib/rpm
rpm {--initdb|--rebuilddb}
initdb: 初始化 如果事先不存在数据库,则新建之。否则,不执行任何操作
rebuilddb:重建已安装的包头的数据库索引目录
有心的小伙伴可以试试把这个库清空,再-qa哟。阿拉就不做这个实验啦,科科。记得提前备份哟。
呜哇,终于说完小兔崽子rpm了。幸好yum懂事,不然妈妈非得累死不行。
YUM全名Yellowdog Update Modifier,这小黄狗能干的事情多着咧。他既不需要你一步步找到软件包的位置,也无需兼顾各种包间的依赖性。之所以人家有特殊的跑分,当然离不开性能和油库库存啦。性能而言,yum是用python语言写的,简短精悍,而说到油库,就是指yum仓库了。
yum repository,即yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)
yum客户端配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
/etc/yum.conf是公共配置,所以我们一般都是在/etc/yum.repos.d/下新建.repo结尾的文件啦。其格式如下:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/ ( http:// https:// ftp:// file:// )
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
roundrobin:意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000
yum的repo配置文件中可用的变量有:
$releasever: 当前OS的发行版的主版本号
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386, x86_64
$YUM0-$YUM9:自定义变量
例如:
baseurl=http://server/centos/$releasever/$basearch/
baseurl=http://server/centos/7/x86_64
baseurl=http://server/centos/6/i384 30
下面我们自己写一个.repo的文件(为了使文件效果可见,建议原/etc/yum.repos.d/下文件下转移到别的文件夹):
[root@centos7 yum.repos.d]# vim ala.repo [base] name=Centos $releasever repo baseurl=http://172.17.0.1/centos/$releasever/ gpgcheck=0 [epel] name=Centos $releasever epal repo baseurl=http://172.16.0.1/fedora-epel/$releasever/$basearch gpgcheck=0
配置完成之后yum clean all清除缓存,yum makecache新建缓存,yum install 包名就可以安装啦。
除此之外我们还可以从网上下载yum的仓库配置文件。
阿里云repo文件: http://mirrors.aliyun.com/repo/
CentOS系统的yum源(可以自己配置的哟)
阿里云:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
EPEL的yum源:
阿里云:https://mirrors.aliyun.com/epel/$releasever/x86_64
下面是yum命令详解及一些可能用到用到的命令:
yum命令的用法: yum [options] [command] [package ...]
yum-config-manager --disable “仓库名" 禁用仓库
yum-config-manager --enable “仓库名” 启用仓库 yum-config-manager
显示仓库列表: 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] [...] 以指定的关键字搜索程序包名及summary信息
查看指定包所依赖的capabilities: yum deplist package1 [package2] [...]
查看yum事务历史:
yum history [info|list|packages-list|packages-info|
summary|addon-info|redo|undo|
rollback|new|sync|stats]
yum history
yum history info 6
yum history undo 6
日志 :/var/log/yum.log
安装及升级本地程序包:
yum localinstall rpmfile1 [rpmfile2] [...] (用install替代)
yum localupdate rpmfile1 [rpmfile2] [...] (用update替代)
包组管理的相关命令:
yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum grouplist [hidden] [groupwildcard] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]
yum的命令行选项:
--nogpgcheck:禁止进行gpg check
-y: 自动回答为“yes”
-q:静默模式
--disablerepo=repoidglob:临时禁用此处指定的repo
--enablerepo=repoidglob:临时启用此处指定的repo
--noplugins:禁用所有插件
最后是系统光盘配置为yum仓库。需要知道的是安装系统时默认配置的yum仓库为官网链接,所以平常我们可以把系统光盘上的rpm包设置为本地yum仓库。配置如下:
(1) 挂载光盘至某目录,例如/media/cdrom
# mount /dev/cdrom /media/cdrom
(2) 创建配置文件
[CentOS7] name=Centos media baseurl=file:///media/cdrom gpgcheck=1 enabled=1
配置完成后创建yum仓库: createrepo [options]
最后的yum写的少了点。喂喂,rpm都掌握了的话,这点都不在话下啦。迷惑是思考的圆圈,哦不,源泉。好啦,阿拉去B站溜达了,加纳!