安装包管理及计划任务管理

第五周

1、简述rpm与yum命令的常见选项,并举例

rpm——软件包管理系统,它使得在Linux下安装、升级、删除软件包的工作变得容易,并且具有查询、验证软件包的功能。
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 …

rpm  -ivh  PACKAGE_FILE …

GENERAL OPTIONS:
-v:verbose,详细信息
-vv:更详细的输出

[install-options]:
-h:hash marks输出进度条;每个#表示2%的进度;
–test:测试安装,检查并报告依赖关系及冲突消息等;
–nodeps:忽略依赖关系;不建议;
–replacepkgs:重新安装

注意:rpm可以自带脚本;
四类:–noscripts
preinstall:安装过程开始之前运行的脚本,%pre , –nopre
postinstall:安装过程完成之后运行的脚本,%post , –nopost
preuninstall:卸载过程真正开始执行之前运行的脚本,%preun, –nopreun
postuninstall:卸载过程完成之后运行的脚本,%postun , –nopostun

–nosignature:不检查包签名信息,不检查来源合法性;
–nodigest:不检查包完整性信息;

升级:
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:强制升级;

注意:(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核;
(2) 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

卸载:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME …

–allmatches:卸载所有匹配指定名称的程序包的各版本;
–nodeps:忽略依赖关系
–test:测试卸载,dry run模式

查询:
rpm {-q|–query} [select-options] [query-options]

[select-options]
PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;
-a, –all:查询所有已经安装过的包;
-f  FILE:查询指定的文件由哪个程序包安装生成;

-p, –package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;

–whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;
–whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

[query-options]
–changelog:查询rpm包的changlog;
-l, –list:程序安装生成的所有文件列表;
-i, –info:程序包相关的信息,版本号、大小、所属的包组,等;
-c, –configfiles:查询指定的程序包提供的配置文件;
-d, –docfiles:查询指定的程序包提供的文档;
–provides:列出指定的程序包提供的所有的CAPABILITY;
-R, –requires:查询指定的程序包的依赖关系;
–scripts:查看程序包自带的脚本片断;

用法:
-qi  PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
-qpi  PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, …

校验:
rpm {-V|–verify} [select-options] [verify-options]

S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ
包来源合法性验正和完整性验正:
来源合法性验正:
完整性验正:

获取并导入信任的包制作者的密钥:
对于CentOS发行版来说:rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

验正:
(1) 安装此组织签名的程序时,会自动执行验正;
(2) 手动验正:rpm -K PACKAGE_FILE

数据库重建:
rpm管理器数据库路径:/var/lib/rpm/
查询操作:通过此处的数据库进行;

yum repository: yum repo
存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata);

文件服务器:
ftp://
http://
nfs://
file:///

yum客户端:
配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置

仓库指向的定义:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
默认为:roundrobin,意为随机挑选;
cost=
默认为1000

教室里的yum源:http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/
CentOS 6.6 X84_64 epel: http://172.16.0.1/fedora-epel/6/x86_64/

yum命令的用法:
yum [options] [command] [package …]

command is one of:
* install package1 [package2] […]
* update [package1] [package2] […]
* update-to [package1] [package2] […]
* check-update
* upgrade [package1] [package2] […]
* upgrade-to [package1] [package2] […]
* distribution-synchronization [package1] [package2] […]
* remove | erase package1 [package2] […]
* list […]
* info […]
* provides | whatprovides feature1 [feature2] […]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache
* groupinstall group1 [group2] […]
* groupupdate group1 [group2] […]
* grouplist [hidden] [groupwildcard] […]
* groupremove group1 [group2] […]
* groupinfo group1 […]
* search string1 [string2] […]
* shell [filename]
* resolvedep dep1 [dep2] […]
* localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
* localupdate rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use update)
* reinstall package1 [package2] […]
* downgrade package1 [package2] […]
* deplist package1 [package2] […]
* repolist [all|enabled|disabled]
* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
* check
* help [command]

显示仓库列表:
repolist [all|enabled|disabled]

显示程序包:
list
# yum list [all | glob_exp1] [glob_exp2] […]
# yum list {available|installed|updates} [glob_exp1] […]

安装程序包:
install package1 [package2] […]
默认安装最新版,若要安装低版本需指明版本号
reinstall package1 [package2] […]  (重新安装)

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

downgrade package1 [package2] […] (降级)

检查可用升级:
check-update

卸载程序包:
remove | erase package1 [package2] […]

查看程序包information:
info […]

查看指定的特性(可以是某文件)是由哪个程序包所提供:
provides | whatprovides feature1 [feature2] […]

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

构建缓存:
makecache

搜索:
search string1 [string2] […]

以指定的关键字搜索程序包名及summary信息;

查看指定包所依赖的capabilities:
deplist package1 [package2] […]

查看yum事务历史:
history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

安装及升级本地程序包:
* localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
* localupdate rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use update)

包组管理的相关命令:
* groupinstall group1 [group2] […]
* groupupdate group1 [group2] […]
* grouplist [hidden] [groupwildcard] […]
* groupremove group1 [group2] […]
* groupinfo group1 […]

如何使用光盘当作本地yum仓库:
(1) 挂载光盘至某目录,例如/media/cdrom
# mount -r -t iso9660 /dev/cdrom /media/cdrom
(2) 创建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=

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

yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号;
$arch: 平台;
$basearch:基础平台;
$YUM0-$YUM9

http://mirrors.magedu.com/centos/$releasever/$basearch/os

创建yum仓库:
createrepo [options] <directory>
2、自建yum仓库,分别为网络源和本地源

使用光盘当作本地yum仓库:
(1) 挂载光盘至某目录,例如/media/cdrom
# mount -r -t iso9660 /dev/cdrom /media/cdrom
(2) 创建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
创建yum仓库:
createrepo [options] <directory>
3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00

at命令:
at  [OPTION]… TIME

TIME:
HH:MM [YYYY-mm-dd]
noon,midnieght, teatime
tomorrow
now+#
UNIT:minutes, hours, days, OR weeks

at的作业有队列,用单个字母表示,默认都使用a队列;

常用选项:
-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) COMMAND > /dev/null
(2) COMMAND &> /dev/null

注意:定义COMMAND时,如果命令需要用到%,需要对其转义;但放置于单引号中的%不用转义亦可;

[root@localhost ~]# crontab -e
no crontab for root – using an empty one
crontab: installing new crontab

[root@localhost ~]# crontab -l
10 03,05 * * 3 /tmp/bin/useradd3.sh date +’%F %X’
4、简述sed常用操作命令,并举例

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

常用选项:
-n:不输出模式空间中的内容至屏幕;
-e script, –expression=script:多点编辑;
-f  /PATH/TO/SED_SCRIPT_FILE
每行一个编辑命令;
-r, –regexp-extended:支持使用扩展正则表达式;
-i[SUFFIX], –in-place[=SUFFIX]:直接编辑原文件 ;

~]# sed  -e  ‘s@^#[[:space:]]*@@’   -e  ‘/^UUID/d’  /etc/fstab

地址定界:
(1) 空地址:对全文进行处理;
(2) 单地址:
#:指定行;
/pattern/:被此模式所匹配到的每一行;
(3) 地址范围
#,#:
#,+#:
#,/pat1/
/pat1/,/pat2/
$:最后一行;
(4) 步进:~
1~2:所有奇数行
2~2:所有偶数行

编辑命令:
d:删除;
p:显示模式空间中的内容;
a  \text:在行后面追加文本“text”,支持使用\n实现多行追加;
i  \text:在行前面插入文本“text”,支持使用\n实现多行插入;
c  \text:把匹配到的行替换为此处指定的文本“text”;
w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中;
r  /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
=:为模式匹配到的行打印行号;
!:条件取反;
地址定界!编辑命令;
s///:查找替换,其分隔符可自行指定,常用的有s@@@, s###等;
替换标记:
g:全局替换;
w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
p:显示替换成功的行;

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/100957

(1)
疯狂的青春疯狂的青春
上一篇 2018-06-12 21:50
下一篇 2018-06-14 16:25

相关推荐

  • 脚本练习题

    1.使用脚本打印出如下图形 ************答案一:#!/bin/bash#1.接受一个参数为星星的个数。num=$1 #2.求出总共要打印的行数let lines=num*2 #3.for 循环处理每一行的数据for i in `seq $lines`;do#4.前半个星星处理逻辑if [ $i -le $num ];thenfor j in `s…

    Linux笔记 2018-03-26
  • iproute家族命令

    1 ifconfig up 启动指定网络设备/网卡down 关闭指定网络设备/网卡-a 显示全部接口信息-s 显示摘要信息add 设置指定网卡配置IPv6地址del 删除指定网卡配置IPv6地址mtu<字节数> 设置网卡的最大传输单元(bytes)netmask<子网掩码>设置网卡的子网掩码multicast 为网卡设置组播标志 例子…

    Linux笔记 2018-04-15
  • 软件包管理 1 —–基本知识 rpm yum

    软件包管理,要做到如何管理软件 ,包括安装 ,卸载, 基本的功能查询,搜索等重点如何使用rpm包yum管理如何编译安装**软件 运行和编译 **ABI:Application Binary Interface 操作系统接口标准,调用2进制程序的接口Windows 与Linux不兼容ELF(Executable and Linkable Format)PE (…

    Linux笔记 2018-04-22
  • 浅析计算机与Linux

    在介绍Linux之前,我们先来了解装载并运行Linux的计算机。 计算机由CPU、存储器及I/O设备组成。其中,CPU包括运算器和控制器,分别负责数据计算并指挥计算机各部分协调地工作;存储器即内存,用于存储程序及各种数据信息,需注意的是,存储的数据均为二进制格式,意即计算机CPU只能处理二进制数据; I/O设备即输入设备(Input Device)和输出设备…

    2018-05-11
  • 向CA申请证书

     实验向CA申请证书 步骤: 建立Root CA 1)生成私钥 2)自签名证书 2.用户或服务器 1)生成私钥 2)生成证书申请文件 3)将申请文件发给CA 3.CA颁发证书 4.证书发送给客户端 5.应用软件使用证书 如:centos7当服务器,centos6客户端 ,即centos6向centos7申请证书 第一:建立根CA 生成私钥的文件放在哪,文件名…

    2018-05-19
  • 进程和计划任务

    进程概念: 进程与程序的区别:进程是一个动态的概念,具有生命期,而程序是静态的表现为一个文件,一个程序可对应多个进程 内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等 Process: 运行中的程序的一个副本,是被载入内存的一个指令集合 进程ID(Process ID,PID)号码被用来标记各个进程 UID、GID、和SELinux语…

    2018-05-10

评论列表(1条)

  • 马哥教育
    马哥教育 2018-06-15 07:56

    内容整理的很不错。就是格式看起来有点乱。
    建议rpm yum 的安装卸载都用一下,其他参数也练习一下。
    建议测试一下本地光盘挂载yum仓库是否可以正常安装包。