美文网首页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 编译安装

    rpm yum 编译安装 软件运行环境 编译过程 软件包的基础 rpm包管理 yum 实验 程序包编译 编译安装 练习:

  • 【CentOS基础篇】之编译安装httpd

    程序包编译安装 在linux中,程序的安装分为rpm安装、yum安装和编译安装,rpm包和yum包在制作过程中已经...

  • Linux软件包的管理

    简介 linux下软件安装方式分为 yum安装、rpm包安装、源码编译 rmp管理软件包 rpm的基础命令 rpm...

  • Linux命令笔记三:Linux命令(三)

    一、用户管理 1.创建用户 2.创建组 二、软件安装 rpm yum Linux软件安装的方式有:编译安装、rpm...

  • Linux操作系统day03

    Linux安装软件的三种方式 rpm安装 yum安装 源码安装 配置 编译 安装 编译型程序和解释型程序 程序语言...

  • CentOS 7 升级 openssh 8.5p1

    说明: 安装编译好的RPM需要安装 openssl 1.1.1 的动态库 yum install openssl1...

  • yum源配置及详解

    红帽系列中,进行软件安装可以有三种方法,编译安装,rpm包安装,和yum源安装。其中yum方法安装最简单,因为它可...

  • 11-软件安装

    本章内容 ◆ 软件运行环境◆ 软件包基础◆ rpm包管理◆ yum管理◆ 定制yum仓库◆ dnf管理◆ 编译安装...

  • CentOS 安装MySQL

    总所周知,MySQL在我们程序员眼中那是必不可少的。① rpm yum 安装② 二进制安装③ 编译安装④ 先编译...

  • 系统基础-软件安装

    Linux 软件安装 你可以了解些什么 源码包编译安装 RPM 安装软件 yum 安装软件 三种安装方法的比较 源...

网友评论

    本文标题:rpm yum 编译安装

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