本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/103471
RPM简介
RPM类似于Windows系统中.exe的软件安装程序,用户可以使用它自行安装和管理Linux上的应用程序和系统工具;
RPM软件包文件都是以.rpm为后缀,一般采用这样的命名格式:软件包名称 – 版本号 – 修正版 . 硬件平台 . rpm。
RPM命令的使用方法
rpm命令:rpm [OPTIONS] [PACKAGE_FILE
安装:-i,–install
升级:-U,–update,-F,–freshen
卸载:-e,–erase
查询:-q,–query
校验:-V,–verify
数据库维护:–builddb,–initdb
安装:
rpm {-i|–install} [install-options] PACKAGE_FILE …
GENERAL OPTIONS
-v:verbose,详细信息
-vv:更详细的输出
[install-options]
-h: hash marks输出进度条;每个#表示2%的输出
–test:测试安装,检查并报告依赖关系及冲突消息等;
–nodeps:忽略依赖关系:不建议
–replacepkgs:重新安装
升级:
rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
rpm {-F|–freshen} [install-options] PACKAGE_FILE …
-U:升级或安装;
-F:升级
rpm -Uvh PACKAGE_FILE …
rpm -Fvh PACKAGE_FILE …
–oldpackage:降级;
–force:强制升级;
卸载:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …
–allmatches:卸载所有匹配指定名称的程序包的个版本;
–nodeps:忽略依赖关系
–test:测试卸载,dry run模式
查询:
rpm {-q|–query} [select-options] [query-options]
[select-options]
PACKAGE_NAME:查询指定的程序包是否已经安装,极其版本;-q
-a,–all:查询所有已经安装过的包
-f FILE:查询指定的文件由哪个程序包安装生成;
-p, –package PACKAGE_FILE:用于实现对未安装的程序包执行查询程序;
–whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包听;
–whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
校验:
rpm {-V|–verify} [select-options] [verify-options]
包来源合法性验证和完整性验证;
来源合法性验证:
完整性验证:
获取并导入信任的包制作者的密钥:
对于Centos发行版来说:rpm –import /etc/pki/rpm-gpg/
验证:
(1)安装此组织签名的程序时,会自动执行验证;
(2)手动验证:rmp -K PACKAGE_FILE
1.4 RPM包管理简单举例
查看软件包的详细信息
[root@localhost ~]# rpm -qi httpd
Name : httpd
Version : 2.4.6
Release : 80.el7.centos.1
Architecture: x86_64
Install Date: Fri 06 Jul 2018 09:37:00 PM CST
Group : System Environment/Daemons
Size : 9817285
License : ASL 2.0
Signature : RSA/SHA256, Tue 03 Jul 2018 10:31:55 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM : httpd-2.4.6-80.el7.centos.1.src.rpm
Build Date : Wed 27 Jun 2018 09:50:38 PM CST
Build Host : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://httpd.apache.org/
Summary : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
删除软件包
[root@localhost ~]# rpm -evh –test httpd //dry run
error: Failed dependencies:
httpd-mmn = 20120211×8664 is needed by (installed) php-5.4.16-45.el7.x86_64
2. yumyum 简介
yum是 “Yellow dog Updater, Modified” 的简称,最早是由 Yellow dog 发行版的开发者 Terra Soft 研发。yum的宗旨是自动化地安装、升级、移除 RPM 包,收集 RPM 包的相关信息,检查依赖性并自动提示用户解决。
yum 包含如下组件
1 yum 命令
● 通过yum命令使用其提供的众多功能;
● 由名为yum 软件包提供(默认已安装)。
2 yum 插件
● 由官方或第三方开发的 yum 插件用于扩展 yum 的功能;
● 通常由名为 yum -<pluginname> 的软件包提供。
3 yum 仓库
● yum 仓库也称为更新源;
● 一个 yum 仓库存放了众多的 RPM 文件目录;
● yum仓库必须包含一个名为 repodata 的子目录用于存放仓库数据,仓库数据包含所有 RPM 包的描述、功能、提供的文件及依赖性等信息;
● 用户通过访问 yum 仓库数据进行分析并完成查询、安装、升级等操作;
● 用户可以使用 http:// ftp:// file:// 访问 yum 仓库;
● 用户可以使用官方或第三方提供的众多 yum 仓库更新系统;
yum 命令常见用法及选项
常用选项 -y:对yum命令的所有提问回答均是”yes”;
yum [options] [command] [package …]
yum check-update ##检查更新
yum update ##升级系统
yum install PACKAGE_NAME ##安装指定的软件包
yum update PACKAGE_NAME ##升级指定的软件包
yum remove PACKAGE_NAME ##卸载指定的软件包
yum groupinstall “groupname” ##安装指定包组中的软件包
yum groupupdate “groupname” ##更新指定包组中的软件包
yum groupremove “groupname” ##卸载指定包组中的软件包
yum search PACKAGE_NAME ##搜索相关的软件包
yum info PACKAGE_NAME ##显示指定软件包的信息
yum deplist PACKAGE_NAME ##查询指定软件包的依赖信息
yum list [installed | updates | extras …] ##列出资源库中所有已安装、可以更新、额外的rpm包
yum仓库配置文件
配置文件位于:/etc/yum.repos.d/*.repo
● [base]:repositoryid,用于指定一个仓库,唯一值;
● name:指定仓库的名称;
● mirrorlist:用于指定仓库的镜像站点列表;
● baseurl:用于指定本仓库的URL,可以是http: ftp: file: 三种格式;
● enabled:用于指定是否启用本仓库,默认值为1,即可用;
● gpgcheck:用于指定是否检查软件包的gpg签名;
● gpgkey:用于指定gpg签名文件的URL。
2.4.1 自建网络源yum仓库
[base]
name=CentOS-$releasever – Base – 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
3. at命令
使用at命令可以在指定的时间执行指定的命令,该任务只会运行一次,运行之后该任务就不再存在。
at的命令格式
at [OPTION]… TIME
时间格式:
HH:MM [YYYY-mmm-dd]
noon, midnight, teatime, tomorrow
now+#
常用选项
-l:查看当前任务列表;
-f:从指定文件中读取作业任务,而不用再交互式输入;
-d:删除指定的作业任务;
-c:查看指定作业的具体内容;
-q:指明队列;
at命令举例
1分钟后执行/tmp/base/disclock.sh脚本,显示当前日期和时间;
[root@localhost base]# at now+1minute
at> /tmp/base/disclock.sh
at> <EOT>
crontab命令
crontab可以根据分钟、小时、日期、月份、星期的组合来调度任务的自动执行。用户只要在crontab中设置好任务启动的时间,到了相应的时间后系统就会自动启动该任务。
crontab命令格式
crontab [-u user] [-l | -r | -e] [-i] [-s]
常用选项
-u user:root可以为指定用户管理cron任务;
-l:输出当前的自动任务列表;
-r:删除当前的自动任务列表;
-e:更改当前的自动任务列表;
-i:删除当前的自动任务列表,在删除前会提示用户确认;
使用crontab -e修改当前的自动任务列表时,每一行的格式如下:
分钟 小时 日期 月份 星期 执行命令
分钟:取值0~59之间的整数;
小时:取值0~23之间的整数;
日期:取值1~31之间的整数(如果指定月份,则必须是该月份的有效日期);
月份:取值1~12之间的整数;
星期,取值0~7之间的整数(0或7表示星期天);
使用crontab制定每周三凌晨三、五点10分执行某个脚本,输出当前时间
[root@localhost /]# crontab -e
10 3,5 * * 3 /tmp/base/disclock.sh
[root@localhost base]# crontab -l
10 3,5 * * 3 /tmp/bash disclock.sh
4. sed命令
作用:对文本数据进行新增、替换、删除、撷取等操作;
sed命令格式
sed [OPTIONS] [ACTIONS]
sed常用选项
-n:使用静默模式,只有经过 sed 特殊处理的那一行才会被列出来;
-e:直接在指令列模式上进行 sed 的动作编辑;
-f:直接将 sed 的动作写在一个文件内,可以执行 FILE 内的 sed 动作;
-r:使 sed 的动作支持扩展正则表达式;
-i:直接修改读取文件的内容,而不是由屏幕输出;
sed命令动作
a:新增;
c:替换;
d:删除;
i:插入;
p:输出;
s:可使用正则表达式进行替换操作;
常用操作举例
删除操作
使用 sed 命令删除 tmp.txt 文件的第5行;
[root@localhost base]# cat -n tmp.txt | sed ‘5d’
1 ip route-static 0.0.0.0 0.0.0.0 10.63.251.254
2 ip route-static 10.0.0.0 255.0.0.0 10.63.251.254
3 ip route-static 10.0.1.0 255.255.255.0 10.33.2.1
4 ip route-static 10.1.0.0 255.255.0.0 10.33.2.1
6 ip route-static 10.7.68.3 255.255.255.255 10.63.251.122
7 ip route-static 10.8.0.0 255.255.0.0 10.33.2.1
8 ip route-static 10.10.0.0 255.255.0.0 10.33.2.1
9 ip route-static 10.12.0.0 255.255.0.0 10.63.251.118
10 ip route-static 10.12.40.24 255.255.255.255 10.33.2.1
新增、插入操作
使用 sed 命令在 tmp.txt文件的第5行后新增nihao jingling;
[root@localhost base]# cat -n tmp.txt | sed ‘5a nihao jingling’
1 ip route-static 0.0.0.0 0.0.0.0 10.63.251.254
2 ip route-static 10.0.0.0 255.0.0.0 10.63.251.254
3 ip route-static 10.0.1.0 255.255.255.0 10.33.2.1
4 ip route-static 10.1.0.0 255.255.0.0 10.33.2.1
5 ip route-static 10.2.0.0 255.255.0.0 10.33.2.1
nihao jingling
使用 sed 命令在 tmp.txt 文件的第4行前插入Hi tianmao;
[root@localhost base]# cat -n tmp.txt | sed ‘4i Hi tianmao ‘
1 ip route-static 0.0.0.0 0.0.0.0 10.63.251.254
2 ip route-static 10.0.0.0 255.0.0.0 10.63.251.254
3 ip route-static 10.0.1.0 255.255.255.0 10.33.2.1
Hi tianmao
4 ip route-static 10.1.0.0 255.255.0.0 10.33.2.1
5 ip route-static 10.2.0.0 255.255.0.0 10.33.2.1
替换、输出操作
使用 sed 命令将 tmp.tx 文件的第8行替换成”undo ospf 100”;
[root@localhost base]# cat -n tmp.txt | sed ‘8c undo ospf 100’
1 ip route-static 0.0.0.0 0.0.0.0 10.63.251.254
2 ip route-static 10.0.0.0 255.0.0.0 10.63.251.254
3 ip route-static 10.0.1.0 255.255.255.0 10.33.2.1
4 ip route-static 10.1.0.0 255.255.0.0 10.33.2.1
5 ip route-static 10.2.0.0 255.255.0.0 10.33.2.1
6 ip route-static 10.7.68.3 255.255.255.255 10.63.251.122
7 ip route-static 10.8.0.0 255.255.0.0 10.33.2.1
undo ospf 100
9 ip route-static 10.12.0.0 255.255.0.0 10.63.251.118
10 ip route-static 10.12.40.24 255.255.255.255 10.33.2.1
使用 sed 命令,将tmp.txt文件中的第7行输出至屏幕;
[root@localhost base]# cat -n tmp.txt | sed -n ‘7p’
7 ip route-static 10.8.0.0 255.255.0.0 10.33.2.1
赞 (1)
高效利用linux工作 之 学习命令行笔记(一)
上一篇
2018-07-21 20:18
zabbix监控系统
下一篇
2018-07-22
评论列表(1条)
总博文看,作者比较用功,对自己的知识总结与巩固是一篇很不错的文章。不过如果能注意下文章中的 yumyum 类似的情况会更好。继续加油。