美文网首页Linux科技
rpm yum 编译安装

rpm yum 编译安装

作者: Miracle001 | 来源:发表于2017-11-20 00:59 被阅读45次

    rpm yum 编译安装

    软件运行环境
    ABI
        Windows与Linux不兼容:ELF(linux) PE(windows) 文件头部不同 魔数
        库级别虚拟化:Linux(WINE) windows(Cywin)
    API 
        POSIX(Portable OS)  linux——windows,均可用
        调用现有的库——>标准接口:API
        /usr/include/——>".h"文件(头文件)
        程序源代码——>预处理——>编译——>汇编——>链接
        静态编译 .a 程序与所调用的库在一起(打包成整体)——>不考虑依赖性
        动态编译 .so 程序——>独立<——调用库 考虑依赖性
    
    编译过程
    C语言
        ".c/.h"——>预处理gcc——>文本文件.i——>编译gcc——>汇编语言.a(目标代码)——>汇编as——>二进制.o 静态库.a——>ld 链接——>a.out 可执行的二进制
    JAVA
        支持跨平台,JAVA虚拟机class
    开发语言
        系统升级:c c++
        应用级:java Python go php
    
    软件包的基础
    二进制程序组成:二进制文件 库文件 配置文件 帮助文件
    源代码命名方式:name-Version.tar.gz|bz2|xz  Version:major(主版本号),minor(此版本号 功能),release(发行版本)
        Linux:4.11.4.tar.xz 
    rpm包命名方式: 
        Application-VERSION-release.src.rpm
        bash-4.2.46-19.e17.x86-64.rpm 
            Version:4.2.46 源码开发人员增加
            19.e17 编译人员增加
            x86-64 cpu架构:x86-64(64位兼容) noarch(无要求) x-84(32位)
            arch 平台
        uname -r  版本号
    包之间可能存在依赖关系、循环关系
    解决依赖关系的工具
        yum
        apt-get(deb...) zypper(suse...) dnf(rpm-)
    库文件
        查看二进制程序所依赖的库文件  ldd /bin/ls 
            ldd /path/to/binary_file
        显示本机已缓存的所有可用库文件名及文件路径的映射关系
            /sbin/ldconfig -p  /sbin/可有可无
        读取的配置文件,重新生成缓存
            配置文件 /etc/ld.so.conf,/etc/ld.so.conf.d/*.conf 
            缓存文件 /etc/ld.so.cache
        zlib-devel-1.2.7-17.e17.x86-64.rpm 
            utils(工具),devel(开发),lib(库)  可按需安装
    程序包管理器
        功能
            将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而方便快捷的实现程序包的安装、卸载、查询、升级、校验......
        包文件的组成
            rpm包内的文件清单
            rpm的元数据
            安装或卸载时运行的脚本
        数据库
            /var/lib/rpm
            程序包名称及版本
            依赖关系,功能说明
            安装后生成的各文件路径及校验码信息
        rpm yum dnf 
        获取程序包的途径
            系统光盘或官方服务器      
                CentOS 镜像:
                    https://www.centos.org/download/
                    http://mirrors.aliyun.com
                    http://mirrors.sohu.com
                    http://mirrors.163.com
            项目官方站点
            第三方组织:
                Fedora-EPEL: :
                    Extra Packages for Enterprise Linux
                Rpmforge:RHEL 推荐,包很全
                搜索引擎 :
                    http://pkgs.org
                    http://rpmfind.net
                    http://rpm.pbone.net
                    https://sourceforge.net/
            自己制作
            注意:第三方包建议要检查其合法性来源 合法性,         
            ping/dig www.centos.org
    
    rpm包管理
        包安装
            rpm -ivh PACKAGE_FILE ...
                i install
                v 过程
                h 以数字显示程序包管理执行进度
            [install-options]
                --test:测试安装,但不真正执行安装,即dry run模式
                --nodeps:忽略依赖关系  ab两个包,相互依赖,利用此选项,可以先安装a,再安装b
                --replacepkgs | replacefiles  可能导致新生成的配置文件被覆盖
                --nosignature 不检查来源合法性
                --nodigest 不检查包完整性
                --noscripts 不执行程序包脚本
                --ignoreos centos6的包装到centos7上
                %pre: 安装前脚本; --nopre
                %post: 安装后脚本; --nopost
                %preun: 卸载前脚本; --nopreun
                %postun: 卸载后脚本; --nopostun  
            安装a包,提示装b包,即b包是基础,先装b包;删除a报错,则应该先删除b,再删除a;
            /testapp/有很多功能,只用其中的一部分,拆包;
                testapp-version-arch.rpm 主包
                testapp-devel-version-arch.rpm 支包
                先装主包,再装支包
            
        包升级
            rpm {-U|--upgrade} [install-options]  PACKAGE_FILE ...
            rpm {-F|--freshen} [install-options]  PACKAGE_FILE ...
            upgrade :
                安装有旧版程序包,则“升级”
                如果不存在旧版程序包,则“安装”
            freshen :
                安装有旧版程序包,则“升级”
                如果不存在旧版程序包,则不执行升级操作
            rpm -Uvh PACKAGE_FILE ...
            rpm -Fvh PACKAGE_FILE ...
            --oldpackage :降级
            --force: 强制安装           
            注意:
                (1)不要对内核做升级操作;Linux 支持多内核版本并存,因此,对直接安装新版本内核
                (2)如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew) 后保留
        包查询
            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 “*.conf”  释放包内文件
                [query-options]
                    --changelog :查询rpm包的changelog(修改日志,bug修复)
                    -c:查询程序的配置文件
                    -d:查询程序的文档
                    -i:information
                    -l:查看指定的程序包安装后生成的所有文件
                    --scripts:程序包自带的脚本
                    --provides:列出指定程序包所提供的CAPABILITY
                    -R:查询指定的程序包所依赖的CAPABILITY       
            常用查询用法:
                -qi PACKAGE,
                -qf FILE,
                -qc PACKAGE,
                -ql PACKAGE,
                -qd PACKAGE
                -qpi PACKAGE_FILE,
                -qpl PACKAGE_FILE, ...
                -qa 
        包卸载:
            rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
        包校验 
            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           
                rpm -Va  查看所有包是否被修改
                本机文件和安装前包文件的校验
            包来源合法性验正及完整性验正
                完整性验正:SHA256
                来源合法性验正:RSA
        公钥加密
                对称加密:加密、解密使用同一密钥
                非对称加密:密钥是成对儿的
                    public key:  公钥,公开所有人
                    secret key:  私钥,不能公开
        导入所需要公钥
                rpm -K|checksig rpmfile 检查包的完整性和签名  (Not OK未导入公钥,不正规)
                rpm --import / etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
                CentOS 7 发行版光盘提供: RPM-GPG-KEY-CentOS-7
                rpm -qa “gpg-pubkey*”  结果:gpg-pubkey-f4a80eb5-53a7ff4b
                rpm -qi "gpg-pubkey-f4a80eb5-53a7ff4b"
        rpm 数据库
          数据库重建:
                /var/lib/rpm
         rpm {--initdb|--rebuilddb}
                initdb:初始化
                    如果,事先不存在数据库,则新建之
                    否则 ,不执行任何操作
                rebuilddb:重建已 安装的包头的数据库 索引目录            
    
    yum
        CentOS: yum, dnf
        YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具
            yum repository: yum repo,存储了众多rpm 包,以及包的相关的元数据文件(放置于特定目录repodata下)
            文件服务器:
                http://
                https://
                ftp://
                file://
        yum 客户端配置文件:
            /etc/yum.conf :为所有仓库提供公共配置
            /etc/yum.repos.d/*.repo :为仓库的指向提供配置
                vim *.repo,对后缀要求
                    备份操作
                        cd /etc/yum.repos.d/ 
                        mkdir backup
                        mv *.repo backup/
                        
            仓库指向的定义:
                [repositoryID]  #仓库名称,不能有空格
                name=Some name for this repository  #描述
                baseurl=url1://path/to/repository/  #仓库路径,repodata文件夹的父目录
                        url2://path/to/repository/
                enabled={1|0}  1表示启用
                gpgcheck={1|0}  #不写,默认1,不导入key,会是warning
                gpgkey=URL  #要是路径,手工写进脚本,不用命令行输入,--input
                #enablegroups={1|0}
                #failovermethod={roundrobin|priority}
                    roundrobin:意为随机挑选,默认值
                    priority:按顺序访问
                #cost= 默认为1000
                    cost值越小,优先使用
                    [base]
                    cost=1000
                    [os7]
                    cost=50  优先使用
            yum的repo配置文件中可用的变量:(统一格式,标准化管理)
                $releasever:当前OS的发行版的主版本号  (6:centos 6,os发行版主版本号)
                $arch:平台,i386,i486,i586,x86_64等
                $basearch:基础平台;i386, x86_64 (cpu架构)
                $YUM0-$YUM9: 自定义变量
        实例:
                http://server/centos/$releasever/$basearch/
                http://server/centos/7/x86_64
                http://server/centos/6/i384         
        yum源
          阿里云repo文件:
                http://mirrors.aliyun.com/repo/
            CentOS系统的yum源
            阿里云:
                    https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
            教学环境:
                    http://172.16.0.1/cobbler/ks_mirror/$releasever/
            EPEL的yum源:
            阿里云:
                    https://mirrors.aliyun.com/epel/$releasever/x86_64
            教学环境:
                    http://172.16.0.1/fedora-epel/$releasever/x86_64/           
        yum-config-manager
            生成172.16.0.1_cobbler_ks_mirror_CentOS-X-x86_64_.repo
            yum-config-manager --add-repo=http://172.16.0.1/cobbler/ks_mirror/7/  命令直接生成yum仓库
             yum-config-manager --disable  “仓库名" 禁用仓库
             yum-config-manager --enable  “仓库名”  启用仓库       
        yum命令
            yum 命令的用法:
                yum [options] [command] [package ...]
            显示仓库列表:
                yum repolist [all|enabled|disabled]
            显示程序包:
                yum list |less 
                    @ 已装好
                    @anaconda 安装向导
                    os7 未安装
                    installed rpm命令安装的
                yum list [all | glob_exp1] [glob_exp2] [...]
                yum list {available|installed|updates} [glob_exp1][...]
                
            安装程序包:
                yum install package1 [package2] [...]
                yum reinstall package1 [package2] [...] ( 重新安装)         
            升级程序包:
                yum update [package1] [package2] [...]
                    生产环境中,不建议升级,最好重新安装
                    6.8的系统  6.9的yum源  update全部升级
                    yum update  全部升级
                    yum update rpmfile  单个升级
                yum downgrade package1 [package2] [...] ( 降级)
            检查可用升级:
                yum check-update
            卸载程序包:
                yum remove | erase package1 [package2] [...]  依赖的包未卸载           
            查看程序包information:
                yum info [...]
            查看指定的特性(可以是某文件)是由哪个程序包所提供:
                yum provides | whatprovides feature1 [feature2][...]
                yum provides tree/ftp 
            清理本地缓存:
                清除/var/cache/yum/$basearch/$releasever 缓存
                yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
            构建缓存:
                yum makecache           
            搜索:
                yum search string1 [string2] [...]
                以指定的关键字搜索程序包名及summary信息
            查看指定包所依赖的capabilities:
                yum deplist package1 [package2] [...]
            查看yum事务历史:
                yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
                yum history
                yum history info 6
                yum history undo 6  取消安装(把依赖的包也卸载掉)
                yum history redo 6  重新安装
            日志:
                /var/log/yum.log  记录缓存          
            安装及升级本地程序包:
                yum localinstall rpmfile1 [rpmfile2] [...]
                    ( 用install 替代)
                yum localupdate rpmfile1 [rpmfile2] [...]
                    ( 用update 替代)
            包组管理的相关命令:
                yum groupinstall group1 [group2] [...]
                yum groupupdate group1 [group2] [...]
                yum grouplist [hidden] [groupwildcard] [...]
                yum groupremove group1 [group2] [...]
                yum groupinfo group1 [...]
                    yum groupinfo "Development Tools"  查看包组信息
                        无符号  已经安装到系统上,并非随包组安装,可能随yum安装
                        =       已经安装到系统上,随包组一起安装
                        +       没有安装    随包组一块装
                        -       没有安装    不随包组一块装 可能因为安装后自己卸载了
                    yum grouplist  安装前查看包的名字
                        开发工具包组必须安装,编译安装使用
                    yum groupinstall "Development tools"
            yum的命令行选项:
                --nogpgcheck:禁止进行gpg check,不用导入公钥,优先级高于配置文件中的gpgcheck=1
                    yum install --nogpgcheck tree  
                -y:自动回答为“yes”  不用进行交互式操作
                -q:静默模式
                --disablerepo=repoidglob:临时禁用此处指定的repo
                --enablerepo=repoidglob:临时启用此处指定的repo
                --noplugins:禁用所有插件      
        系统光盘yum仓库
            系统安装光盘作为本地yum仓库:
             (1)挂载光盘至某目录,例如/media/cdrom
                    # mount /dev/cdrom /media/cdrom
             (2)创建配置文件
                    [CentOS7]
                    name=
                    baseurl=
                    gpgcheck=
                    enabled=
            创建yum 仓库:
                createrepo [options] <directory>                
    
    实验
        网络yum源
            神奇的目录/misc/cd 如何挂载操作
                df
                centos6 ...media/centos6.9..
                centos7.3 run/media/centos7.3
                root登录才可以挂载光盘
                普通用户挂载光盘
                    mount /dev/sr0 /mnt
                    ls /misc/cd  看到光盘挂载成功 centos6.9
                    rpm -i /run/media/root/centos7.../Packages/autofs  系统已经安装则不用
                    systemctl enable autofs  开机自动启动
                ****systemctl start autofs
                    df 
                    ls /misc/cd  
                    cd /misc/cd  进入访问,即挂载   
                    ls /misc/cd/Packages/  显示挂载信息           
            1 准备光盘、包、元数据。
            2 网络服务 http(s) ftp 
                rpm -ivh /mnt/Packages/vsftpd... 或者 yum -y install vsftpd
                rpm -ql vsftpd
                服务脚本名称
                    .service后缀文件 7
                    /etc/rc.d/init.d/vsftpd 6
                netstat -ntl  查看ftp21端口
              启动服务
                systemctl start vsftpd.service 7
                service vsftpd start 6
              开机启动服务
                systemctl enable vsftpd 7
                chkconfig vsftpd on 6
                /var/ftp  存放ftp共享资源
            3 停止防火墙服务
                systemctl stop firewalld.service 马上禁用 7
                systemctl disable firewalld.service 下次开机禁用 7
                iptables -vnl
                service iptables stop 开机禁用 6
                chkconfig iptables off 马上禁用 6
            4 复制元数据repodate和rpm包文件
                cd /var/ftp/pub 
                mkdir 7 6
                cd 7
                cp -r /mnt/repodate/ .
                cp -r /mnt/Packages/ .  拷贝一部分即可
                换光盘 右下角 连接、设置
                cd /var/ftp/6
                cp -r /mnt/repodate/ .
                cp -r /mnt/Packages/ .
            5 客户端配置文件
                vim centos.repo 
                    [ftpbase]
                    name=ftp server repo
                    baseurl=ftp://192.168.227.135/pub/$releasever
                    gpgcheck=0
                其他的库禁用 enable=0
                然后在电脑文件夹搜索栏里输入“ftp://192.168.227.135/pub”即可查到内容
                
        上下这两个实验放在一起操做   
        
        实现第三方软件仓库 
            1.准备第三方软件RPM 
                mkdir  /var/ftp/pub/app   这个路径就是repodata的父目录 
                cp  /misc/cd/Packsges/*.rpm   /var/ftp/pub/app 
            2.创建元数据 
                which  createrepo 
                rpm   -qf  ‘`which  createrepo`’ 
                yum  install  createrepo  -y 
                createrepo  /var/ftp/pub/app   在 app下生成repodata文件夹 
            3.客户端的配置 
                [app] 
                basename=the third app 
                baseurl=ftp://192.168.227.135/pub/app 
                gpgcheck=0 
            4.测试 
                yum  repolist 
                yum  clean  all 
                yum  install  app
            在“我的电脑”的文件夹里搜索ftp://192.168.227.135/pub/查看是否生成app目录
                
        移动/lib64/libc.so.6的位置,命令不能使用,排除此故障 
                centos6
                    重启——>进度条:ESC 按一下——>CD-ROM(光盘)——>Rescue模式——>OK——>OK——>NO——>continue——>OK——>OK——>OK——>进入shell(命令窗口)
                        continue步骤时,显示一句话:
                            df
                            /dev/sda1 /boot /mnt/sysimage/boot 
                            /dev/sda2 /     /mnt/sysimage/
                    chroot /mnt/sysimage  切根,救援模式路径变为正常情况的路径
                    mv /root/libc.so.6 /lib64/
                    exit 两次
                    reboot
                centos7
                    mv /lib64/libc.so.6 /root 
                    重启——>进度条:ESC 按一下——>CD-ROM(光盘)——>troubleshooting——>Rescue模式——>1,回车——>c(继续)——>回车,开启shell
                    chroot /mnt/sysimage  命令不管用,不能切掉根
                    mv /mnt/sysimage/root/libc.so.6 /mnt/sysimage/lib64
                    exit
                
        centos6和centos7下,删除/lib64/libc.so.6,并恢复之
                把光盘里的libc.so.6复制到/mnt/sysimage/lib64/下 
                救援模式,进入命令行操作
                chroot /mnt/sysimage 不管用
                centos7
                    cd lib64 
                    cp libc.so.6 /mnt/sysimage/lib64 
                    exit 
                centos6 
                    cd lib64 
                    cp libc.so.6 /mnt/sysimage/lib64 
                    exit
                    选择reboot,重启即可
        
        cpu架构有几种
            centos7
                ls /mnt/Packages/*.rpm|rev|cut -d. -f2|rev|sort|uniq -c
                ls /mnt/Packages/*.rpm|egrep -o "[^.]+\.rpm"|cut -d. -f1|sort|uniq -c
        删除rpm,并恢复
            进入救援模式——>
            df——>mkdir /mnt/cdrom/——>
            mount /dev/sr0 /mnt/cdrom/——>
            cd /mnt/cdrom/Packages/——>
            rpm -ivh rpm-tab键补全 --root=/mnt/sysimage --force——>
            分类查询是否成功安装rpm包: 
                centos6.9:ls /mnt/sysimage/bin/rpm——>有,则成功,exit即可; 
                centos7.3:ls /mnt/sysimage/usr/bin/rpm——>有,则成功,exit即可。 
        删除tree,并恢复 
            centos7 
            rm -rf /usr/bin/tree 
            rpm -q tree &> /dev/null || rpm -ivh /mnt/Packages/tree-Tab键补全 --force  可以分两步操作         
        卸载内核,并恢复之
            centos6 
            cat /boot/grub/grub.conf  查看使用的内核是第几个
                default=0 默认第一个title
            内核在线不能切换
                vim /boot/grub/grub.conf,更改default,reboot才可以切换至其他内核
            rpm -e kernel-2.6.32-696.el6.x86_64 --nodeps  卸载内核
            进入救援模式
            mkdir /mnt/cdrom
            mount /dev/sr0 /mnt/cdrom
            ls /mnt/cdrom/Packages  所有包都在这里
            rpm -ivh /mnt/cdrom/Packages/kernel-... --root=/mnt/sysimage
        /usr/bin/Java属于哪个包
            which java
            ll /usr/bin/Java
            ll /etc/alternatives/java
        centos6,7配置本地光盘当做yum源,并安装开发包组
            centos7 
                光盘做yum源,需要先挂载
                    mount /dev/sr0 /mnt 
                vim centos.repo
                    [base]
                    name=base
                    baseurl=file:///mnt
                    enabled=1
                    gpgcheck=1
                    gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7
                    [epel]
                    name=epel 
                    baseurl=http://172.16.0.1/fedora-epel/7/x86_64/  教学环境(里面含有光盘没有的包,在实际环境中不能使用)
                    gpgkey=file:///root/rpm-gpg-key-epel-7(本地文件,网上下载,传到linux里)
                yum -y install gcc,httpd,samba
                ls /mnt/Packages/*.rpm |wc -l  9363
                    yum repolist  9363  包数量相同
            centos6
                使用原文件即可安装gcc,httpd,samba
                ls /misc/cd/Packages/*.rpm |wc -l  3240(rpm包在此盘1611里,第一张盘存放的是元数据)
                    yum repolist  7508  报数量不同
        reset.sh初始化脚本实现yum源的配置
            cd /etc/yum.repos.d/
            mkdir backup
            mv *.repo backup
            脚本
                cat > /etc/yum.repos.d/base.repo << eof
                    [base]
                    baseurl=file:///misc/cd
                    gpgcheck=0
                    eof                 
    
    程序包编译
    程序包编译安装:
       Application-VERSION-release.src.rpm -->  安装后,使用rpmbuild 命令制作成二进制格式的rpm包,而后再安装
    源代码--> 预处理--> 编译--> 汇编--> 链接--> 执行
    源代码组织格式:
        多文件:文件中的代码之间,很可能存在跨文件依赖关系
        C 、C++ :make  项目管理器
        configure脚本 --> Makefile.in --> Makefile
        java: maven
    
    编译安装
     C语言源代码编译安装三步骤:
            1 ./configure
                (1)通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile
                (2)检查依赖到的外部环境,如依赖的软件包
            2 make 根据makefile文件,构建应用程序
            3 make install 复制文件到相应路径
      开发工具:
            autoconf:  生成configure 脚本
            automake :生成Makefile.in
        注意:安装前查看INSTALL ,README     
        开源程序源代码的获取:
            官方自建站点:
            apache.org (ASF :Apache Software Foundation)
            mariadb.org
            ...
            代码托管:
            SourceForge.net
            Github.com
            code.google.com
        c/c++ 编译器: gcc (GNU C Complier)         
        编译C源代码:
            准备:提供开发工具及开发环境
                开发工具:make, gcc等
                开发环境:开发库,头文件
                glibc :标准库
            实现:通过“包组”提供开发组件
                Development Tools
                Server Platform Development         
        第一步:configure 脚本
            选项:指定安装位置、指定启用的特性
            --help:  获取其支持使用的选项
            选项分类:
                安装路径设定:
                --prefix=/PATH:  指定默认安装位置, 默认为/usr/local/
                --sysconfdir=/PATH :配置文件安装位置
                System types: 支持交叉编译            
            Optional Features: 可选特性
                --disable-FEATURE
                --enable-FEATURE[=ARG]
            Optional Packages: 可选包
                --with-PACKAGE[=ARG], 依赖包
                --without-PACKAGE, 禁用依赖关系           
        第二步:make
        第三步:make install            
        安装后的配置:
            (1)二进制程序目录导入至PATH 环境变量中
                编辑文件/etc/profile.d/NAME.sh
                    export PATH=/PATH/TO/BIN:$PATH
            (2)导入库文件路径
                编辑/etc/ld.so.conf.d/NAME.conf
                    添加新的库文件所在目录至此文件中
                让系统重新生成缓存:
                    ldconfig [-v]           
            (3)导入头文件
                基于链接的方式实现:
                    ln -sv
            (4)导入帮助手册
                编辑/etc/man.config|man_db.conf 文件
                    添加一个MANPATH         
                
        centos7源码编译安装httpd-2.4...           
            1 下载源码包
                www.apache.org——>点击projects栏——>查找所需的项目,并下载
                rz上传到Linux里
                httpd-2.2... centos6 
                httpd-2.4... centos7 
                ll -h httpd-2...  查看文件大小
                tar xvf httpd-2... (-C /tmp 指定路径,可以不写,默认解到当前目录)
                du -sh httpd-2...  查看目录大小
                find /root/httpd-2... -name "*.c" |wc -l  统计httpd-2...目录中有多少.c文件
                安装到与操作系统不同的分区,且是独立的目录中
                    规划安装在/app/apache24中,此目录不需要手动创建,安装时,会自动生成
            2 安装开发包组
                yum grouplist ——> Development Tools ——> yum goupinstall "Development Tools"  
            3 查看两个文件
                cat README
                cat INSTALL
            4 cd /root/httpd-2.4...  进入此目录中,后续步骤必须在这个解压缩的目录中进行
                ./configure --help  功能和目录  查看选项
                    文件分层结构(FHS):/bin/和/sbin/ ——> 二进制文件;/etc/ ——> 配置文件;/usr/share ——> man帮助;
                /app/apache24/(etc,bin,man,include...),这些文件安装目录也可以自己独立出来,都有各自的特定选项;
            5 ./configure --prefix=/app/apache24/ --sysconfdir=/etc/apache24/ --enable-rewrite  
                    --sysconfdir选项,配置文件独立安装到/etc/apache24/下,/etc/apache24/目录会自动生成,不写此选项,配置文件就会安装到/app/apache24/下            
                    --enable-rewrite选项,启用此功能,不写,就是默认情况
                安装过程中,可能会报错,提示依赖包,缺什么包装什么包即可,yum -y install 包-devel,然后再执行./configure ...
                yum search apr
                yum -y install apr-devel
                yum -y install apr-util-devel 
                yum search pcre
                yum -y install pcre-devel
                ! ./conf  执行历史命令./configure...
                echo $?  0——>成功
                ll -t 查看时间排序文件,makefile文件生成 
                cat config.log 日志文件     
                du -sh .    
            6 make && make install
                du -sh .
                ll -t       
            7 访问测试
                iptables -vnL 查看防火墙是否关闭
                netstat -ntl 
                cat INSTALL
                /app/apache24/bin/apachectl start  (不在path变量路径里,所以写全路径)
                    或者cd /app/apache24/bin/ 
                        ./apachectl start 
                    或者放入path变量路径里
                        cd /etc/profile.d/  全局配置所有人都要用
                        vim apache24.sh 
                            PATH=$PATH:/app/apache24/bin/ 
                        . apache24.sh 
                        echo $PATH
                        apachectl start
                netstat -ntl  http:80
                输入网址http://192.168.227.135,即可访问
                cd /app/apache24/htdocs/
                vim index.html  
                    welcome to china 
                apachectl stop  停止http服务
                netstat -ntl http:80无
                输入网址http://192.168.227.135,不可访问 
                man apachectl
                cd /app/apache24/man/  对应工具的帮助
                rpm -q httpd  确保本机的httpd包没有安装,否则会引起冲突,编译安装的httpd与安装包的httpd是一样的。
            8 man http  如果找不到,需要写配置文件,如果可以找到,则不用写了;
                centos6
                    vim /etc/man.config 
                        ... ...
                        MANPATH /app/apache24/man/  一定是man1和man8的父目录
    
    练习:
    1 编写系统初始化脚本reset.sh,包括别名,提示符颜色,yum仓库配置文件, 安装tree,ftp,lftp,telnet等包
    2 centos6的httpd安装报错,待解决
    
    image.png

    相关文章

      网友评论

        本文标题:rpm yum 编译安装

        本文链接:https://www.haomeiwen.com/subject/efquvxtx.html