14(23)软件安装:RPM,SRPM与YUM功能


1. 软件管理简介

    1.1linux界的两大主流:RPM与DPKG 【1-0】
         1.dpkg
         开发者:Debain Linux社群
         linux distrbution代表:衍生于Debain的发行版(Debain,B2D,Ubuntu等)
         使用指令:dpkg
         在线升级机制:APT(apt-get)
         2.rpm
         开发者:Red Hat
         linux distrbution代表:Fedora, CentOS, SuSE等
          使用指令:rpm,rpmbuild
         在线升级机制:yum
    1.2什么是RPM与SRPM
         1.RPM(redhat package manager):yi以一种数据库的方式安装到linux的一套软件管理机制
                   档名格式:xxx.rpm
                   直接安装与否:可
                   内含程序类型:已编译
                   可否修改参数并编译:不可(没有configure和makefile)
                    特点:【1-1】
                   缺点:【1-2】
         2.SRPM(source RPM):包含原始码,相依性说明
                    档名格式:xxx.src.rpm
                   直接安装与否:不可(需要先编译成rpm)
                   内含程序类型:未编译的原始码
                   可否修改参数并编译:可(有configure和makefile)
    1.3什么是i386, i586, i686, noarch, x86_64【1-3】
         案例:rp-pppoe-3.1-5.i386.rpm          ----     一个完整的rpm软件包名(软件名称-软件的版本信息-释出的次数-适应的硬件平台-扩展名)【1-4】  
    1.4RPM的优点【1-5】
    1.5RPM属性相依的克服方法:YUM在线升级【1-6】
         /var/cache/yum          ----yum本机清单

2. RPM软件管理程序:rpm
    2.1RPM默认安装的路径
         /etc          ----一些配置文件放置的目录
         /usr/bin          ----一些可执行文件
         /usr/lib          ----一些程序使用的动态函数库
         /usr/share/doc          ---一些基本的软件手册和说明文件
         /usr/share/man          ----一些man page
    2.2RPM安装【1-8 常见的一些选项与参数】
         注意:尽量不要使用 --force
         # rpm -i rp-pppoe-3.5-32.1.i386.rpm          ----安装 rp-pppoe-3.5-32.1.i386.rpm这个软件
         案例一:安装并显示详细安装信息和安装进度
         #  rpm -ivh rp-pppoe-3.5-32.1.i386.rpm
         案例二:一次安装多个软件
         # rpm -ivh a.i386.rpm b .i386.rpm *.i386.rpm          ---后面直接接很多软件
         案例三:直接由网路上面某个档案安装,以网址安装
         # rpm -ivh http://website.name/path/pagname.rpm
        案例四:在没有网络的情况下,通过原始光盘安装一个名为pam-devel的软件
         # mount /dev/cdrom  /media          ----挂载光盘
         # find /media -name 'pam-devel'          ----找出档案的实际路径
         # rpm -ivh pam-devel..  --test          ----测试此软件是否具有相依性
         # rpm -ivh pam-devel..          ----直接安装
         # umount /dev/vdrom          ----卸载光盘
    2.3RPM升级与更新(upgrate/freshen)
         注意:在不使用yun更新的情况下,如果想升级系统所有软件,可以从映象站下载更新数据,然后通过-Fvh一口气升级【1-9】
    2.4RPM查询(/var/lib/rpm/)【1-11】
         注意:查询软件相关信息是不需要加上软件的版本号(会到/var/lib/)rpm这个数据库去查;查询软件相关档案信息是需要完整的档名
                   1.一些入门案例
         案例一:找出主机中是否安装有logrotate这个软件
         # rpm -q   logrotating     ----不必加上版本
         范例二:列出上题当中属于该软件所提供的所有目录与档案
         # rpm -ql logrotate          ----可以看出该软件到底提供了多少档案与目录,也可以追踪软件的数据
         范例三:列出logrotate这个软件 的相关说明数据
         # rpm -qi logrotate
         范例四:分别找出logorate的配置文件与说明档
         # rpm -qc logrotate    
          # rpm -qd logrotate  
         范例五:若要成功安装,还需要什么软件
         # rpm -qR    logrotate
         范例六:找出/bin/sh是哪个软件提供的
         # rpm -qf /bin/sh          ---后面接的是档案而不是软件(查询系统的档案属于哪一个软件)
         范例七:下载一个rpm档案,查看档案的需求档案
         # rpm -qpR filename.i386.rpm
                   2.一些练习案例
                     # rpm -qa | grep ^c | wc -l          ----查询系统上以c开头的软件(显示行数)
                      # rpm -qc httpd          ----查看apache所有配置文件放置在何处(apache的rpm软件文件名为httpd)
                      # rpm -ivh http://web.site.name/path/httpd-x.x.xx.i386.rpm     --replacepkgs
                      # rpm -qf /etc/crontab          ----如果误删了某个程序的配置文件,重新安装它但不知道程序名,虽然文件没了但/var/lib/rpm当中还有记录这个rpm软件
    2.5RPM验证与数字签名(verify/signature)
         1.验证(rpm -V)【1-12】
              注意:如果查到的变更信息发生在二进制文件信息上就表示比较危险,有可能被入侵过
              范例一:列出主机内的logrotate这个软件是否被更动过
              # rpm -V logrotate          
              范例二:查询一下,你的/etc/crontab是否被更动过(如何理解文件变更信息的含义【1-13,14】)
              # rpm -Vf /etc/crontab          ---- -Vf 某个档案是否被更动过(会列出被更动的信息类型)  
         2.数字签名(digital signature)【1-15】
              注意:
              1. CentOS使用的数字签名系统GnuPG(GNP Privacy Guard,GNP)运用哈希算法
              2.如果忘记加数字签名,很多原始软件就不能安装,除非用rpm选项略过数字签名
              # ll /etc/pki/RPM-GPG-KEY-CentOS-5          ----CentOS的数字签名位置
              # cat    /etc/pki/RPM-GPG-KEY-CentOS-5          ----从中可以看出数字签名的本质是随机数
              # rpm --import   /etc/pki/RPM-GPG-KEY-CentOS-5          ----安装这个数字签名档
              # locate GPG-KEY          ----查找系统中的数字签名档
              # find /etc -name '*GPG-KEY'
              # rpm -qa | grep pubkey          ----查看系统密匙的内容,列出密匙软件名称
              # rpm -qi gpg-pubkey-e8562897-459f07a4          ----查询这个软件的详细信息
    2.6RPM反安装与重建数据库(erase/rebuldedb)
         注意:发生依赖关系时,先安装的后移除
         1.找出与pam有关的软件名称,并移除pam这个软件
         # rpm -qa | grep pam          ----找到pam有关的软件
         # rpm -e pam          ----会发现因为依赖问题无法卸载(可以通过--nodeps强制卸载,不过会造成系统中其他软件的错误)
         # rpm -e pam-devel          ----pam-devel依赖于rpm,位于最顶层,可以顺利卸载
         # rpm   --rebuidedb          ----重建数据库

3.SRPM的使用:rpmbuide
    注意:rpm软件包使用rpm指令,srpm使用rpmbuide指令
    3.1利用默认值安装SRPM档案(--rebuide/--recomplie)
    # rpm --rebuide   SRPM软件包          ----编译并打包
    # rpm --recompile    SRPM软件包       ----编译打包并安装  
    3.2SRPM使用的路径与需要安装的软件
         1.安装SRPM过程中使用到的路径【1-17】
         注意:
              1. 不同发行版会稍微不同,但一般都会在/usr/src/底下,以CentOS为例:/usr/src/redhat/[SPES/SOURCES/BUILD/RPMS/SRPMS]
              2.如果编译过程出现设定错误或者不明的错误,/tmp底下会产生一个相应的错误档,可以根据这个档案进行除错的工作
              3.编译完成后除/usr/src/redhat/RPM以外的档案都会被删除
         2.一个用于观察变编译过程的案例:
              # rpm --rebuild  rp-pppoe-3.5-32.1.src.rpm          ----用默认设定编译,并以rpm机制封装起来
              # ll /usr/src/redhat/RPMS/i386/          ---- 底下有编译好的.rpm格式的文件
    3.3配置文件的主要内容
         案例一:修改配置文件,然后安装
         注意:  rp-pppoe.spec  的规则
              1.整个档案以Summary开头,这部分的设定是最基础的内容
              2.每个不同的段落都以%开头,例如%prep,%install
         # rpm -i  rp-pppoe-3.5-32.1.i386.rpm          ----会将SRPM解压后放置到/usr/src/redhat/
         # find /usr/src/redhat/     -type f          ----主要含有原始码和一个重要的配置文件【1-18】
         # cd /usr/src/redhat/SPECS          ----设定参数当就在这个地方
         # vim rp-pppoe.spec          ----     主要的将SRPM编译成RPM的配置文件,依据设定,最终的档名会是{name}-{version}-{release}-{ExclusiveArch}.rpm【1-19,20,21,22】,几个重要段落的说明【1-23,24】
    3.4SRPM的编译指令(-ba/-bb)
         # rpm -ba rp-pppoe.spec          ----编译并同时产生rpm档案和srpm档案 
         # rpm -bb rp-pppoe.spec          ----仅编译成rpm,执行过程【1-25】
    3.5一个打包自己软件的案例
          意:这个案例我们使用之前用c语言完成的main,最终将其封装成为main-1.1.i386.rpm
         1.在/usr/local/src/底下建立一个名为main-0.1的目录,并将源码解压缩到这个目录
               # mkdir /usr/local/src/main-0.1          ---建立新目录
              # tar -zxvf main.tgz     -C /usr/local/src/main-0.1          ----解压缩到指定目录
              # cd /usr/local/src/main-0.1
              # vim Makefile          ----建立原始码所需的make规则
                LIBS=-lm
              OBJS=main.o haha.o sin_value.o cos_value.o
              CFLAGS=-Wall
              main:${OBJS}
                  gcc -o $@ ${OBJS} ${LIBS}
              clean:
                  rm -f ${OBJS}
              install:
                install -m 755 main $(RPM_INSTALL_ROOT)/usr/local/bin/main          ----安装到指定目录
              # cd ..
         2.将打包好的源码放到/usr/src/redhat/下指定目录
              # tar -zcvf main-0.1.tar.gz main-0.1          ----将main-0.1这个目录压缩成为main-0.1.tar.gz
              # cp main-0.1.tar.gz /usr/src/redhat/SOURCES          ----将压缩好的源码放入指定目录
         3.建立*.spec的配置文件
               # cd /usr/src/redhat/SPECS
              # vim main.spec          ----【1-26】
              Summary:     calculate sin and cos value.
            Name:    main
            Version:    0.1
            Release:    1
            Lience:    GPL
            ...
           4.开始编译成为RPM与SRPM
               # rpmbuide -ba main.spec
          5.安装、测试、实际查询
              # rpm -ivh /usr/src/redhat/RPMS/i386/main-0.1-1.i386.rpm          ----安装
              # rpm -ql main          ----列出属于该软件的档案与目录
              # rpm -qi main          ----列出该软件的属性信息(main.spec)

4.YUM在线升级机制
    4.1利用yum进行查询、安装、升级与移除功能
         4.1.1查询功能(yum [list/info/search/provides/whatprovides])【1-27】
               # yum search raid          ----查找磁盘阵列相关的软件
               # yum info mdadm          ----找出mdadm这个软件的功能为何类似rpm -qai
              # yum list          ----列出yum服务器上面提供的所有软件名称,类似rpm -qa
              # yum list updates          ----列出目前服务器上可以升级的软件
              # yum provides passwd          ----列出提供passwd这个档案的软件有哪些,类似rpm -qf
              案例:利用yum找出pam打头的软件有哪些,其中还未安装的有哪些
              # yum list pam*           ----显示信息分为Installed packages和Available packages(未安装或者可升级)两部分
         4.1.2安装、升级功能:yum [install | update] 软件【1-28】
              案例一:将前一个练习找到的未安装的软件安装起来
              #  yum install pam-devel          ----会自动解决依赖问题
         4.1.3移除功能:yum[remove] 软件
              # yum remove pam-devel          ----会自动检查依赖问题
    4.2yum的配置文件
         4.2.1入门案例
         # vim /etc/yum.repos.d/CentOS-Base.repo          ----编辑base这个容器的配置文件【1-29】
         案例一:列出目前yum server所使用的容器有哪些
         # yum repolist all          ---会发发现有多个容器,,enabled是激活的,因为有对应多个容器的配置文件
         4.2.1修改容器产生的问题与解决之道
         问题:本机列表与yum服务器的列表不同步,无法更新
         原因:修改系统默认配置文件,指定特定的映象站台,但没有修改容器名,导致yum下载对应容器的清单/var/cache/yum下
         解决:清除系统中的旧数据(yum clean [packages/headers/all])
         #  yum clean all          ----清除系统上所有的容器的数据【1-30】
    4.3yun的软件群组功能【1-31】
         案例一:列出目前容器与本机上面的可用于安装过的软件群组有哪些
         # yum grouplist          ----会发现系统上面大部分的软件都是以群组的方式安装的
         # yum groupinstall XFCE-4.4          ----安装XFACE这个桌面环境接口
    4.4全系统自动升级
         # vim /etc/crontab
         0 3 * * * root /usr/bin/yum -y update          ----设定每天3am在带宽充裕时升级系统(-y自动回答yes来完成下载与安装)

5. 管理的抉择:RPM还是Tarball【1-32】
6.重点回顾【1-33】
7.本章习题
    情景模拟题一:实际安装php,php-mysql,php-devel,httpd-devel等软件
    # rpm -q httpd httpd-devel php php-devel php-mysql          ----确认这些软件是否已经安装
    # ifconfig eth0          ----查看网卡设定
    # route -n          ----查看路由设定
    # ping -c 2 192.168.201.254          ----尝试连接路由 ,看路由是否回应,如果有说明TCP/IP设定好了
    # dig www.baidu.com          ----测试查看百度的IP,确认DNS设置正确
    # yum install   httpd httpd-devel php php-devel php-mysql            ----安装
    简答题:【1-34,35】

转载于:https://www.cnblogs.com/eli01/p/3559688.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值