简述rpm与yum命令的常见选项

1、简述rpm与yum命令的常见选项,并举例
rpm包安装:
rpm {-i|–install} [install-options] PACKAGE_FILE …

常用格式:要有文件路径;
rpm -ivh PACKAGE_FILE …

[install-options]安装选项:
-h, –hash:hash marks输出进度条,一共50个#,每个#进度表示2%;
–test:测试安装,检查并报告依赖关系及冲突消息等,dry run模式;
–nodeps:忽略依赖关系(安装后使用可能有问题),不建议;
–replacepkgs:重新安装;

–noscripts:不执行rpm包自带的四类脚本;
–nopre:不执行rpm包自带的preinstall脚本;
–nopost:不执行rpm包自带的postinstall脚本;
–nopreun:不执行rpm包自带的preuninstall脚本;
–nopostun:不执行rpm包自带的postuninstall脚本;
例如:
]# mount -r /dev/cdrom /media:虚拟机上的光盘连接后即可挂载;
]# rpm -ivh –test /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm:测试安装;
]# rpm -ivh –replacepkgs /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm
]# rpm -ivh /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm

rpm包升级:
rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
rpm {-F|–freshen} [install-options] PACKAGE_FILE …
-U:表示升级或安装(发现旧版本则升级,没发现则直接安装);
-F:升级(只完成升级旧版本);
–nodeps:
–test:
–noscripts

常用格式:
rpm -Uvh PACKAGE_FILE …
rpm -Fvh PACKAGE_FILE …

–oldpackage:降级安装(新版程序包不兼容时,要回滚);
–force:强制升级;
例如:
]# rpm -Uvh /media/Packages/zsh-5.0.2-7.el7_1.2.x86_64.rpm:升级rpm包;

rpm包卸载:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME …
–allmatches:卸载所有匹配指定名称的程序包的各版本;
–nodeps:忽略依赖关系;
–test:测试卸载,dry run模式;

rpm包查询:
rpm {-q|–query} [select-options] [query-options]
-q
[select-options]:挑选查询哪些包;
PACKAGE_NAME:查询指定程序包是否安装及会显示详细版本信息;
-a,–all:查询所有安装过的包;
-f FILE:查询指定文件(要写绝对路径)由哪个程序包安装生成的;
-g,–group GROUP:查询指定包组中包含的程序包;

-p,–package package_file:对未安装的程序包查询(结合query-options选项),但要有rpm安装文件,否则无法查询;

–whatprovides CAPABILITY:查询指定的capability由哪个程序包提供(结合query-options选项);
–whatrequires CAPABILITY:程序指定的capability被哪个程序包依赖(结合query-options选项);
例如:
]# rpm -q zsh:查询指定rpm程序包;
]# rpm -qa:查询所有已安装的rpm程序包,可同grep搭配使用;

[query-options]:查询包的信息;
–changelog:查询指定rpm包的修改日志changelog;
-i:查询指定rpm包相关的详细信息(版本、作者、功能描述、大小、所属包组…);
-l:查询指定rpm包安装后生成的所有文件列表;(二进制程序、配置文件、库文件、帮助文档)
-c:查看指定rpm程序的配置文件;
-d,–docfiles:查看指定rpm程序包提供的文档;
–provides:查看指定rpm程序包提供所有的capability功能;
-R,–requires:查询指定rpm包的依赖关系;
–scripts:查看rpm程序包自带的四类脚本程序片段(preinstall、postinstall、preuninstall、postuninstall);
例如:
]# rpm -q –changelog zsh:查询指定rpm包修改日志;
]# rpm -qi zsh:查询指定rpm包相关详细信息;
]# rpm -ql zsh:查询指定rpm包生成的所有文件列表;
]# rpm -qc zsh:查询指定rpm包所包含的配置文件;
]# rpm -qd zsh:查询指定rpm包提供的文档;
]# rpm -q –provides bash:查询指定rpm包提供的所有能力;
]# rpm -q –whatprovides bash:查询指定rpm包由哪个程序包提供;
]# rpm -q –whatprovides ‘config(bash)’
]# rpm -q –whatrequires bash:查询指定rpm包被哪个程序包所依赖;
]# rpm -q -R zsh:查询指定rpm包的依赖关系;
]# rpm -q –scripts zsh:查询指定rpm包自带的四类脚本程序代码;

查询未安装的rpm包的相关信息,但必须有rpmb的安装文件才能查询;
]# rpm -qpl /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm:查询未安装的rpm包安装后生成的所有文件列表;
]# rpm -qpi /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm:查询未安装的rpm包相关详细信息;
]# rpm -qpc /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm:查询未安装的rpm包配置文件;
]# rpm -qpd /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm:查询未安装的rpm包提供的文档;
]# rpm -qp –scripts /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm:查询未安装的rpm包自带的四类脚本程序片段;

rpm包校验:
rpm {-V|–verify} [select-options] [verify-options]
–nodeps:不校验依赖关系;
–nodigest:不检查包完整性;
–nofiles:不校验文件属性是否发生改变;
–nosignature:不检查包或头部签名;
例如:
]# rpm -V –nofiles zsh

yum命令的用法:
yum [options] [command] [package …]
显示仓库列表:
yum repolist [all|enabled|disabled]
all:显示所有仓库;
enabled:仅显示启用的仓库;(默认)
disabled:仅显示禁用的仓库;
例如:
]# yum repolist

显示程序包:
list子命令选项
yum list [all | glob_exp1] [glob_exp2] […]
all:显示所有可用的和已安装的;
yum list {available|installed|updates} [glob_exp1] […]
available:显示仓库中有但尚未安装的;
installed:显示已安装的包;
updates:显示仓库中可用的升级包;

extras:显示仓库中额外的;
obsoletes:显示废弃的程序包;
例如:
]# yum list
]# yum list php*:显示所有以php开头的程序包;

安装程序包:
yum install package1 [package2] […]
例如:
]# yum install gcc:依赖关系的包自动安装,确认输入y,才安装,否则退出;

注意:yum安装时默认安装最新版本的程序包,也可手动安装指定程序包的版本;

重新安装程序包:不用卸载,覆盖安装;
yum reinstall package1 [package2] […]:重新安装(基于覆盖方式安装),类似于rpm  -ivh –replacepgks;

升级程序包:
yum update [package1] [package2] […]

yum downgrade package1 [package2] […]
降级安装相当于rmp -Uvh –oldpackages;

检查可用的升级包:
yum check-update

卸载程序包:依赖于此程序包的每一个包也会被卸载;
yum remove | erase package1 [package2] […]
例如:
]# yum remove cpp:卸载gcc程序包,会显示同时卸载gcc,因为它依赖于cpp,确认输入y,直接敲回车表示n;

查看程序包的简要信息:
yum info […]
例如:
]# yum info gcc:查看gcc程序包简要信息,相当于rpm -qi;

查看指定特性(可以是某文件)是由哪个程序包提供的:
yum provides | whatprovides feature1 [feature2] […]
类似rpm -qf;
例如:
]# yum provides gcc:查看gcc程序包是由哪个程序包提供的;
]# yum /bin/ls /bin/cat:查看ls,cat是由哪个程序包提供的;

清理本地缓存:
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

构建(创建生成)缓存:yum下载程序时会自动从仓库中下载元数据缓存到本地的;
yum makecache

搜索:
以指定的关键字搜索程序包名及summary信息;
yum search string1 [string2] […]
例如:
]# yum search bash:搜索包含bash的程序包包名和summary的信息,是模糊匹配;

查看指定包所依赖的capabilities关系:
yum deplist package1 [package2] […]
例如:
]# yum deplist gcc:显示gcc依赖于哪些程序包且这些程序包是由谁提供的;

查看rmp包db版本信息:
yum version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]

查看yum事务历史:
yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
事务就是执行yum命令,查询不算事务,一般包括安装、升级、卸载等,修改类的操作才算事务;
例如:
]# yum history:查看yum的历史事务信息;
]# yum history summary:查看yum历史事务的摘要信息;
]# yum history list:查看yum历史事务列表,默认操作;
stats:查看的是统计数据;

安装及升级本地程序包:
而不是仓库中的包,有rmp不具备的功能,能解决依赖关系,centos6以后直接使用yum install安装了;
yum localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
yum localupdate rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use update)

包组管理的相关命令:
yum groupinstall group1 [group2] […]:安装包组;
yum groupupdate group1 [group2] […]:升级包组;
yum grouplist [hidden] [groupwildcard] […]:查看包组;
yum groupremove group1 [group2] […]:移除包组;
yum groupinfo group1 […]:查看包组相关信息,就是包组内有多少程序包等信息;
Mandatory Packages:必须安装的包;
Default Packages:默认安装的包;
Optional Packages:可选安装的包;
例如:
]# yum grouplist:显示包组;
]# yum groupinstall “Development Tools”:安装Deelopment Tools包组(并非安装包组内的所有包),并依赖关系,确认安装输入y;
]# yum groupinfo “Development Tools”:查看包组信息,包括必须安装的包、默认安装的包、可选包(如果被依赖也会安装);

注意:yum源仓库指向必须升级不能降级;

2、自建yum仓库,分别为网络源和本地源

配置本地源

建立本地源目录
[root@localhost ~]#mkdir /mnt/cdrom
[root@localhost ~]#mkdir /yum

挂载Centos光盘
[root@localhost ~]#mount /dev/cdrom /mnt/cdrom
[root@localhost ~]#cp -r /mnt/cdrom/* /yum

备份repo
[root@localhost ~]#cd /etc/yum.repo.d/
[root@localhost ~]#mkdir backup
[root@localhost ~]#mv CentOS-Base.repo CentOS-CR.repo CentOS-Vault.repo CentOS-Vault.repo ./backup
编辑Centos-Media.repo
[root@localhost ~]#vim Centos-Media.repo

[base]
name=Centos
baseurl=file:///yum
enable=1
gpgckeck=0
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7

清除yum缓存
[root@localhost ~]#yum clean all

配置网络源

备份源镜像文件
[root@localhost yum.repos.d]# mv centos* ./backup

下载阿里云的镜像到/etc/yum.repos.d/
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo

清除yum缓存
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum makecache

3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
at命令:
常用选项:
-l:查看作业队列,相当于atq
-f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,而不用再交互式输入;
-d:删除指定的作业,相当于atrm;
-c:查看指定作业的具体内容;
-q QUEUE:指明队列;

crontab命令:
crontab [-u user] [-l | -r | -e] [-i]
-e:编辑任务;
-l:列出所有任务;
-r:移除所有任务;即删除/var/spool/cron/USERNAME文件;
-i:在使用-r选项移除所有任务时提示用户确认;
-u user:root用户可为指定用户管理cron任务;

任务内容:

1、执行crontab -e 命令,弹出编辑框;

2、输入   10 3,5 * *  3 /bin/date + %F %H:%D:%S

3、保存退出

sed工作原理:
将文本中一次读取一行,并且复制一份到sed自己的工作区域,这个工作区域叫作模式空间(pattern space),在模式空间进行文本处理以后,将结果送到标准输出;默认sed对文本的每一行做处理操作,也可以定义sed仅处理符合条件(基于正则表达式来进行文本过滤)的行;(默认不对原文件进行编辑);

所以在模式空间中读取一行后,首先判断是否符合sed所指定的模式,如果符合则进行定义的编辑操作,将结果输出到标准输出,如果不匹配则默认输出到标准输出(默认是输出操作),也可以定义不输出没被sed模式匹配到的行;然后读取第二行,以此类推;

sed内部不仅有模式空间,还有一个空间叫hold space保持空间,可以将被sed模式匹配到的行编辑完以后存放到保持空间里(高级用法);

sed [OPTION]… ‘script’ [input-file]…
script:
地址定界编辑命令

常用选项:
-n:不输出模式空间中的内容至屏幕;
-e script, –expression=script:实现多点编辑;
例如:
]# sed -e ‘s@^#[[:space:]]*@@’ -e ‘/^UUID/d’ /etc/fstab

-f /PATH/TO/SED_SCRIPT_FILE:每行一个sed编辑命令,保存一个文件,读取文件来进行编辑操作;
-r, –regexp-extended:支持使用扩展正则表达式;
-i[SUFFIX], –in-place[=SUFFIX]:直接编辑原文件;

地址定界:(类似vim中末行操作)
(1)不给地址:表示对全文进行处理;
(2)单地址:
#:指定第#行
/pattern/:被此模式所匹配到的每一行;
(3)地址范围
#,#:从第#行开始到第#行结束;
#,+#:从第#行开始,加#行;
#,/pat1/:从第#行开始,到第一次被模式匹配的行结束;
/pat1/,/pat2/:从被模式1匹配到的第一行开始,到被模式2匹配到的第一行结束;
$:最后一行;
(4)步进:~
1~2:表示从1开始,步进2行,如3,5,7行即所有奇数行;
2~2:表示所有偶数行;

sed常用编辑命令:
d:删除模式空间内容;
例如:
]# sed ‘1,5d’ /etc/fstab:删除第1到5行;
]# sed -n ‘1,5d’ /etc/fstab:删除第1到5行,同时不显示模式空间中没被匹配的行;
]# sed ‘3d’ /etc/fstab:删除第3行;
]# sed ‘/^UUID/d’ /etc/fstab:删除以UUID开头的行;
]# sed ‘1~2d’ /etc/fstab:显示偶数行,即删除奇数行;
p:显示模式空间中内容;(根据地址定界和编辑命令后显示)
例如:
]# sed ‘1~2p’ /etc/fstab:显示2遍所有奇数行,即偶数行没被匹配显示一遍,又显示一遍匹配到的奇数行;
]# sed -n ‘1~2p’ /etc/fstab:显示一遍所有奇数行,即不显示没被匹配的行;
]# sed ‘1~2d’ /etc/fstab:显示偶数行,即删除奇数行;
a \test:在匹配到的行后面追加文本”test”,支持使用\n实现多行追加;
i \test:在匹配到的行前面插入文本”test”,支持使用\n实现多行插入;
例如:
]# sed ‘3i \new line’ /etc/fstab:在第三行上面插入一行new line;
]# sed ‘3a \new line’ /etc/fstab:在第三行下面插入一行new line;
]# sed ‘3a \new line\nanother new line’ /etc/fstab:在第三行下面插入2行;
]# sed ‘/^UUID/a \# add new device base on UUID’ /etc/fstab:在UUID开头的行下面添加一行# add new device base on UUID;
c \test:把匹配到的行替换为此处指定的文本”test”;
例如:
]# sed ‘/^UUID/c \# add new device base on UUID’ /etc/fstab:把UUID开头的行替换为# add new device base on UUID;
w /PATH/TO/SOMEFILE:保存模式空间中匹配到的行至指定的文件中;
例如:
]# sed -n ‘/^[^#]/p’ /etc/fstab:显示非#开头的行;
]# sed -n ‘/^[^#]/w /tmp/fstab.bak’ /etc/fstab:把非#开头的行保存至/tmp/fstab.bak文件里;
]# cat /tmp/fstab.bak:验证保存结果;
r /PATH/TO/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面,实现文件合并;
例如:
]# sed ‘3r /etc/issue’ /etc/fstab:把issue文件,写在fstab文件第3行的后面(文件合并);
]# sed ‘/^UUID/r /etc/issue’ /etc/fstab:把issue文件,写在fstab文件中以UUID开头的行后面;
=:为模式匹配到的行打印行号;
例如:
]# sed ‘/^UUID/=’  /etc/fstab:把UUID开头的行上面加一行号;
!:条件取反;
地址定界!编辑命令;
例如:
]# sed ‘/^[^#]/d’ /etc/fstab:删除非#开头的行;
]# sed ‘/^#/!d’ /etc/fstab:删除非#开头的行;
]# ! sed ‘/^#/d’ /etc/fstab:删除非#开头的行;
s///:查找替换,其分隔符可自行指定,常用有s@@@、s###等;
替换标记:
g:全局替换;
w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
p:仅显示替换成功的行;

]# sed -i ‘s/7030/7035/’ redis.conf 把此文件7030替换一次为7035;

原创文章,作者:斌斌,如若转载,请注明出处:http://www.178linux.com/124889

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code