程序包管理之yum:yum源\库配置以及源码编译安装

程序包管理之yum

yum概念

什么是yum

由yellow dog这一发行版的开发者Terra Soft研发。

使用rpm命令安装软件包时,解决不了依赖关系,就会很麻烦,使用yum可以自行解决依赖关系。

删除某个安装包,如果是用rpm删除,就卸载掉某个依赖关系从而导致其他软件包不能使用。

yum特点

可同时配置多个软件仓库

简洁的配置文件/etc/yum.conf

自动解决安装或者删除RPM软件包时遇到的依赖性问题

使用方便

保持与RPM数据库的一致性

yum repository:yum repo

存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata)

yum支持的常见服务器格式

ftp://
http://
nfs://
file:///

yun缓存

数据:程序包 元数据:repodata(请求的安装包及依赖包的名称、大小、版本、依赖关系等属性)

执行流程为:第一次访问仓库时请求仓库服务器的元数据并下载到本地缓存目录中,然后检索下载安装包及其相关依赖包并进行安装,安装完成后最后再删除缓存目录中的这些安装包,保留元数据。之后再次下载安装包会先去仓库服务器查询元数据的校验码,并和本地元数据校验码进行比较,如果校验码相同,则直接忽略;如果不同就重新下载元数据并对本地缓存目录中的元数据进行覆盖,从而完成缓存有效性验证。

/etc/yum.conf文件详解

/etc/yum.conf文件是yum主配置文件

yum配置两种方式
    一种是直接配置在/etc/yum.conf
        为所有仓库提供公共配置
    一种是在/etc/yum.repos.d目录下增加repo文件
        为仓库的指向提供配置

程序包管理之yum:yum源\库配置以及源码编译安装

/etc/yum.repos.d/*.repo文件详解

程序包管理之yum:yum源\库配置以及源码编译安装

先看一看/etc/yum.repos.d目录下有哪些软件仓库配置文件 程序包管理之yum:yum源\库配置以及源码编译安装

仓库指向的定义:
    [repositoryID]
    name=Some name for this repository
    baseurl=url://path/to/repository/
    enabled={1|0}    表示软件包中定义的源是否启用
    gpgcheck={1|0}
    gpgkey=URL       定义用于校验的GPG 密钥
    enablegroups={1|0}
    failovermethod={roundrobin|priority}
        默认为:roundrobin,意为随机挑选;
    cost=
        默认为1000

yum用法

yum [options] [command] [package ...]

   command is one of:
    * install package1 [package2] [...]
    * update [package1] [package2] [...]
    * update-to [package1] [package2] [...]
    * check-update
    * upgrade [package1] [package2] [...]
    * upgrade-to [package1] [package2] [...]
    * distribution-synchronization [package1] [package2] [...]
    * remove | erase package1 [package2] [...]
    * list [...]
    * info [...]
    * provides | whatprovides feature1 [feature2] [...]
    * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
    * makecache
    * groupinstall group1 [group2] [...]
    * groupupdate group1 [group2] [...]
    * grouplist [hidden] [groupwildcard] [...]
    * groupremove group1 [group2] [...]
    * groupinfo group1 [...]
    * search string1 [string2] [...]
    * shell [filename]
    * resolvedep dep1 [dep2] [...]
    * localinstall rpmfile1 [rpmfile2] [...]
       (maintained for legacy reasons only - use install)
    * localupdate rpmfile1 [rpmfile2] [...]
       (maintained for legacy reasons only - use update)
    * reinstall package1 [package2] [...]
    * downgrade package1 [package2] [...]
    * deplist package1 [package2] [...]
    * repolist [all|enabled|disabled]
    * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
    * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
    * check
    * help [command]

显示仓库列表:
    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 [...]

如何使用光盘当作本地yum仓库:

    (1) 挂载光盘至某目录,例如/media/cdrom
        # mount -r -t iso9660 /dev/cdrom /media/cdrom
    (2) 创建配置文件
    [CentOS7]
    name=
    baseurl=
    gpgcheck=    要gpgcheck,就必须要导入key
    enabled=

另外配置文件可以用变量替代,变量会自动替换,使一个变量可以多场景使用

 yum的repo配置文件中可用的变量:
    $releasever: 当前OS的发行版的主版本号;
    $arch: 平台; i386等
    $basearch:基础平台;
    $YUM0-$YUM9  自定义

    http://mirrors.magedu.com/centos/$releasever/$basearch/os

如何创建yum仓库

程序包管理之yum:yum源\库配置以及源码编译安装

yum的命令行选项:
    --nogpgcheck:禁止进行gpg check;
    -y: 自动回答为“yes”;
    -q:静默模式;
    --disablerepo=repoidglob:临时禁用此处指定的repo;
    --enablerepo=repoidglob:临时启用此处指定的repo;
    --noplugins:禁用所有插件;

yum的repo配置文件中可用的变量:
    $releasever: 当前OS的发行版的主版本号;
    $arch: 平台;
    $basearch:基础平台;
    $YUM0-$YUM9



创建yum仓库:
    createrepo [options] <directory>

程序包编译安装:

程序包编译安装:

别人编好的rpm包不适用所有版本,所以要自己编译,如下面的src格式的包,都需要先用rpmbuild命令封装。 testapp-VERSION-release.src.rpm –> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装;

源代码的组织格式是多文件的,多文件中的代码之间,很可能存在跨文件依赖关系,要解决这种依赖关系,则使用专门的项目管理工具。如下:make,就为项目组织打包管理工具。

源代码 --> 预处理 --> 编译(gcc) (编译器)--> 汇编(汇编器) --> 链接(链接器)--> 执行

这个过程很复杂,所以要是有了项目管理器,就可以自动完成上述过程。

make真的那么强大嘛,是因为make与每个源代码都有配置文件,即为makefile。makefile也不是写死的,makefile由Makefile.in生成,Makefile.in根据用户需求生成。configure脚本可以帮助用户配置这些编译的配置。

那么问题来了,./configure文件、Makefile.in文件以及makefile文件从哪里来?有的自带,有的要生成。用开发工具生成 。 autoconf:生成configure脚本 automake:生成Makefile.in文件

建议:安装前查看INSTALL,README

开源程序源代码获取

官方自建站点:
            apache.org (ASF)
            mariadb.org
            ...
        代码托管:
            SourceForge
            Github.com
            code.google.com

编译安装的过程如下

1.运行configure脚本

(1)让用户通过选项传递参数,指定启用特性、安装路径等,执行时会参考用户的指定以及Makefile.in生成makefile。 (2)检查各指定特性所依赖的外部环境,没有依赖关系,configure会报错。

        configure脚本的应用:

        –prefix:指定默认安装路径

        –sysconfdir:指定配置文件安装路径

        –with-CAPABLILITY:依赖的程序包

        –without-CAPABILITY:不依赖的程序包

        –enable-FEATURE:启用某个特性

        –disable:禁用某个特性

2.运行make命令,完成项目构建

根据makefile文件,构建应用程序。

3.运行makeinstall命令,完成安装

示例演示,以apache进行演示

安装后的配置:

    (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文件
            添加一个MANPATH

实例

  1. yum grouplist。查看是否安装好所需要的包组。CentOS 6: "Development Tools", "Server Platform Development",Centos7就只有开发工具 

这里写图片描述

2.gcc –version。检查是否有gcc。 这里写图片描述

3.下载http相关软件包,由于笔者安装到后面发现少安装了3个文件,顾在此一并下载安装。 具体情况如下:

wget http://mirrors.aliyun.com/apache/httpd/httpd-2.2.31.tar.gz
wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz  
wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz  
wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip

5.将原有安装卸载

yum remove apr-util-devel apr apr-util-mysql apr-docs apr-devel apr-util apr-util-docs

6.具体步骤如下:

  a:解决apr not found问题>>>>>>
[root@xt test]# tar -zxf apr-1.4.5.tar.gz  
[root@xt test]# cd  apr-1.4.5  
[root@xt apr-1.4.5]# ./configure --prefix=/usr/local/apr  
[root@xt apr-1.4.5]# make && make install  

  b:解决APR-util not found问题>>>>
[root@xt test]# tar -zxf apr-util-1.3.12.tar.gz  
[root@xt test]# cd apr-util-1.3.12  
[root@xt apr-util-1.3.12]# ./configure --prefix=/usr/local/apr-util --with- apr=/usr/local/apr/bin/apr-1-config  
因为安装apr-util的时候需要编译环境apr存在,故--with-apr指定apr安装路径。
[root@xt apr-util-1.3.12]# make && make install 

  c:解决pcre问题>>>>>>>>>
[root@xt test]#unzip -o pcre-8.10.zip  
[root@xt test]#cd pcre-8.10  
[root@xt pcre-8.10]#./configure --prefix=/usr/local/pcre  
[root@xt pcre-8.10]#make && make install

可以看到:现在我们都装好了包,并解压,并编译安装完成。 这里写图片描述7.cd 到 httpd-2.2.31,ls,less INSTALL。 这里写图片描述8../configure –prefix=/usr/local/apache2 –sysconfdir=/etc/httpd2 –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util/ 

这里写图片描述

9.make&&make install

10.cd /usr/local/apache2/ 上,ls bin这里写图片描述11.bin/apachectl start

12.netstat -tan 这里写图片描述13.看到端口80表示成功了,然后是安装后的配置。 安装后的配置:

        (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文件
                添加一个MANPATH

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

(0)
N24_yeziN24_yezi
上一篇 2016-11-22
下一篇 2016-11-22

相关推荐

  • 马哥教育网络班22期+第六周课程练习

    vim编辑器的使用总结    vim编辑器是模式化的全屏文本编辑器,有三种基本模式:        编辑模式        输入模式   &…

    Linux干货 2016-10-24
  • 常见RAID磁盘阵列组合简介

    常见RAID磁盘阵列组合简介    RAID,是Redundant Arrays of Inexpensive Disks的简写,磁盘阵列。现今的计算机世界,最值钱的是什么?软件、硬件?都不对,应该是承托在其之上的数据。对于我们来说,数据是无价的,硬件损坏了,可以重新购置。软件损坏了,也可以重新安装,但数据一旦丢失,就有可能再也找不回来了…

    Linux干货 2016-06-01
  • MySQL应用管理

    这篇文章主要讲述基本的SQL语句,以供新手参考使用,不过最好的办法还是查阅官方文档和help命令。 进入正题 什么是SQL?        SQL结构化查询语言,是关系型数据库查询和管理语言,是一种数据库查询和程序设计语言,用于存取数据以及查询,更新和管理关系型数据库系统。 SQL的分类 &nbsp…

    Linux干货 2015-09-23
  • 计算机及Linux基础介绍

    Linux及计算机基础介绍 计算机的组成及其功能 What:计算机的组成是什么? 计算机的主要部件: CPU:可分为运算器、控制器、寄存器、缓存等 存储器:比如内存。执行程序时,会将程序及相关数据加载进内存,供CPU读取 输入设备:比如:键盘。用于下达指令及输入数据。 输出设备:比如显示器。用户显示和输出指令执行的结果等 冯诺依曼体系中提出的五大部件为:运算…

    Linux干货 2016-09-19
  • [转]百万级访问网站前期的技术准备

       [转]百万级访问网站前期的技术准备 开了自己域名的博客,第一篇就得来个重磅一点的才对得起这4美金的域名。作为一个技术从业者十年,逛了十年发现有些知识东一榔头西一棒槌的得满世界  看个遍才整理出个头绪,那咱就系统点的从头一步一步的说,一个从日几千访问的小小网站,到日访问一两百万的小网站,怎么才能让它平滑的度过这个阶段,别在 …

    Linux干货 2016-10-29
  • Linux基础之软件包管理

    一.概述 在redhat系列的发行版中,采用rpm软件包管理器,rpm原名是Red Hat Package Manager,后来当其他发行版也采用这种软件包管理机制以后,重新命名,改为RPM Package Manager,它所能提供的功能是将编译好的应用程序文件打包成一个或几个程序文件,从而使得用户能够方便的安装,升级,卸载软件,而yum则是rpm包管理器…

    Linux干货 2016-11-16

评论列表(1条)

  • luoweiro
    luoweiro 2016-12-01 00:04

    注解的方式能加深对知识的掌握程度,而对自己来说就是知其然知其所以然了。