第五周

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

   rpm命令是rpm软件包的管理工具。yum是C/S架构,是rpm的前端工具,依赖于rpm存在的。

安装:-i, –install

升级:-U, –update, -F, –freshen

卸载:-e, –erase

查询:-q, –query

校验:-V, –verify

数据库维护:—rebuilddb, –initdb

安装:

格式:  rpm {-i|–install} [install-options] PACKAGE_FILE

[install-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:升级或安装;

  rpm  -Uvh PACKAGE_FILE …

-F:升级

   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模式;

查询:

PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;

-a, –all:查询所有已经安装过的包;

-f FILE:查询指定文件由哪个程序包安装生成;

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

–whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;

–whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

[query-options]

–changelog:查询rpm包的changelog;

-l,–list:程序安装生成的所有文件列表;

-i,–info:程序包的相关的信息,版本号、大小、所属的包组,等;

-c,–configfiles:查询指定的程序包提供的配置文件;

-d,–docfiles:查询指定的程序包提供的文档;

–provides:列出指定的程序包提供的所有的CAPABILITY;

-R,–requires:查询指定的程序包的依赖关系;

–scripts:查看程序包自带的脚本片断;

校验:

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

–nodeps:不校验依赖关系;

–nodigest:不检查包完整性;

 –nofiles:不校验文件属性是否发生改变;

 –nosignature:不检查包或头部签名;

校验结果各位置的代表意思(9位):

             S:大小改变;

            M:权限改变;

            5:内容改变(完整性发生改变);

            D:主次设备号不匹配;

            L:路径不匹配;

            U:属主发生改变;

            G:属组发生改变;

            T:最近一次的修改时间戳发生改变;

            P:能力发生改变;

      包来源合法性验证和完整性验证:
      获取并导入信任的包制作者的公钥:
      对于CentOS发行版来说:rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
      验证:
      (1)安装此组织签名的程序时,会自动执行验证;
      (2)手动验证:rpm-K PACKAGE_FILE

rpm包数据库维护:

rpm包数据库位置:/var/lib/rpm

        查询操作(包括安装、升级、卸载、查询):都是通过此处的数据库进行的;

        获取重建帮助:

            CentOS6:man rpm

            CentOS7:man rpmdb

        重建:

            rpm {–initdb|–rebuilddb} [–dbpath DIRECTORY] [–root DIRECTORY]

                –initdb:初始化数据库,当前无任何数据库可实现初始化创建一个新的,当前有时不执行任何操作;如果事先不存在数据库,则新建,否则,不执行任何操作;

               –rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;无论当前是否存在,直接重新创建数据库;

yum:

yum [options] [command] [package …]

显示仓库列表

yum repolist [all|enabled|disabled]

            all:显示所有仓库;

            enabled:仅显示启用的仓库;(默认)

            disabled:仅显示禁用的仓库;

显示程序包:

        list子命令选项

            yum list [all | glob_exp1] [glob_exp2] […]

                all:显示所有可用的和已安装的;

            yum list {available|installed|updates} [glob_exp1] […]

                available:显示仓库中有但尚未安装的;

                installed:显示已安装的包;

                updates:显示仓库中可用的升级包;

                extras:显示仓库中额外的;

                obsoletes:显示废弃的程序包;

安装程序包:

        yum install package1 [package2] […]

重新安装程序包:不用卸载,覆盖安装;

        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 info […]

查看指定特性(可以是某文件)是由哪个程序包提供的:

        yum provides | whatprovides feature1 [feature2] […]

清理本地缓存:

        yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

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

        yum makecache

搜索:

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

        yum search string1 [string2] […]

    查看指定包所依赖的capabilities关系:

        yum deplist package1 [package2] […]

    查看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命令,查询不算事务,一般包括安装、升级、卸载等,修改类的操作才算事务;

安装及升级本地程序包:

            而不是仓库中的包,有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 repolist:查看yum仓库;

    ]# yum list all:查看仓库中所有的包;

    ]# yum grouplist:查看仓库中的包组;

    ]# yum groupinstall 开发工具:安装“开发工具”包组,输入y,确认安

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

创建yum仓库:

createrepo [options] <directory>

]# yum install createrepo

]# mkdir -p /yum/repo

]# cp /media/cdrom/Packages/*.rpm /yum/repo

]# cd /yum/repo

]# createrepo ./

]# cd repodata

]# ls

(repodata目录里有一个以.xml结尾的文件,此文件就是缓存文件,是本地缓存与文件服务器上的.xml校验的文件)

]# cd /etc/yum.repos.d/

]# vim centos-local.repo

[base]

name=CentOS7 Local

baseurl=file:///yum/repo

gpgcheck=1

]# yum repolist

]# yum install zsh

如果为网络仓库,则baseurl指向网络仓库的地址,若时本地则如上所示,指向本地文件的路径。

创建本地仓库,将在放置rpm包组的路径下,使用createrepo  创建yum库。然后在/etc/yum.repos.d目录下创建一个以.repo文档,编辑文档中的baseurl指向当前目录。

使用 yum repolist 查看仓库是否创建成功。

3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00。

at命令:

at [OPTION]… TIME

TIME: HH:MM[YYYY-mm-dd]  moon ,modnight,teatime,tomorrow,now+#UNIT(minutes,hours,days,weeks)

常规选项:-l:查看作业队列,-f /PATH/FROM/SOMEFILE :从指定文件中读取作业任务;

-d:删除指定的作业,-c:查看指定作业的具体内容;-q :指明队列;

crontab命令:

crontab [-u user][-l|-r|-e][-i]

-e:编辑任务;

-l:列出所有任务;

-r:删除所有任务;

-i:在使用-r选项删除所有任务时提醒用户确认;

-u user: root用户可以指定用户管理cron任务;

任务内容:

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

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

3、保存退出

4、简述sed常用操作命令

将文本中一次读取一行,并且复制一份到sed自己的工作区域进行操作。

格式:  sed    [OPTION]…    {script-only-if-no-other-script}   [input-file]…

                -n:不输出模式空间中的内容至屏幕;

                -e script, –expression=script:实现多点编辑;

                -f /PATH/TO/SED_SCRIPT_FILE:每行一个sed编辑命令,保存一个文件,读取文件来进行编辑操作;

                -r, –regexp-extended:支持使用扩展正则表达式;

                -i[SUFFIX], –in-place[=SUFFIX]:直接编辑原文件;

script:指定处理的行范围和编辑命令

            (1)不给地址:表示对全文进行处理;

            (2)单地址:

                    #:指定第#行

                    /pattern/:被此模式所匹配到的每一行;

             (3)地址范围

                    #,#:从第#行开始到第#行结束;

                    #,+#:从第#行开始,加#行;

                    #,/pat1/:从第#行开始,到第一次被模式匹配的行结束;

                    /pat1/,/pat2/:从被模式1匹配到的第一行开始,到被模式2匹配到的第一行结束;

                    $:最后一行;

              (4)步进:~

                    1~2:表示从1开始,步进2行,如3,5,7行即所有奇数行;

                    2~2:表示所有偶数行;

  sed常用编辑命令:

d:删除模式空间内容;

p:显示模式空间中内容;(根据地址定界和编辑命令后显示)

a \test:在匹配到的行后面追加文本"test",支持使用\n实现多行追加;

i \test:在匹配到的行前面插入文本"test",支持使用\n实现多行插入;

c \test:把匹配到的行替换为此处指定的文本"test";

w /PATH/TO/SOMEFILE:保存模式空间中匹配到的行至指定的文件中;

r /PATH/TO/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面,实现文件合并。               

=:为模式匹配到的行打印行号;

!:条件取反;

s///:查找替换,其分隔符可自行指定,常用有s@@@、s###等;       

高级编辑命令:

            h:把模式空间中的内容覆盖至保持空间中;

            H:把模块空间中的内容追加至保持空间中;

            g:把保持空间中的内容覆盖至模式空间中;

            G:把保持空间的内容追加至中模块空间中;

            x:把模式空间中的内容与保持空间中的内容互换;

            n:读取匹配到的行的下一行覆盖至模式空间中;

            N:读取匹配到的行的下一行并追加至模式空间中;

            d:删除模式空间中的行;

            D:删除多行模式空间中的所有行(对于N的操作);

原创文章,作者:会飞的鱼,如若转载,请注明出处:http://www.178linux.com/124405

发表评论

登录后才能评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.

联系我们

400-080-6560

在线咨询

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

QR code