RPM和YUM命令详解

yum、rpm包和源码包的联系:

二进制包(rpm包,系统默认包):已被编译,不能再查看源码和修改
源码包:未经编译,可修改源码

Yum是rpm包的前端管理工具,算是rpm软件包的一个小仓库,用来解决rpm包依赖性问题,所以对于服务的管理,rpm包安装和yum安装后的程序都可以用systemctl,chkconfig,service登命令来管理服务。YUM被称为 Yellow dog Updater, Modified,是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。YUM使用Python语言写成。YUM客户端基于RPM包进行管理,可以通过HTTP服务器下载、FTP服务器下载、本地软件池的等方式获得软件包,可以从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系。
YUM在安装RPM时,会从服务器下载相应包,且缓存在本地。
RPM包依赖性
树形依赖:a->b->c。
环形依赖:a->b->c->a。
yum,rpm与源码包安装的不同:安装位置不同
yum,RPM包安装的服务可以使用系统服务管理命令(service/systemctl)来管理,例如centos6中RPM包安装的apache的启动方法是:
/etc/rc.d/init.d/httpdstart
service httpdstart
而源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中。所以只能用绝对路径进行服务的管理,如:
#/usr/local/apache2/bin/apachectl start
#./configure 软件配置与检查
#make编译
#make install 编译安装

rpm介绍:

rpm命令是用来管理rpm包的。
rpm命令涉及到rpm包的安装、卸载、升级、查询、校验、数据库维护。
查看rpm包内容:
查看rpm2cpio命令和cpio命令;
#rpm2cpio 包文件|cpio -itv :预览包内所有文件
#rpm2cpio 包文件|cpio -ivd “*.conf” 抽取包内所有以.conf结尾的文件
链接:https://blog.csdn.net/jubincn/article/details/6687550

rpm包安装:

命令格式:#rpm {-i | --install} [install-option] PACKAGE_FILE…
-v:显示执行细节;
-h:以#号显示程序包管理执行进度
常用方式:#rpm -ivh filename.rpm
额外[install-option]选项:

--test:测试安装,但不真正执行安装
 -force:强制安装
--nodeps:忽略依赖关系
--replacepkgs | replacefiles:替换安装包(即当rpm包安装后,有rpm包中有的文件丢失(rpm  -ql 包),导致命令或程序无法执行,用该参数即可重复安装替换下丢失或已被修改的包文件)。
--nosignature:不检查来源合法性
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本

rpm包升级:

命令格式:
#rpm {-U | --upgrade} [install -options] PACKAGE_FILE…
#rpm {-F | --freshen} [install-options] PACKAG_FILE…
upgrade:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”。
freshen:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作。
常用方式:
#rpm -Uvh filename.rpm
#rpm -Fvh filename.rpm
额外[install-options]选项:

--oldpackage:降级
--force:强制安装 

rpm包升级注意项: 一般不建议随便升级或降级内核;除非遇到重大情况,出bug等。而且Linux支持多内核版本并存,因此,可以直接安装新版本内核(即rpm -ivh 内核包),安装后,原内核依旧保留,可在开机时自行选择所需内核。

rpm包查询(rpm包已安装):

命令格式:#rpm { -q | --query } [select-options] [query-options] RpmName
#rpm -q at // 查看at服务的原完整rpm包名
额外[select-options]选项:

-l  :列出这个包的包文件列表
-f  : 查看包文件列表中指定的文件由哪个程序包安装生成
-p rpmfile:针对尚未安装的程序包文件做查询操作
--whatprovides  CAPABILITY(能力:功能:关键字):查询指定的CAPABILITY由哪个包所提供
--whatrequires  CAPABILITY:查询指定的CAPABILITY由哪个包所依赖

额外[query-options]选项:

--changelog:	查询rpm包的changelog(该程序包的更新迭代信息)
-c:查询程序的配置文件(有些小工具或程序是没有配置文件的)
-d:查询程序的文档
-i:information,关于该程序包的相关信息
-l:查看指定的程序包安装后生成的所有文件
--scripts:查看程序包自带的脚本
--provides:列出指定程序包所提供的CAPABILITY
-R:查询指定的程序包所依赖的CAPABILITY

rpm包卸载:

命令格式:#rpm {-e | --erase } [–allmatches所有补丁] [–nodeps忽略依赖性] [–noscripts不跑脚本] [–notriggers不触发] [–test测试] PACKAGE_NAME…
例:#rpm -e --allmatches kernel(卸载所有kernel版本)

rpm包校验:

命令格式:#rpm {-V | --verify} [select-options] [verify-options] 包的关键词
符号表示:S:file Size differs
M:Mode dirrers (includes permissions and file type)
5 :digest(format md5 sum )differs(内容改变,哈希值就会改变)
D:Device major/minor number mismatch
L:readLink(2) path mismatch
U:User ownership differs
G:Group ownership differ
T:mtime differs
P:capabilities differ
在这里插入图片描述

rpm数据库:

数据库重建:/var/lib/rpm
#rpm {–initdb | --rebuilddb}
initdb:初始化
如果事先不存在数据库,则新建之;否则,不执行任何操作。
rebuilddb:重建已安装的包头的数据库索引目录

yum:

yum了解:
yum:(yellowdog Update Modifier )rpm的前端程序,可解决rpm软件包之间的相关依赖性,可在多个库之间定位软件包,up2date的替代工具。
yum repository:yum repo,存储了众多rpm包, 以及包的相关元数据文件(放置于特定目录repodata下)
文件服务器:最终路径一定是repodata文件夹所在的父目录,如/…/dir/repodata
则:baseurl=file:///…/dir;baseurl=http://ip…/dir
http://
https://
ftp://
file://
yum客户端配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
关于/etc/yum.conf配置文件
在这里插入图片描述
yum仓库日志:/var/log/yum.log

yum仓库构建:

1.yum仓库配置文件需要在/etc/yum.repos.d/名字.repo;
2.yum仓库配置文件参数:
[repoID]
name= (//关于该yum仓库的描述信息,reponame,不写默认与repoID保持一致,repoid和reponame信息可通过yum repolist查看)
baseurl=url://path
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL (如:gpgkey=file://mnt/cdrom/RPM-GPG-KEY-Centos-7,key的路径)
enablegroups={1|0}
failovermethod={roundrobin|priority} (当有多个baseurl路径时,使用该参数,其中roundrobin:意为随机挑选,默认是此参数。priority:按顺序访问)
cost= 默认为1000 (优先级,值越低,优先级越高)
关于gpgcheck参数:当为1时,为使用时检验包,需要提前导入“RPM-GPG-KEY-Centos-7”公钥,rpm才能检验包,否则是无法检验包的完整性的。日常使用设置为0,不检查,但不安全;在自己写的repo文件中,若不写gpgcheck参数,则默认按/etc/yum.conf配置文件中的gpgcheck参数执行;
导秘钥:
1.使用rpm命令手工导入:#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-Centos-7
2.在.repo中写入秘钥路径:#gpgkey=file://mnt/cdrom/RPM-GPG-KEY-Centos-7
name=参数,自己的.repo文件中不写的话,默认与[]中的名字一致。

yum系列命令:

yum命令

yum安装相同软件包的高级版本,会完成自动更新;
当rpm或yum下载的程序包,文件后来丢失时,可用#rpm -ivh 包名.rpm --replacepkgs 或 #yum reinstall -y 程序包名,重新安装更新文件,解决。
常用命令用法:
yum命令的用法:#yum [options] [command] [package …]
yum的命令行选项:

--nogpgcheck:禁止进行gpg check
-y:自动回答为"yes"
-q:静默模式
--disablerepo=repoidglob:临时禁用此处指定的repo
--enablerepo=repoidglob:临时启用此处指定的repo
--noplugins:禁用所有插件

command选项:
显示仓库列表:#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仓库:
#yum-config-manager --disable “仓库名” :禁用仓库(enable=0)
#yum-config-manager --enable “仓库名” :启用仓库(enable=1)
升级程序包:
#yum update [package1] [package2][…] 升级(不指定包,默认升级所有rpm包)
#yum downgrade package1 [package2] […] 降级
检查可用升级:
#yum check-update
卸载程序包
#yum remove | erase package1 [package2] […]
查看程序包information:
yum info […] 信息没有#rpm -qi […] 详细
构建缓存:
#yum makecache
清理本地缓存:
清除/var/cache/yum/ b a s e a r c h / basearch/ basearch/releasever缓存
#yum clean [all | metadata| expire-cache | rpmdb | plugins | packages ]
搜索:以指定的关键字搜索程序包名及summary(说明)信息
#yum search string1 [string2] …
查看指定包所依赖的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的ID,查看该ID步骤的详细信息)
#yum history undo 6(撤销ID步骤的动作 )
#yum history redo 6 (重做ID步骤的动作)
在这里插入图片描述

yumdownloader命令

作用:如果只想通过yum下载软件的安装包,但是不需要进行安装的话,可以使用 yumdownloader 命令,下载好安装包及其依赖包后,再使用rpm命令进行安装。

yumdownloader 命令在软件包 yum-utils 里面。

格式:

Usage: "yumdownloader [options] package1 [package2] [package..]
常用参数:
--reslove	:解决依赖关系并下载所需软件包(即下载依赖包,可选)。
--destdir=/目录	:下载下来的安装包的所在目录(默认为当前目录)。
--source	:对源包进行操作

例yumdownloader使用:
(yum仓库由许多rpm包组成,用来解决rpm包之间的依赖关系)
1.下载nethogs命令包及其依赖包(由于nethogs包没有依赖包,因此只下载了本包)
在这里插入图片描述
2.下载samba服务及其依赖包(samba包及其依赖包)
在这里插入图片描述

有关yum所遇到的问题

1.yum下载程序,提示尚未安装任何GPG公钥,提示rpm --import public.gpg.key
解决:
[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
然后#yum 下载程序便可。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值