微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CentOS下rpm与yum的应用

在我们学习和生产的环境中,经常需要安装现有系统中没有的软件来满足相应的需求。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@centos7Packages]#lsrpm-*
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@centos7Packages]#rpm-ivhgcc-4.8.5-11.el7.x86_64.rpm
warning:gcc-4.8.5-11.el7.x86_64.rpm:HeaderV3RSA/SHA256Signature,keyIDf4a80eb5:NOKEY
error:Faileddependencies:
cpp=4.8.5-11.el7isneededbygcc-4.8.5-11.el7.x86_64
glibc-devel>=2.2.90-12isneededbygcc-4.8.5-11.el7.x86_64
libmpc.so.3()(64bit)isneededbygcc-4.8.5-11.el7.x86_6


看运行结果,第一行看着有点懵,我们后面说,第二行,清晰晰写着error。error后面Failed dependencies是说由于依赖关系,当前软件需要安装以下几个包后才能安装。这里就要提到一个概念了。

包之间可能存在依赖关系,甚至循环依赖。


不懂,好,让我们继续刚才的。既然安装gcc需要cpp,那我们就干脆装一下好了。

[root@centos7Packages]#rpm-ivhcpp-4.8.5-11.el7.x86_64.rpm
warning:cpp-4.8.5-11.el7.x86_64.rpm:HeaderV3RSA/SHA256Signature,keyIDf4a80eb5:NOKEY
error:Faileddependencies:
libmpc.so.3()(64bit)isneededbycpp-4.8.5-11.el7.x86_64


这样下去要装到什么时候啊!正常人都会这样想的。

关键是,哪个libmpc.so.3的又是个什么鬼啊!装一下试试。诶,tab补全不了。嗯~硬敲!

[root@centos7Packages]#rpm-ivhlibmpc.so.3
error:openoflibmpc.so.3Failed:Nosuchfileordirectory

作为和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@centos7Packages]#ls/var/lib/rpm
Basenames__db.002GroupObsoletenameRequirenameTriggername
Conflictname__db.003InstalltidPackagesSha1header
__db.001DirnamesNameProvidenameSigmd5


获取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@centos7Packages]#rpm-ivhscreen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm
warning:screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm:HeaderV3RSA/SHA256Signature,keyIDf4a80eb5:NOKEY
Preparing...#################################[100%]
Updating/installing...
1:screen-4.1.0-0.23.20120314git3c29#################################[100%]
#忽略依赖关系强制安装gcc包
[root@centos7Packages]#rpm-ivhgcc-4.8.5-11.el7.x86_64.rpm--nodeps
warning:gcc-4.8.5-11.el7.x86_64.rpm:HeaderV3RSA/SHA256Signature,keyIDf4a80eb5:NOKEY
Preparing...#################################[100%]
Updating/installing...
1:gcc-4.8.5-11.el7#################################[100%]
#安装一个已安装过的包会提示
[root@centos7Packages]#rpm-ivhtree-1.6.0-10.el7.x86_64.rpm
warning:tree-1.6.0-10.el7.x86_64.rpm:HeaderV3RSA/SHA256Signature,keyIDf4a80eb5:NOKEY
Preparing...#################################[100%]
packagetree-1.6.0-10.el7.x86_64isalreadyinstalled
#强制覆盖重装已安装过的包
[root@centos7Packages]#rpm-ivhtree-1.6.0-10.el7.x86_64.rpm--replacepkgs
warning:tree-1.6.0-10.el7.x86_64.rpm:HeaderV3RSA/SHA256Signature,keyIDf4a80eb5: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.confgeneratedbyanaconda
#
#Notethatyoudonothavetorerungrubaftermakingchangestothisfile
#NOTICE:Youhavea/bootpartition.Thismeansthat
#allkernelandinitrdpathsarerelativeto/boot/,eg.
#root(hd0,0)
#kernel/vmlinuz-versionroroot=/dev/sda2
#initrd/initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
titleCentOS6(2.6.32-696.el6.x86_64)
root(hd0,0)
kernel/vmlinuz-2.6.32-696.el6.x86_64roroot=UUID=3a7f425f-d1ed-4f9c-9037-4df7275720b4rd_NO_LUKSrd_NO_LVMLANG=en_US.UTF-8rd_NO_mdsYSFONT=latarcyrheb-sun16KEYBOARDTYPE=pcKEYTABLE=usrd_NO_DMrhgbquiet
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-ekenrel--nodeps
#安装6.8的内核。记住,这之前绝对不要重启。科科,断电这种情况阿拉不管哟。科科,真到那步之能救援模式见咯
[root@CentOS6~]#cd/media/CentOS6.8/Packages
[root@CentOS6Packages]#rpm-ivhkenrel-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@CentOS6Packages]#cd/boot/grub
[root@CentOS6grub]#vimgrub.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@CentOS6Packages]#rpm-ivhkenrel-2.6.32-696.el6.x86_64
#装过之后也没有完成的提示。那么,装上没有呢?让我们去/boot/grub/grub.conf瞅一瞅
[root@CentOS6~]#cat/boot/grub/grub.conf
#grub.confgeneratedbyanaconda
#
#Notethatyoudonothavetorerungrubaftermakingchangestothisfile
#NOTICE:Youhavea/bootpartition.Thismeansthat
#allkernelandinitrdpathsarerelativeto/boot/,0)
kernel/vmlinuz-2.6.32-696.el6.x86_64roroot=UUID=3a7f425f-d1ed-4f9c-9037-4df7275720b4rd_NO_LUKSrd_NO_LVMLANG=en_US.UTF-8rd_NO_mdsYSFONT=latarcyrheb-sun16KEYBOARDTYPE=pcKEYTABLE=usrd_NO_DMrhgbquiet
initrd/initramfs-2.6.32-696.el6.x86_64.img
titleCentOS6(2.6.32-642.el6.x86_64)
root(hd0,0)
kernel/vmlinuz-2.6.32-642.el6.x86_64roroot=UUID=3a7f425f-d1ed-4f9c-9037-4df7275720b4rd_NO_LUKSrd_NO_LVMLANG=en_US.UTF-8rd_NO_mdsYSFONT=latarcyrheb-sun16KEYBOARDTYPE=pcKEYTABLE=usrd_NO_DMrhgbquiet
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-qtree
tree-1.6.0-10.el7.x86_64
#-qf后跟文件名,查询文件来源于哪个包
[root@centos7~]#rpm-qf`whichpwd`
coreutils-8.22-18.el7.x86_64
#查询screen在系统中的所有文件路径,下面太长阿拉省略了哦
[root@centos7~]#rpm-qlscreen
/etc/pam.d/screen
/etc/screenrc
/usr/bin/screen
/usr/lib/tmpfiles.d/screen.conf
...


包卸载(咳咳,这个就不用演示了吧):

rpm -e 软件名

--nodeps 忽略依赖性。强制卸载

包校验,即验证包来源合法性及完整性。软件有公钥和私钥一说,这个在没学过操作系统和数据结构的阿拉理解起来也真心迷茫。简而言之,公钥负责加密,私钥负责解密私钥负责签名,公钥负责验证。

还记得我们安装软件时一直出现的warning这一行吗?

[root@centos7Packages]#rpm-ivhscreen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm
warning:screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm:HeaderV3RSA/SHA256Signature,keyIDf4a80eb5:NOKEY
Preparing...#################################[100%]
packagescreen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64isalreadyinstalled

"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@centos7Packages]#rpm-Ktree-1.6.0-10.el7.x86_64.rpm
tree-1.6.0-10.el7.x86_64.rpm:RSAsha1((MD5)PGP)md5NOTOK(MISSINGKEYS:(MD5)PGP#f4a80eb5)


也许这里你就会纳闷了,诶,怎么是NOT OK呢?我用的镜像就是从官网上下载的啊???

别急别急,毕竟我们还没有导入公钥。

#在挂载后的光盘里,我们可以看到一个RPM-GPG-KEY-CentOS-7的文件
[root@centos7media]#ls
CentOS_BuildTagGPLLiveOSRPM-GPG-KEY-CentOS-7
EFIimagesPackagesRPM-GPG-KEY-CentOS-Testing-7
EULAisolinuxrepodataTRANS.TB
#file一下这个文件显示为公钥
[root@centos7media]#fileRPM-GPG-KEY-CentOS-7
RPM-GPG-KEY-CentOS-7:PGPpublickeyblock
#导入公钥
[root@centos7media]#rpm--importRPM-GPG-KEY-CentOS-7
#用-qa查询,会发现这个文件生成了个软件包。(不服气的-e删除,再-qa看看能不能查看到)
[root@centos7media]#rpm-qa"gpg-pubkey*"
gpg-pubkey-f4a80eb5-53a7ff4b
#再用-K查询,就各方面都OK啦!
[root@centos7media]#cdPackages/
[root@centos7Packages]#rpm-Ktree-1.6.0-10.el7.x86_64.rpm
tree-1.6.0-10.el7.x86_64.rpm:rsasha1(md5)pgpmd5OK


然后就到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@centos7yum.repos.d]#vimala.repo
[base]
name=Centos$releaseverrepo
baseurl=http://172.17.0.1/centos/$releasever/
gpgcheck=0
[epel]
name=Centos$releaseverepalrepo
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=Centosmedia
baseurl=file:///media/cdrom
gpgcheck=1
enabled=1

配置完成后创建yum仓库: createrepo [options]

最后的yum写的少了点。喂喂,rpm都掌握了的话,这点都不在话下啦。迷惑是思考的圆圈,哦不,源泉。好啦,阿拉去B站溜达了,加纳!

原文地址:https://www.jb51.cc/centos/376376.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。