rpm和yum的使用,程序包编译安装以及编译apache过程中出现的问题

一、rpm包管理

    

    用法: rpm [选项…]

    

        查询/验证软件包选项:

          -a, –all                        查询/验证所有软件包

          -f, –file                       查询/验证文件属于的软件包

          -g, –group                      查询/验证组中的软件包

          -p, –package                    查询/验证一个软件包

          –pkgid                          query/verify package(s) with package identifier

          –hdrid                          query/verify package(s) with header identifier

          –triggeredby                    query the package(s) triggered by the package

          –whatrequires                   query/verify the package(s) which require a dependency

          –whatprovides                   查询/验证提供相关依赖的软件包

          –nomanifest                     不把非软件包文件作为清单处理

        

        查询选项(用 -q 或 –query):

          -c, –configfiles                列出所有配置文件

          -d, –docfiles                   列出所有程序文档

          -L, –licensefiles               list all license files

          –dump                           转储基本文件信息

          -l, –list                       列出软件包中的文件

          –queryformat=QUERYFORMAT        使用这种格式打印信息

          -s, –state                      显示列出文件的状态

        

        验证选项(用 -V 或 –verify):

          –nofiledigest                   不验证文件摘要

          –nofiles                        不验证软件包中文件

          –nodeps                         不验证包依赖

          –noscript                       不执行验证脚本

        

        安装/升级/擦除选项:

          –allfiles                       安装全部文件,包含配置文件,否则配置文件会被跳过。

          –allmatches                     移除所有符合 <package> 的软件包(如果 <package>

                                           被指定未多个软件包,常常会导致错误出现)

          –badreloc                       对不可重定位的软件包重新分配文件位置

          -e, –erase=<package>+           清除 (卸载) 软件包

          –excludedocs                    不安装程序文档

          –excludepath=<path>             略过以 <path> 开头的文件

          –force                          –replacepkgs –replacefiles 的缩写

          -F, –freshen=<packagefile>+     如果软件包已经安装,升级软件包

          -h, –hash                       (和 -v 一起使用效果更好),以#显示程序包管理

                                            执行进度;每个#表示2%的进度 

          –ignorearch                     不验证软件包架构

          –ignoreos                       不验证软件包操作系统

          –ignoresize                     在安装前不检查磁盘空间

          -i, –install                    安装软件包

          –justdb                         更新数据库,但不修改文件系统

          –nodeps                         不验证软件包依赖

          –nofiledigest                   不验证文件摘要

          –nocontexts                     不安装文件的安全上下文

          –noorder                        不对软件包安装重新排序以满足依赖关系

          –noscripts                      不执行软件包脚本

          –notriggers                     不执行本软件包触发的任何脚本

          –nocollections                  请不要执行任何动作集

          –oldpackage                     更新到软件包的旧版本(带 –force

                                           自动完成这一功能)

          –percent                        安装软件包时打印百分比

          –prefix=<dir>                   如果可重定位,便把软件包重定位到 <dir>

          –relocate=<old>=<new>           将文件从 <old> 重定位到 <new>

          –replacefiles                   忽略软件包之间的冲突的文件

          –replacepkgs                    如果软件包已经有了,重新安装软件包

          –test                           不真正安装,只是判断下是否能安装

          -U, –upgrade=<packagefile>+     升级软件包

        

        所有 rpm 模式和可执行文件的通用选项:

          -D, –define=“MACRO EXPR”        定义值为 EXPR 的 MACRO

          –undefine=MACRO                 undefine MACRO

          -E, –eval=“EXPR”                打印 EXPR 的宏展开

          –macros=<FILE:…>                从文件 <FILE:…> 读取宏,不使用默认文件

          –nodigest                       不校验软件包的摘要

          –nosignature                    不验证软件包签名

          –rcfile=<FILE:…>                从文件 <FILE:…> 读取宏,不使用默认文件

          -r, –root=ROOT                  使用 ROOT 作为顶级目录 (default: "/")

          –dbpath=DIRECTORY               使用 DIRECTORY 目录中的数据库

          –querytags                      显示已知的查询标签

          –showrc                         显示最终的 rpmrc 和宏配置

          –quiet                          提供更少的详细信息输出

          -v, –verbose                    提供更多的详细信息输出

          –version                        打印使用的 rpm 版本号

    最常用到的选项是:rpm -ivh PACKAGE_FILE

    最常见rpm包的地方就是我们的centos安装光盘,这里我挂载一个安装光盘并进入到其中

        blob.png

        blob.png

    其中的Packages文件夹中就存放这非常多的rpm包

        blob.png

        blob.png

    我们先导入光盘中的公钥,这样可以保证rpm包的合法性

        blob.png

    再新建数据库,方便rpm包的安装

        blob.png

    安装一个rmp包试试

        blob.png

    因为包与包之间存在依赖性,所以必须手动解决依赖性或忽略依赖性,这是rpm工具的弱点,所以有了yum作为rpm的补充,后面会降到yum,这里我们忽略依赖性安装

        blob.png

    将刚才安装的包卸载掉,选项为-e

        blob.png

二、yum源管理

    yum是对rpm的补充,因为rpm工具无法自动解决安装包的依赖问题,而yum很好的解决了这个问题

    

    yum源的配置文件:

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

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

    /etc/yum.repos.d/*.repo仓库指向的定义:

         [repositoryID]

         name=Some name for this repository

         baseurl=url://path/to/repository/

         enabled={1|0}

         gpgcheck={1|0}

         gpgkey=URL

         enablegroups={1|0}

         failovermethod={roundrobin|priority}

         默认为:roundrobin,意为随机挑选;

         cost=

         默认为1000

    yum的repo配置文件中可用的变量:

        $releasever: 当前OS的发行版的主版本号;

        $arch: 平台;

        $basearch:基础平台;

        $YUM0-$YUM9

    国内常用yum源url:

        http://mirrors.aliyun.com/

        http://mirrors.sohu.com/

        http://mirrors.163.com/

    

    yum的命令行选项:

        –nogpgcheck:禁止进行gpg check;

        -y: 自动回答为“yes”;

        -q:静默模式;

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

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

        –noplugins:禁用所有插件;

    yum的子命令:

        显示仓库列表:

        repolist [all|enabled|disabled]

        

        显示程序包:

        list

        # yum list [all | glob_exp1] [glob_exp2] […]

        # yum list {available|installed|updates} [glob_exp1] […]

    

        安装、重新安装程序包:

        install package1 [package2] […]

    

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

    

        升级、降级程序包:

        update [package1] [package2] […]

    

        downgrade package1 [package2] […] (降级)

    

        检查可用升级:

        check-update

    

        卸载程序包:

        remove | erase package1 [package2] […]

    

        查看程序包information:

        info […]

    

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

        provides | whatprovides feature1 [feature2] […]

    

        清理本地缓存:

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

    

        构建缓存:

        makecache

    

        搜索:

        search string1 [string2] […]

            以指定的关键字搜索程序包名及summary信息;

    

        查看指定包所依赖的capabilities:

        deplist package1 [package2] […]

    

        查看yum事务历史:

            history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

    

        安装及升级本地程序包:

     * localinstall rpmfile1 [rpmfile2] […]

               (maintained for legacy reasons only – use install)

            * localupdate rpmfile1 [rpmfile2] […]

               (maintained for legacy reasons only – use update)

        包组管理的相关命令:

            * groupinstall group1 [group2] […]

            * groupupdate group1 [group2] […]

            * grouplist [hidden] [groupwildcard] […]

            * groupremove group1 [group2] […]

            * groupinfo group1 […]

    

    1、配置本地yum源

            进入/etc/yum.repos.d中

            blob.png

        将系统自带的网络yum重命名以免使用,用mv重命名

        mv CentOS-Base.repo CentOS-Base.repo.bak

        blob.png        rpm和yum的使用,程序包编译安装以及编译apache过程中出现的问题

        将系统光盘挂载到/media/cdrom中

        rpm和yum的使用,程序包编译安装以及编译apache过程中出现的问题blob.png

        打开CentOS-Media.repo,在baseurl中加入/media/cdrom

        blob.png        rpm和yum的使用,程序包编译安装以及编译apache过程中出现的问题

        enabled=1表示启用

        用yum install安装一个没安装过的软件试试

    2、配置阿里云yum源

        在/etc/yum.repos.d中创建一个repo文件,这里我创建的是aliyun.repo

        rpm和yum的使用,程序包编译安装以及编译apache过程中出现的问题blob.png

        文件中的内容是

        rpm和yum的使用,程序包编译安装以及编译apache过程中出现的问题blob.png

    

    [Centos7-ailiyun.com]

    name=Centos-$releasever-$basearch

    baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch

    enabled=1

    gpgcheck=0

    [updates-ailiyun.com]

    name=Centos-$releasever-$basearch-updates

    baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch

    enabled=1

    gpgcheck=0

        其中变量$releasever获取的是版本号,$basearch获取的是系统架构(如x86_64)

        enabled=1表示启用,gpgcheck=0表示不进行校验

        创建完之后构建本地缓存数据库,yum makecache

        rpm和yum的使用,程序包编译安装以及编译apache过程中出现的问题blob.png

        安装一个未安装的软件试试,比如centos7系统中没有ifconfig,我们yum install net-tools.x86_64

        rpm和yum的使用,程序包编译安装以及编译apache过程中出现的问题blob.png

        blob.png

        这里可以很明显的看到yum会自动帮你解决依赖关系

    3、配置epel源

        直接在上面的aliyun.repo中添加一个epel仓库

        blob.png

        添加完成之后记得构建缓存

        blob.png

三、程序包的编译安装

    1、开源源码获取站点

        www.Github.com

        www.apache.org

    2、编译C源代码

        前提:提供开发工具及开发环境

            开发工具:make, gcc等

            开发环境:开发库,头文件

                glibc:标准库

            通过“包组”提供开发组件

                CentOS 6: "Development Tools", "Server Platform Development",

        

        第一步:configure脚本

            选项:指定安装位置、指定启用的特性

                –help: 获取其支持使用的选项

            选项分类:

                安装路径设定:

                    –prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/

                    –sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;

                System types:

                Optional Features: 可选特性

                    –disable-FEATURE

                    –enable-FEATURE[=ARG]

                Optional Packages: 可选包

                    –with-PACKAGE[=ARG]

                    –without-PACKAGE

        第二步:make

        第三步:make install

    

    3、安装并编译httpd-2.4

        安装包组提供开发组件

        blob.png

        通过wget下载一个httpd-2.4的源码至本地并解压

        blob.png

        blob.png

        指定安装位置和配置文件路径

        blob.png

        报错因为为没找到APR包,那么我们去官网下一个编译安装

        blob.png

        blob.png

        blob.png

        blob.png

        make

        blob.png

        make install

        blob.png

        安装完APR后我们回到httpd下继续刚才的编译安装

        blob.png

        blob.png

        再次报错,缺少APR-util包,按照刚才安装APR包的方法安装

        blob.png

        blob.png

        blob.png

        blob.png

        这里需要指明之前APR安装的位置

        blob.png

        安装完APR-util之后,再次安装httpd

        blob.png

        编译时注意指明apr或者apr-util的安装位置

        blob.png

        blob.png

        再次出错缺少pcre-config,还是按照前面的方法安装编译pcre-config

        blob.png

        blob.png

        blob.png

        安装完pcre-config后编译httpd还是提示错误,需要安装pcre-devel

        blob.png

        这里我们就用yum源安装了

        blob.png

        再次编译httpd

        blob.png

        blob.png

        blob.png

        这次成功了,继续执行make和make install

        blob.png

        blob.png

        完成后打开httpd服务试试

        blob.png

        blob.png

        blob.png

        这里需要注意的是,如果网页打不开请关闭selinux.

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

(0)
N17_信风N17_信风
上一篇 2016-03-19
下一篇 2016-03-20

相关推荐

  • Nginx 负载均衡多个nmmp主机

    设计拓扑图 一、Memcache简介 cache(缓存系统) 高性能分布式缓存服务器,缓存所有的“可流式化”数据:livejournal旗下Danga Interacive公司 程序=指令+数据 指令:程序 数据:IO操作 文件系统: 特征:协议简单  基于libevent的事件处理  内置内存存储方式  memcached 不…

    2014-09-17
  • Linus:利用二级指针删除单向链表

    感谢网友full_of_bull投递此文(注:此文最初发表在这个这里,我对原文后半段修改了许多,并加入了插图) Linus大婶在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了什么才是core low-level coding。 下面是Linus的教学原文及翻译—— “…

    Linux干货 2016-07-10
  • 推荐CentOS Linux下的分区及格式化工具

    简介 伴随着科技的飞速发展,越来越多的企业对于服务器的稳定要求越来越高,越来越多的企业开始采用linux系统来部署自己的服务,以求高效的稳定性,当然任何操作系统都需要一个最基本的基础,那就是硬盘,及硬盘分区,今天来给大家推荐几款CentOS Linux下的分区工具及如何查看分区环境,也会给大家来带一些硬盘的基本知识 一、硬盘的接口类型 分区肯定是对硬盘进行分…

    2017-03-19
  • 常用的shell命令

    硬件: 1.cpu相关 lscpu:查看cpu的统计信息 cat /proc/cpuinfo :查看cpu详细信息,如每个cpu的型号 2.内存相关 free -m:概要查看内存情况,这里的单位是MB cat  /etc/meminfo   :查看内存详细信息 3.磁盘相关: l…

    Linux干货 2016-08-22
  • 创建CA、申请证书和吊销证书详解

    创建CA和申请证书、吊销证书 搭建工具:openssl 服务端:centos7 客户端:centos6 配置实验环境: 需要两台虚拟机为服务端、客户端提供运行环境,装载openssl工具,添加必要文件;通过查看openssl的配置文件/etc/pki/tls/openssl.cnf(图一),对比服务端的/etc/pki/CA文件内容(图二),如果第一次搭建服…

    2017-04-11
  • Linux的发展史

    Linux的诞生 1987年荷兰阿姆斯特丹Vrije大学的Andrew S.Tanenbaum 教授为了让学生们更了解操作系统而参照Unix系统编写了Minix系统。在1988年芬兰赫尔辛基大学迎来了一位新生Linus Benedict Torvalds ,他在学习了Minix系统后,以此为平台和指导开发出了Linux。在1991年8月Linus Toval…

    Linux干货 2016-10-19

评论列表(1条)

  • stanley
    stanley 2016-03-19 22:29

    知道写标签的同学都是注重细节的同学。赞,能有代码格式化就更好了