• 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】
  • 相关阅读:
    跟我学算法-图像识别之图像分类(上)(基础神经网络, 卷积神经网络(CNN), AlexNet,NIN, VGG)
    跟我学算法-人脸识别(Siamese network) 推导
    EL 表达式
    JavaBean 介绍
    HttpSession 入门
    Cookie 入门
    JSP 入门
    Web 编程中路径问题
    Web 编程中编码问题
    Response 和 Request
  • 原文地址:https://www.cnblogs.com/eli01/p/3559688.html
Copyright © 2020-2023  润新知