1、简述rpm与yum命令的常见选项,并举例;
rpm
rpm安装软件分为二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。
rpm安装软件时的常用参数:
Install/Upgrade/Erase options:
-i, –install install package(s)
-v, –verbose provide more detailed output
-h, –hash print hash marks as package installs (good with -v)
-e, –erase erase (uninstall) package
-U, –upgrade=<packagefile>+ upgrade package(s)
--replacepkge 无论软件包是否已被安装,都强行安装软件包
–test 安装测试,并不实际安装
–nodeps 忽略软件包的依赖关系强行安装
–force 忽略软件包及文件的冲突
Query options (with -q or –query):
-a, –all query/verify all packages
-p, –package query/verify a package file
-l, –list list files in package
-d, –docfiles list all documentation files
-f, –file query/verify package(s) owning file
常用命令组合:
-ivh:安装显示安装进度–install–verbose–hash
-Uvh:升级软件包–Update;
-qpl:列出RPM软件包内的文件信息[Query Package list];
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
-qf:查找指定文件属于哪个RPM软件包[Query File];
-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
-e:删除包
示例如下:
~]# rpm -q gcc #查询是否已经安装gcc软件
gcc-4.4.7-23.el6.x86_64
~]# rpm -qa |grep gcc #查询是否已经安装gcc相关软件
libgcc-4.4.7-23.el6.x86_64
gcc-4.4.7-23.el6.x86_64
~]# rpm -qi gcc #查询安装的gcc软件详细信息
Name : gcc Relocations: (not relocatable)
Version : 4.4.7 Vendor: CentOS
Release : 23.el6 Build Date: 2018年06月19日 星期二 20时30分36秒
Install Date: 2018年07月18日 星期三 15时41分19秒 Build Host: x86-01.bsys.centos.org
Group : Development/Languages Source RPM: gcc-4.4.7-23.el6.src.rpm
Size : 19499265 License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions
Signature : RSA/SHA1, 2018年06月20日 星期三 19时35分44秒, Key ID 0946fca2c105b9de
Packager : CentOS BuildSystem <http://bugs.centos.org>
URL : http://gcc.gnu.org
Summary : Various compilers (C, C++, Objective-C, Java, …)
Description :
The gcc package contains the GNU Compiler Collection version 4.4.
You’ll need this package in order to compile C code.
~]# rpm -qd gcc 查看一个gcc软件的文档安装位置:
~]# rpm -qR gcc 查看一下gcc软件所依赖的软件包及文件;
yum指令
yum [options] [command] [package …]
- intall
安装软件包或者软件包组的最新版本,前提是所有的依赖关系满足要求。如果根据package参数没有对应的匹配,则会根据glob正则模式来匹配下载软件包。如果package参数以“@“开头,则将会以groupintall命令执行软件包组的安装。如果package参数是一个文件时,则会以localinstall命令执行本地软件包安装。
yum install package1 [package2] […]
- update
如果命令执行时没有package参数,则会更新所有已安装的软件。如果有一个或更多的package参数,则只会更新package参数对应的软件。在更新的过程中,yum会确保所有的依赖关系都满足。如果package参数对应的软件还没有安装,则update命令不会进行安装操作。
yum update [package1] [package2] […]
- update-to
命令的执行和update类似,和update不同的是可以更新到软件具体版本。
yum update-to [package1] [package2] […]
- check-update
检测系统所有需要更新的软件,这个检测过程并不不需要软件运行。若有软件需要更新,则返回值100并展示一个需要更新软件列表。若没有软件需要更新,则返回值0。若执行过程中发生了错误,则返回1。
yum check-update
- upgrade
命令的执行和update –obsoletes类似,废弃的软件包也会被更新
yum upgrade [package1] [package2] […]
- upgrade-to
命令的执行和upgrade类似,和upgrade不同的是可以更新到软件的指定版本。
yum upgrade-to [package1] [package2] […]
- distribution-synchronization/distro-sync
同步已安装的软件到最新的可用版本,yum根据情况选择是废弃还是更新还是降级软件。在一般的情况下都是和upgrade命令相同,但是有一种情况特殊,当已经安装了软件FOO的版本4,但是yum源中最新可用版本是版本3,则此命令会进行软件降级,降到版本3。
此命令在对groups(软件包组)和本地软件包是不起作用的。
yum distribution-synchronization [package1] [package1] […]
- remove/erase
移除系统里指定的软件,同时依赖这个软件的其它软件也会被一并移除。
yum remove | erase package1 [package2] […]
- list
列出可用软件包的各种信息。更多命令参数信息详见以下的“List Options“一节。
yum list […]
- info
列出可用软件包的描述和概要信息。更多命令参数信息和list命令的相同。
yum info […]
- provides/whatprovides
找出包含指定feature(特性)或文件的软件包,使用一个特定字段或file-glob-syntax通配符来找出相关的可用或已安装软件包。
yum provides | whatprovides feature1 [feature2] […]
- clean
清除yum缓存,
yum clean [package | metadata | expire-cache | rpmdb | plugins | all]
- makecache
针对当前的yum repo(源/资源库)下载元数据并使其可用。
yum makecache
- groupinstall
安装一个group(软件包组)内所有的软件包。
yum groupinstall group1 [group2] […]
- groupupdate
更新一个group(软件包组)内所有的软件包。
yum groupupdate group1 [group2] […]
- grouplist
列出所有的yum repo(源/资源库)中可用的group(软件包组),如果group(软件包组)内所有必要的软件包都已安装,则该group(软件包组)被标识为已安装。参数“hidden“能显示隐藏的group(软件包组)。如果还添加了“-v“参数,则进入详情模式并同时显示groupid。
yum grouplist [hidden] [groupwildcard] […]
- groupremove
移除group(软件包组)所有的软件。
yum groupremove group1 [group2] […]
- groupinfo
列出group(软件包组)的描述以及所包含的软件包。添加“-v“进入详情模式能看到更多的详情。
yum groupinfo group1 […]
- search
在只知道软件包部分信息的情况下进行软件包查找。默认先查找软件包名称和概要,接着对软件包的描述和url进行查找。
yum搜索会把匹配度高的软件包放在结果的前面。
可以在第一个参数设置为“all“来强制搜索所有内容。
yum search string1 [string2] […]
- shell
yum shell [filename]
- resolvedep
列出依赖参数dep的所有软件包
yum resolvedep dep1 [dep2] […]
- localinstall
通过本地软件包安装软件
yum localinstall rpmfile1 [rpmfile2] […]
- localupdate
通过本地软件包更新软件
yum localupdate rpmfile1 [rpmfile2] […]
- reinstall
重新安装软件
yum reinstall package1 [package2] […]
- downgrade
通过package对软件进行降级
yum downgrade package1 [package2] […]
- deplist
列出软件所依赖的信息
yum deplist package1 [package2] […]
- repolist
列出repo(源/资源库)的信息
yum repolist [all | enabled | disabled]
- version
列出yum的版本信息
yum version [all | installed | available | group-* | nogroups* | grouplist | groupinfo]
- history
列出操作信息
yum history [info | list | packages-list | packages-info | summary | addon-info | redo | undo | roll-back | new | sync | stats]
- load-transaction
yum load-transaction [txfile]
- check
检查本地rpmdb以及软件是否存在问题
yum check
- 使用Cache执行命令
-C | –cacheonly
- 使用执行的配置文件执行命令
-c [配置文件路径]
- 显示命令执行详情
-v | –verbose
- 静默安装
-q | –quiet
- 默认执行yes确认
-y | –assumeyes
- 默认执行no否定
–assumeno
- 指定软件安装目录路径,覆盖默认的目录
–installroot=[安装目录路径]
- 指定可用repo(软件库)
–enablerepo=[repo名称]
- 指定不可用repo(软件库)
–disablerepo=[repo名称]
- 忽略依赖关系
–skip-broken
- 不更新,只下载
–downloadonly
- 指定更新下载路径
–downloaddir=[下载路径]
- 查看rmp/yum的版本
yum –version | yum version
2、自建yum仓库,分别为网络源和本地源;
建立本地yum仓库(包含网络源和本地源):
1)挂载系统或者安装包的光盘到光驱;
# mkdir /mnt/Centos6.7/
~]# mount /dev/cdrom /mnt/Centos6.7/
mount: block device /dev/sr0 is write-protected, mounting read-only
# cd /etc/yum.repos.d/
# mkdir repo_bak
# mv *.repo /etc/yum.repos.d/repo_bak/
# vim Local-ISO.repo
1 [CentOS6-base]
2 name=CentOS-6-base
3 baseurl=file:///mnt/Centos6/Packages
4 https://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/
5 gpgcheck=1
6 enabled=1
7 gpgkey=file:///mnt/Centos6RPM-GPG-KEY-CentOS-6
8 gpgkey=https://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/RPM-GPG-KEY-CentOS-7
~]# yum clean all
已加载插件:fastestmirror, refresh-packagekit, security
Cleaning repos: CentOS6-base
清理一切
Cleaning up list of fastest mirrors
~]# yum makecache
已加载插件:fastestmirror, refresh-packagekit, security
Determining fastest mirrors
* CentOS6-base:
CentOS6-base | 4.0 kB 00:00 …
CentOS6-base/group_gz | 219 kB 00:00 …
CentOS6-base/filelists_db | 6.2 MB 00:00 …
CentOS6-base/primary_db | 4.6 MB 00:00 …
CentOS6-base/other_db | 2.8 MB 00:00 …
元数据缓存已建立
~]# yum repolist
Loading mirror speeds from cached hostfile
* CentOS6-base:
仓库标识 仓库名称 状态
CentOS6-base CentOS-6-base 6,575
repolist: 6,575
~]# yum list
3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00;
at 命令是针对仅运行一次的任务,crontab命令是用来制定执行循环运行的例行性计划任务。
at命令格式:
at[参数][时间]
命令功能:
在一个指定的时间执行一个指定任务,只能执行一次,且需要开启atd进程(
ps -ef | grep atd查看, 开启用/etc/init.d/atd start or restart;
开机即启动则需要运行 chkconfig –level 2345 atd on)。
-m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
-I atq的别名
-d atrm的别名
-v 显示任务将被执行的时间
-c 打印任务的内容到标准输出
-V 显示版本信息
-q<列队> 使用指定的列队
-f<文件> 从指定文件读入任务而不是从标准输入读入
-t<时间参数> 以时间参数的形式提交要运行的任务
示例:
~]# at 9:26
at> /bin/ls >/root/ls.txt
at> <EOT> #此处使用Ctrl+D键作为停止输入;
job 8 at 2018-07-26 09:26
~]# cat ls.txt
date.sh
fun.sh
guess.sh
jisuan.sh
num.sh
test.sh
~]# atq #计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务
12 2018-07-26 11:20 a root
crontab命令格式:
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
命令功能:
通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。
命令参数:
-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般由root用户来运行。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
~]# crontab -e
10 3,5 * * 3 echo $(date ‘+\%F \%T’)
~]# crontab -l
10 3,5 * * 3 echo $(date ‘+\%F \%T’)
4、简述sed常用操作命令,并举例。
sed处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕;接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
sed命令行格式:sed [options] ‘command’ file(s)
options常用选项:
-n或–quiet或——silent:仅显示script处理后的结果;
-e<script>或–expression=<script>:以选项中的指定的script来处理输入的文本文件; -f<script文件>或–file=<script文件>:以选项中指定的script文件来处理输入的文本文件;
-r∶sed 的动作支援的是延伸型正规表示法的语法;
-i∶直接修改读取的档案内容,而不是由萤幕输出;(此命令选项慎重使用,再三确认之后才使用。)
-h或–help:显示帮助;
-V或–version:显示版本信息。
Command常用命令:
a:新增,a 的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行);
c:取代,c 的后面可以接字符串,这些字符串可以取代n1,n2 之间的行;
d:删除,d 后面通常不接任何字符串;
i:插入,i 的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行);
p:列印,亦即将某个选择的资料印出。通常 p 会与参数 sed-n 一起运作;
s:取代,可以直接进行取代的工作,通常与正规表达式搭配使用。
实例说明:
新增操作:a命令
sed ‘/^bird/a\test’ file将test追加到 以bird开头的行后面
删除操作:d命令
sed ‘/^$/d’ file #删除空白行;
sed ‘2d’ file #删除第二行;
sed ‘2,$d’ file #删除第2行到最后一行;
sed ‘$d’ file #删除最后一行;
sed ‘/^bird/’d file #删除所有开头是bird的行;
插入操作:i命令
sed -i ‘3i\bird ‘ bird.conf #在bird.conf文件第3行之前插入bird
替换文本中的字符串:s命令
sed ‘s/bird/birds/’ file #将文本中的bird替换成birds;
sed -i ‘s/ bird / birds /g’file #将file文件中每一行的第一个bird替换为birds;
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/103984
评论列表(1条)
不错的文章,其中rpm包管理上可以列举一些例子稍微说明一下哈,继续加油。