软件包管理–RPM YUM

包管理器

二进制应用程序的组成部分

二进制文件,配置文件,说明文档,库文件

程序包管理器

Debian  deb文件  dpkg包管理器

Redhat  rpm文件  rpm包管理器

blob.png                    

库文件lib

查看二进制程序以来的库文件

ldd /path/binary_file

查看本机装载的库文件

ldconfig –p 显示本机已经缓存的所有可用的库文件名及文件路径映射关系

配置文件 /etc/ld.so.conf  /etc/ld.so.conf.d/*.conf

缓存文件 /etc/ld.so.cache

blob.png

程序包管理器

将编译好的应用程序的各组成文件打包成一个程序包文件,从而方便快捷的实现程序包的安装,卸载,查询,升级和校验等管理操作

1.包文件组成

RPM包内的文件

RPM的元数据,如名称,版本,依赖性,描述等

安装或卸载时运行的脚本

2.数据库(公共)

程序包名称及版本

依赖关系

功能说明

安装后生成的各文件路径和校验码信息

 

RPM包管理

  rpm {-i|–install} [install-options] package

      -v verbose

       -vv 更加详细的信息

       -h 显示程序包执行的进度

       [install-options]

–test 测试安装,仅仅只是测试,不安转

–nodeps 忽略依赖关系

–replacepkgs | replacefiles

replacepkgs 安装包,即使包已经安装也会再次安装

replacefiles 安装包,即使包中的一些文件已经被其他包安装过,也会再次覆盖安装

–nosignature 不检查来源合法性

–nodigest 不检查包完整性

–noscripts 不执行包中脚本片段

%pre 安装前脚本 –nopre

%post 安装后脚本 –nopost

%preun 卸载前脚本 –nopreun

%postun 卸载后脚本 –nopostun

blob.png

 

RPM升级

     rpm {-U|–upgrade} [install-options] package

     rpm {-F | –freshen} [install-options] package

     upgrade 安装有旧版本程序,则升级

         安装前不存在旧版本程序,则安装

     freshen 安装有旧版本程序,则升级

         安装前不存在旧版本程序,则不执行操作

       –oldpackage 降级

       –force 强行升降级

RPM包查询

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

     [select-options]

-a 所有包

-f 查看指定文件有哪个程序包生成

-p rpmfile 针对未安装的包进行查询操作

–whatprovides capability 查询指定capability由哪个包提供

–whatrequires capability 查询指定capability被哪些包依赖

 rpm2cpio 包文件| cpio –itv 预览包内文件

 rpm2cpio 包文件| cpio –id 释放包内文件(当某个程序文件被误删,可以使用此命令进行恢复)

 blob.png

 blob.png


 [query-options]

–changelog 查询rpm包的changelog

-c 查询程序的配置文件

-d 查询程序的文档

-i 查询information

-l查看指定程序包生成的所有文件

–scripts 程序包自带的脚本片段

-R 查询指定程序包所依赖的capability

–provides 列出指定程序包所提供的capability

blob.png

RPM包的校验

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

S  file size differs

M mode differs

5 digest differs

D device major/minor number mismatch

L readLink path mismatch

U user ownership differs

G group ownership differs

T mtime differs

P capability differ

rpm –K|chechsig rpmfile  检查包的完整性和签名

         rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

    导入的是一个gpg加密的文件,通过检验安装包内的签名与该文件中的签名是否一致,来确定来源的合法性

RPM数据库

    /var/lib/rpm

    rpm {–initdb|–rebuilddb}

       initdb 初始化

       如果事先不存在,则新建

       否则,不执行草走

       Rebuilddb 重建

       无论存在还是不存在,都重建数据库

 

YUMyellowdog update modifier

   Yum用来解决软件包之间的依赖关系,可以在多个库之间定位软件包

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

yum客户端配置文件

   /etc/yum.conf 为所有的仓库提供公共配置

   /etc/yum.repo.d/*.repo 为仓库的指向提供配置

   blob.png               

          

YUM-CONFIG-MANAGER

   yum-config-manager  –disable ”仓库名“  禁用仓库

   yum-config-manager  –enable ”仓库名“  启用仓库

 

         显示仓库列表

                   repolist [all|enabled|disable]

         显示程序包

                   list

         安装程序包

                   install package1 [package2] […] 最多一次支持5

                   reinstall package1 [package2] […] 重新安装

         升级程序包

                   update [package1] [package2] […]

                   downgrade package1 [package2] [… ] 降级

         检查可用升级

                   check-update

         卸载程序包

                   remove | erase package1 [package2] […]

         查看程序包信息

                   Info […]

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

                   provides | whatprovides feature1 [feature2] […]

         清楚本地缓存

                   clean [ package|metadata |expire-cache | rpmdb | plugins | all ]

         构建缓存

                   makecache

         搜索 search string1 [string2] […]

         blob.png         

         查看指定包所依赖的capability

              deplist package1 [package2] […]

         查看YUM事务历史

             History [info| list|package-list|package-info |summary | addon-info| redo |undo ]

         日志

             /var/log/yum.log

          blob.png

YUM的命令行选项

         –nogpgcheck 禁止进行gpg check

         -y 自动回答yes

         -q 静默模式

         –disablerepo=repoidglob 临时禁用此处指定的repo

         –enablerepo=repoidglob 临时启用此处指定的repo

         –noplugins 禁用所有插件

 


SHELL编程之SELETE软件包管理--RPM  YUM

selete循环与菜单:主要用于创建菜单,按数字数序排列的菜单项将显示在标准错误上,             并显示PS3提示符,等待用户输入,用户输入菜单列表中的某个数字,             执行相应的命令,用户输入被保存在内置变量REPLY中。

blob.pngblob.png


函数FUNCTION

  Function是由若干个shell命令组成的语句块,实现代码的重用和模块化的编程,它与shell程序形式上是相似的,不同的是它不是一个单独的进程,必能独立运行,而是shell一部分

  函数与shell区别在于:

     shell程序在sehll中运行

    shell函数在当前shell中运行   

  

  函数定义

    函数由两部分组成:函数名和函数体

    1.

        function name {

            函数体

        }  

    2.

        function name () {

            函数体

        }

    3.

        name () {

            函数体

        }

blob.png

blob.pngblob.png

习题

1、1、编写服务脚本/root/bin/testsrv.sh,完成如下要求

(1) 脚本可接受参数:start, stop, restart, status

(2) 如果参数非此四者之一,提示使用格式后报错退出

(3) 如是start:则创建/var/lock/subsys/SCRIPT_NAME, 并显示“启动成功”

考虑:如果事先已经启动过一次,该如何处理?

(4) 如是stop:则删除/var/lock/subsys/SCRIPT_NAME, 并显示“停止完成”

考虑:如果事先已然停止过了,该如何处理?

(5) 如是restart,则先stop, 再start

考虑:如果本来没有start,如何处理?

(6) 如是status, 则如果/var/lock/subsys/SCRIPT_NAME文件存在,则显示“SCRIPT_NAMEis running…”

如果/var/lock/subsys/SCRIPT_NAME文件不存在,则显示“SCRIPT_NAME is stopped…”

其中:SCRIPT_NAME为当前脚本名

blob.png

blob.png

2、编写脚本/root/bin/copycmd.sh

(1) 提示用户输入一个可执行命令名称;

(2) 获取此命令所依赖到的所有库文件列表

(3) 复制命令至某目标目录(例如/mnt/sysroot)下的对应路径下;

如:/bin/bash ==> /mnt/sysroot/bin/bash

/usr/bin/passwd==> /mnt/sysroot/usr/bin/passwd

(4) 复制此命令依赖到的所有库文件至目标目录下的对应路径下:

如:/lib64/ld-linux-x86-64.so.2 ==> /mnt/sysroot/lib64/ld-linux-x86-64.so.2

(5)每次复制完成一个命令后,不要退出,而是提示用户键入新的要复制的命令,并重复完成上述功能;直到用户输入quit退出

blob.pngblob.png

3、汉诺塔(又称河内塔)问题是源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

利用函数,实现N片盘的汉诺塔的移动步骤

blob.png

blob.png

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

(0)
Stupid_LStupid_L
上一篇 2016-08-21
下一篇 2016-08-21

相关推荐

  • linux中文本处理工具

      对于linux来讲,文本处理是非常重要的,因为linux系统就是由无数的文件组成的,linux中一切皆文件。文件的处理方式有很多种,所以就有众多的文本处理工具,各自作用于不同的文本处理方式。 一、查看文件命令:    cat命令:处理显示文件内容,不改变原文件    cat命令常用于查看文件内容,也可通过…

    Linux干货 2016-08-08
  • bash的基础特性[更新中]

    2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
    3、请使用命令行展开功能来完成以下练习:
    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
    (2)、创建/tmp/mylinux目录下的:
    mylinux/
    ├── bin
    ├── boot
    │   └── grub
    ├── dev
    ├── etc
    │   ├── rc.d
    │   │   └── init.d
    │   └── sysconfig
    │   └── network-scripts
    ├── lib
    │   └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │   └── local
    │   ├── bin
    │   └── sbin
    └── var
    ├── lock
    ├── log
    └── run
    5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
    6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
    7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
    8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
    9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
    10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
    11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
    12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

    2018-03-17
  • Linux系统中的Inode节点表

    索引节点是指在许多类Unix文件系统中的一种数据结构。每个索引节点保存了文件系统中的一个文件系统对象的元信息数据,但不包括数据内容或者文件名。

    2017-11-16
  • Linux上命令使用格式及如何获取帮助信息

    Linux系统上命令使用: 命令本身是一个可执行的程序文件,二进制格式的文件,有可能会调用共享库文件,发起一条命令,请求内核将某一个二进制程序运行为一个进程。   命令的语法格式:   ~]#COMMAND(命令)   OPENTIONS(选项)   ARGUMENTS(参数) command 命令…

    Linux干货 2016-10-30
  • 马哥教育网络班22期第五周课程练习1

    1、cat /etc/passwd  | egrep "^root|^fedora|^user1"| cut -d":" -f1,7  2、egrep -o  "[^[:space:]]+\(\)" /etc/rc.d/init.d/functions   3…

    Linux干货 2016-09-15

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-22 14:11

    文章对rpm包管理器相关知识总结的很详细,建议字体不要用斜体,这样在网站上看起来特别凌乱的感觉。