zoukankan      html  css  js  c++  java
  • yum管理及源码安装

    一、配置YUM库及更新操作


     yum概述

        基于RPM包构建的软件更新机制,自动解决软件依赖关系

    YUM仓库格式



       

    本地:file://
    网络:ftp://或http://

     

    yum源里面包含的内容

    1、rpm包
    2、元数据文件
    mount /dev/cdrom /media
    cd /media/Server
    ls re*
    在每个yum仓库中,都有repodata目录(存放的是仓库数据)
    #baseurl代表yum在互联网上所查找的链接地址。这里需要解释一下
    #$basearch代表了系统的构架格式如i386和repodata存放repomd.xml文件的文件夹位置。

    Linux yum配置文件详解

    yum的配置一般有两种方式:   一种是直接配置/etc目录下的yum.conf文件, 另外一种是在/etc/yum.repos.d目录下增加.repo文件。

    yum的配置文件yum.conf详解  

    $ cat /etc/yum.conf
    [main]
    
    cachedir=/var/cache/yum         #yum下载的RPM包的缓存目录
    keepcache=0                        #缓存是否保存,1保存,0不保存。
    debuglevel=2                       #调试级别(0-10),默认为2(具体调试级别的应用,我也不了解)。
    logfile=/var/log/yum.log         #yum的日志文件所在的位置
    exactarch=1             #在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。
    obsoletes=1             #这是一个update的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。
    gpgcheck=1             #是否检查GPG(GNU Private Guard),一种密钥方式签名。
    plugins=1             #是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。
    installonly_limit=3         #允许保留多少个内核包。
    exclude=selinux*         #屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。

    配置YUM客户端


    1、yum的配置文件

    -基本配置:/etc/yum.conf
    -仓库配置:/etc/yum.repos.d/*.repo
    -日志文件:/var/log/yum.log





    2、yum缓存目录
    -

    存放下载软件包、仓库记录等数据
    -/var/cache/yum/$basearch/$releasever

    yum缓存:

    /var/cache/yum:存放服务器的软件信息
    
    当执行yum install 软件包 时,首先查看/var/lib/rpm数据库下有没有下载的软件包,如果没有则从/etc/yum.repos.d/下的.repo配置文件把软件信息下载到本地,
    并缓存在
    /var/cache/yum,然后在/var/cache/yum里面找到某一软件的下载地址,然后把软件安装上。 1.先备份 2.wget http://mirrors.163.com/.help/CentOS6-Base-163.repo 3.yum makecache #生成缓存 4.yum install 软件包 -y cat /etc/yum.conf 复制代码 [main] cachedir=/var/cache/yum #yum下载的RPM包的缓存目录 keepcache=0      #缓存是否保存,1保存,0不保存。 debuglevel=2     #调试级别(0-10),默认为2(具体调试级别的应用,我也不了解)。 logfile=/var/log/yum.log #yum的日志文件所在的位置 exactarch=1     #在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。 obsoletes=1     #这是一个update的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。 gpgcheck=1     #是否检查GPG(GNU Private Guard),一种密钥方式签名。 plugins=1     #是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。 installonly_limit=3 #允许保留多少个内核包。 exclude=selinux*   #屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。 # This is the default, if you make this bigger yum won't see if the metadata # is newer on the remote and so you'll "gain" the bandwidth of not having to # download the new metadata and "pay" for it by yum not having correct # information. # It is esp. important, to have correct metadata, for distributions like # Fedora which don't keep old packages around. If you don't like this checking # interupting your command line usage, it's much better to have something # manually check the metadata once an hour (yum-updatesd will do this). metadata_expire=90m      #设定保存时长 # PUT YOUR REPOS HERE or IN separate files named file.repo # in /etc/yum.repos.d keepcache=0修改成keepcacche=1 保存,退出。 以后安装、更新的包,都会保存在/var/cache/yum/DT60SP3_Repository/packages目录下面




    3、.repo基本配置项

    [源名称]:自定义名称,具有惟一性
    name:本软件源的描述字串
    baseurl:指定YUM服务端的URL地址
    enabled:是否启用此频道
    gpgcheck:是否验证待安装的RPM包
    gpgkey:用于RPM验证的密钥文件


    [fedora]       #方括号里面的是软件源的名称,将被yum取得并识别

    name=Fedora $releasever - $basearch   #这里也定义了软件 仓库的名称,通常是为了方便阅读配置文件,一般没什么作用,$releasever变量定义了发行版本,

    通常是8,9,10等数字,$basearch变 量定义了系统的架构,可以是i386、x86_64、ppc等值,这两个变量根据当前系统的版本架构不同而有不同的取值,
    这可以方便yum升级的时候选择 适合当前系统的软件包,以下同……

    failovermethod=priority   #failovermethod 有两个值可以选择,priority是默认值,表示从列出的baseurl中顺序选择镜像服务器地址,
    roundrobin表示在列出的服务器中随机选择

    exclude=compiz* *compiz* fusion-icon* #exclude这个选项是后来我自己加上去的,用来禁止这个软件仓库中的某些软件包的安装和更新,
    可以使用通配符,并以空格分隔,可以视情况需要自行添加

    #baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
    #上面的一行baseurl第一个字符是'#'表示该行已经被注释,将不会被读取,这一行的意思是指定一个baseurl(源的镜像服务器地址)

    #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
    #上面的这一行是指定一个镜像服务器的地址列表,通常是开启的,本例中加了注释符号禁用了,我们可以试试,
    将$releasever和$basearch替换成自己对应的版本和架构,
    例如10和i386,在<a href="http://www.it165.net/edu/ewl/" target="_blank" class="keylink">浏览器</a>中打开,
    我们就能看到一长串镜可用的镜像服务器地址列表。

    选择自己访问速度较快的镜像服务器地址复制并粘贴到repo文件中,我们就能获得较快的更新速度了,格式如下baseurl所示:
    baseurl=
    ftp://ftp.sfc.wide.ad.jp/pub/<a href="http://www.it165.net/os/oslin/" target="_blank" class="keylink">Linux</a>/Fedora/releases/10/Everything/i386/os
    http://ftp.chg.ru/pub/<a href="http://www.it165.net/os/oslin/" target="_blank" class="keylink">Linux</a>/fedora/linux/releases/10/Everything/i386/os
    http://ftp.yz.yamagata-u.ac.jp/pub/linux/fedora/linux/releases/10/Everything/i386/os
    http://mirror.nus.edu.sg/fedora/releases/10/Everything/i386/os
    http://mirror.yandex.ru/fedora/linux/releases/10/Everything/i386/os
    http://ftp.twaren.net/Linux/Fedora/linux/releases/10/Everything/i386/os
    http://ftp.itu.edu.tr/Mirror/Fedora/linux/releases/10/Everything/i386/os
     

    enabled=1 #这个选项表示这个repo中定义的源是启用的,0为禁用21.
    gpgcheck=1 #这个选项表示这个repo中下载的rpm将进行gpg的校验,已确定rpm包的来源是有效和安全的
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch #定义用于校验的gpg密钥,就是数位签章的公钥档所在位置!23.
     







    4、创建server.repo配置,添加本地仓库

    vim /etc/yum.repos.d/server.repo
    baseurl=file:///media/RHEL_5.9%20x86_64%20DVD/Server    //空格用%20代替



    yum仓库中的元数据文件:

    1、primary.xml.gz
    a、所有RPM包的列表;
    b、依赖关系;
    c、每个RPM安装生成的文件列表;
    
    2、filelists.xml.gz
    a、当前仓库中所有RPM包的所有文件列表;
    3、other.xml.gz
    a、额外信息,RPM包的修改日志;
    
    4、repomd.xml
    a、记录的是上面三个文件的时间戳和校验和;
    
    5、comps*.xml: RPM包分组信息

    注意:

    1、红帽6把yum仓库的所有rpm放到一个目录下,但是把repodata放到另外一个目录下,所以repodata并不在挂载的目录下;
    2、使用yum仓库时,一定要指向repodata所在的目录
    3、红帽5的rpm包和repodata都放到同一个目录;而红帽6的rpm包和repodata不在同一个目录下

    yum客户端操作



    格式:yum [-y] 指令 [软件名]
           list    查看软件包列表及安装状态
           search    查看软件包名称或者描述重要关键字
           info    查看软件包的说明信息,类似于rpm -qi
           install    安装指定软件包,类似于rpm -i
           update    升级指定软件包,类似于rpm -F
           remove    卸载指定软件包,类似于rpm -e
           provides    查看文件由那个包产生,类似于rpm -qf
           --nogpgcheck    不验证gpg签名
        yum clean all
        yum -y localinstall    本地安装              [-y=yes]

    本地无gpg公钥签名的安装
    yum -y localinstall  [安装包]  --nogpgcheck 

    list: 列表
        支持glob
        all
        available:可用的,仓库中有但尚未安装的
        installed: 已经安装的
        updates: 可用的升级

    repolist: 显示repo列表及其简要信息
        all
        enabled: 默认
        disabled

    软件组基本操作   

    yum
          grouplist        查看软件组列表
          groupinfo        查看软件组说明信息
          groupinstall    安装指定软件组
          groupupdate    升级软件组
          groupremove    卸载软件组

    清空本地yum缓存


    1、适用于yum缓存存在错误时

    -再次查询或更新时,会自动重建缓存
    yum clean all   //清空所有缓存
    yum list          //再次查询时更新
    clean: 清理缓存
    [ packages | headers | metadata | dbcache | all ]
       

    搭建自定义yum源



    1.先安装createrepo软件包
    yum -y install createrepo
    2.将搜集的*.rpm包文件集中到自定义的文件夹,例如:
    mkdir /mydata
    cp *.rpm /mydata
    3.使用createrepo生成仓库定义数据
    createrepo /mydata
    4.配置/etc/yum.repos.d目录下的repo文件,注意把gpgcheck改为0,因为不是红帽认证的。

    例子:

    YUM高级配置
    1. 将rhel6.5 iso里面的软件全部拷贝到/data/rhel6
    2. mkdir /data/rhel6/nsd1409,把相应的rpm包拷贝进去
    3. 安装createrepo软件包
    4. createrepo /data/rhel6/nsd1409
    5. 修改yum客户端配置文件
    [root@localhost ~]# cat /etc/yum.repos.d/rhel6.5.repo 
    [rhel-6.5]
    name=Red Hat Enterprise Linux Server 
    baseurl=file:///data/rhel6/
    enabled=1
    gpgcheck=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
    [rhel-nsd1409]
    name=Red Hat Enterprise Linux Nsd1409
    baseurl=file:///data/rhel6/nsd1409
    enabled=1
    gpgcheck=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
    6. yum clean all
    7. yum list linuxqq

    YUM 源优先级插件


    Linux 发行版比较多,同时还有很多个人或组织维护了某些特定用途的安装/升级源。Yum Priorities 插件可以用来强制保护源。它通过给各个源设定不同的优先级,使得系统管理员可以将某些源(比如 Linux 发行版的官方源)设定为最高优先级,从而保证系统的稳定性(同时也可能无法更新到其它源上提供的软件最新版本)。


    在控制台运行 Yum Priorities 安装指令

     yum install yum-priorities


    配置使用 Yum Priorities

    1.使用熟悉的文本编辑器(如 vim)打开 Yum Priorities 配置文件 /etc/yum/pluginconf.d/priorities.conf

    vim /etc/yum/pluginconf.d/priorities.conf


    2.确保配置文件中包含下面的行

    [main]
    enabled=1

    保存并关闭该文件

    3.打开 CentOS base 源配置文件 /etc/yum.repos.d/CentOS-Base.repo
    将下面的文本分别添加到 Base, Updates, Addons, 和 Extras 这几个源记录的后面*

    priority=1


    将下面的文本添加到 CentOSPlus 源记录的后面*

    priority=2

    注意:

    * 源记录(repository entry)是由 [ 和 ] 括起来的源名称。例如,Base 源记录就标记为 [base] 。
    ** 优先级由 1 ~ 9999 个数表示,1 的优先级最高。优先级小的源即使有某软件的较新版本,如果优先级高的源中没有,
    在启用该插件的情况下,系统也无法安装/升级到该较新版本。图形界面的 YUM 工具一般默认就已经包含了优先级插件。 *** 要禁用 YUM 优先级功能,只需要在(1.A.) /etc/yum/pluginconf.d/priorities.conf 中将 enable=1 改为 enable=0 即可。不建议!




    本地yum源优先级比官网base源高,因此在yum安装包时,首先会在本地查找,没有找到才会去官网查找

    备注:
    1、要使priority参数有效,必须安装yum-plugin-priorities插件
    2、N为整型数.默认优先级为99.数值越小优先级越高;


    二、源码包的编译安装


    1. 准备开发环境gcc、g++、make
    2. 源码安装基本过程

    tar         一般解包到/usr/src
    ./configure    配置,使用--prefix=/usr/local/软件名  指定安装位置
    make        编译
    make install    安装

    三 源码包编译安装

    深入研究编译

    语言进行编译,一般进行如下步骤:

    1) 先检查程序代码中的语法是否正确
    
    2) 将程序代码转换为机器码
    
    3) 程序代码中如果使用其它的链接库的机器码,则链接之
    
    4) 产生操作系统相关信息
    
    5) 存储为可执行文件

    链接

     

    是把存储在链接库中的机器码存储到程序中,这样开发人员就不需要重复编写相同的程序代码,加快程序的开发速度。

    链接分为:静态链接和动态链接

    静态链接:

     

    静态链接是包含给用户调用函数的集合,通常这些函数被其它程序调用的方法是,在程序编译时,把函数的执行代码写入到应用程序中。

     使用ar工具生成,一般以.a作为库的文件名。

     

     特点:

    产生执行文件的体积较大
    
    执行时需要较多内存空间
    
    可独立使用

    动态链接

    编译程序时不会把链接库的机器码复制到程序中,而是存储执行文件执行时需要的哪个链接库、链接库版本等信息;当程序执行时,可根据文件中记载链接库信息,加载所需的链接库的机器码。

    .so”作为库的文件名

     

    特点:

    体积较小
    
    内存空间少
    
    无法独立使用

     

    查询执行文件的链接方法

     

    [root@noc hello]# file /bin/ls
    
    /bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

    看到:

    dynamically linked:动态链接
    
    static linked:静态链接

    查询连接到的链接库

     

    [root@noc hello]# ldd /usr/sbin/setup
    
            linux-gate.so.1 =>  (0x00323000)
    
            libnewt.so.0.52 => /usr/lib/libnewt.so.0.52 (0x001a4000)
    
            libc.so.6 => /lib/libc.so.6 (0x00686000)
    
            libslang.so.2 => /usr/lib/libslang.so.2 (0x001bf000)
    
            libm.so.6 => /lib/libm.so.6 (0x003a8000)
    
            /lib/ld-linux.so.2 (0x00178000)
    
            libdl.so.2 => /lib/libdl.so.2 (0x00d37000)

    准备源代码编译环境


    1、开源软件多使用C/C++语言开发

    需要gcc、make等编译工具
    #gcc --version
    #g++ --version
    #make --version
    通过yum安装“开发工具”、“开发库”包组,可解决编译环境




    前提:准备开发环境(编译环境)

    编译安装的三步骤:
    前提:准备开发环境(编译环境)
    安装"Development Tools""Development Libraries"
    RHEL5:"Development Tools""Development Libraries"
    RHEL6::"Development Tools""Compatibility Libraries "
    # tar
    # cd
    # ./configure  
        --help :获取脚本的使用格式
        --prefix=/path/to/somewhere
        --sysconfdir=/PATH/TO/CONFFILE_PATH
        configure的功能:1、让用户选定编译特性;2、检查编译环境;
    # make
    # make install
    
    # tar xf tengine-1.4.2.tar.gz
    # cd tegnine-1.4.2
    ./configure -- help | less
    # ./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf
    # make
    # make install
    # /usr/local/tengine/sbin/nginx
    加入出现要依赖PCRE库的解决方法:
    a、在configure的过程中加上--without-http-rewrite_module
    b、yum install pcre-devel
    
    安装软件包的时候,如果把它安装在非默认路径,要注意:
    1、修改PATH环境变量,以能够识别此程序的二进制文件路径;
        修改/etc/profile文件
        在/etc/profile.d/目录建立一个以.sh为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere
    2、默认情况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径:
        在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;
        # ldconfig 通知系统重新搜寻库文件
            -v: 显示重新搜寻库的过程
    
    要使用一个程序调用其它库时,都要使用include来包含这些
    
    3、头文件:输出给系统
        默认:/usr/include
        增添头文件搜寻路径,使用链接进行:
            /usr/local/tengine/include/   /usr/include/
            两种方式:
            ln -s /usr/local/tengine/include/* /usr/include/ 或
            ln -s /usr/local/tengine/include  /usr/include/tengine
    4、man文件路径:安装在--prefix指定的目录下的man目录;/usr/share/man    
            1、man -M /PATH/TO/MAN_DIR COMMAND
            2、在/etc/man.config中添加一条MANPATH
        

    编译安装的基本过程




    make: 项目管理工具,能够把C程序的多个不同文件做成一个项目,并且把这个项目的编译过程通过一个配置文件来启动,这个配置文件叫makefile;
        makefile: 定义了make(gcc,g++)按何种次序去编译这些源程序文件中的源程序
    
    automake, --> makefile.in(半成品) --> makefile
    autoconf, --> configure
    
    makefile的生成
    automake:让程序的作者对自己的源程序做一个简单的定义,然后生成一个makefile的半成品(makefile.in),makefile无法跟用户交互;此时makefile.in还可以接受另外一个工具所生产的脚本(autoconf)做配置
    
    autoconf:给项目生成一个脚本(configure)
    configure:配置脚本如何定义






    编译安装的基本过程

    下载源码包后的安装步骤:
    1、tar解包,释放源代码至指定目录
    2、./configure配置,指定安装目录/功能模块等选项
    3、make编译,生成可执行的二进制程序文件
    4、make install安装,将编译好的文件复制到安装目录


    解包

    -使用tar解包,建议释放到/usr/src目录
    -解包后位置:/usr/src软件名-版本号/

    配置


    -

    使用源码目录下的configure脚本
    执行“./configure --help”可以查看帮助
     ./configure --prefix=/usr/local/apache2【 --prefix安装指定路径命令】    【查看软件包里多一个Makefile文件就说明执行成功】


    编译

    执行make命令,如果编译出错,需要执行make clean再执行make

    安装

    执行 make install命令

    参考:http://cnzhx.net/blog/yum-priorities/

    http://www.it165.net/os/html/201409/9273.html




       

  • 相关阅读:
    英语cabardine麝香cabardine单词
    英语dialogite红纹石dialogite菱锰矿
    英语chiltonite葡萄石chiltonite单词
    英语chrysopal金绿宝石chrysopal单词
    Android系统默认对话框添加图片
    入门rocketmq从浅到深
    通用mapper认识和用法
    java开发注解大全
    solr的认识、linux下安装、java下使用(含下载资源)
    RSA签名和验签Util
  • 原文地址:https://www.cnblogs.com/zhongguiyao/p/9029922.html
Copyright © 2011-2022 走看看