yum详解及源码包的编译安装

yum的功能:

    在我们使用rpm包安装程序时,各个程序包之间可能存在非常严重的依赖关系,这就导致我们在安装一个包的同时还需要安装其他存在依赖关系的包,因此我们可以使用rpm包的前端管理工具yum,可通过yum所支持的文件共享机制来解决各个rpm包之间的依赖关系。

yum仓库的配置文件:

          /etc/yum.conf:为所有仓库提供配置参数。

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0  ###(是否保存缓存中的已经被下载安装的rpm包) 会删除已缓存的rpm包
debuglevel=2    
logfile=/var/log/yum.log    ###日志文件存放路径
exactarch=1    ###到仓库中下载rpm包的时候要与当前主机的版本完全匹配才能安装
obsoletes=1
gpgcheck=1    ###是否检查rpm包的来源合法性及数据包的完整
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

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

[repo_ID]                   ###指定ID,不能重复,不能省略
name=String                  ###指定仓库名称
baseurl=仓库的访问路径             ###指定仓库的访问路径,不能省略(repodate所在目录的父目录即为仓库所在路径)
                               查看是否配置成功可以通过yum repolist查看
enabled={1|0}                 ###是否启用此仓库 默认启用,省略后默认值为0
gpgcheck={1|0}                  ###是否检查完整性和来源合法性,不能省略
gpgkey=公钥文件                ###可以在本地,也可是服务器端路径
cost=定义此仓库开销              ###默认为1000 开销越小 优先级越高

            yum的repo配置文件中可用的变量:
                        $releasever: 当前OS的发行版的主版本号
                        $arch: 平台, i386,i486,i586,x86_64等
                        $basearch:基础平台; i386
                        $YUM0-$YUM9:自定义变量
                实例:
                        http://server/centos/$releasever/$basearch/
                        http://server/centos/7/x86_64
                        http://server/centos/6/i384

yum仓库

由于在某些特定的情况下,比如某些公司不能通过服务器访问外网等,需要我们自行配置和创建yum仓库,那么就可以采取如下四种办法解决:

        方法1、使用本地挂载光盘的方法来创建yum仓库

                        a、首先要查看我们的光盘是否已经挂载,可通过df命令查看,如果没有挂载可通过mount命令进行挂载,如果时cenots6可以通过如下方式挂载。

root@cenots6.8  ~ # cd /misc       ####只要访问/misc/cd 目录 ,光盘就会自动挂载到/misc/cd下
root@cenots6.8  /misc # ls -a
.  ..
root@cenots6.8  /misc # cd cd
root@cenots6.8  /misc/cd # df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda3      121455724 4401412 110878008   4% /
tmpfs             502068      76    501992   1% /dev/shm
/dev/sda1         194241   34100    149901  19% /boot
/dev/sr0         3824484 3824484         0 100% /media/CentOS_6.8_Final
/dev/sr0         3824484 3824484         0 100% /misc/cd    #######此处可以看到光盘已经挂载到了/misc/cd上

 
                      b、挂载完光盘后,我们cd/misc/cd目录下后,就可以看到一个repodata目录,该目录存在的位置就是我们要指向的yum仓库的路径,RPM-GPG-KEY-CentOS-7就是公钥(/etc/pki/目录下也可以获取公钥)。

root@cenots6.8  /misc/cd # ls
CentOS_BuildTag  EULA  images    Packages                  repodata              RPM-GPG-KEY-CentOS-Debug-6     RPM-GPG-KEY-CentOS-Testing-6
EFI              GPL   isolinux  RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-6  RPM-GPG-KEY-CentOS-Security-6  TRANS.TBL

                        c、接下来我们就可以配置yum仓库,vim /etc/yum.repos.d/CentOS-Local.repo注意这里我们所创建的文件必须要以repo结尾,这样才能够被识别生效,配置参数如下

[cdrom]
name= cdrom
baseurl=file:///misc/cd
enabled=1
gpgcheck=0

                        d、执行yum repolist命令,查看是否正常工作。

root@cenots6.8  /etc/yum.repos.d # yum repolist
已加载插件:fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
cdrom                                                                                                                                 | 4.0 kB     00:00 ... 
仓库标识             仓库名称             状态
cdrom               cdrom              6,696
repolist: 6,696

                        注意:baseurl可以指多条路径,但是要求每条路径指向的内容是一样的,增加冗余能力

        方法2、通过createrepo自行创建yum仓库

                        a、首先创建一个目录用于存储rpm包,mkdir /testdir/testrepo,并cd到该目录下 

                        b、访问指定的路径,查找自己的所要下载rpm包到/testdir/testrepo路径下,然后createrepo /testdir/testrepo创建yum仓库

root@cenots6.8  /testdir/testrepo # ls
tree-1.5.3-3.el6.x86_64.rpm
root@cenots6.8  /testdir/testrepo # createrepo ./
Spawning worker 0 with 1 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
root@cenots6.8  /testdir/testrepo # ls   ###创建完成之后我们会发现目录下多了一个repodata目录 此时手动创建yum仓库成功
repodata  tree-1.5.3-3.el6.x86_64.rpm

                        d、配置/etc/yum.repos.d/CentOS-Local.repo文件

[tree]
name=tree
baseurl=file:///testdir/testrepo
gpgcheck=0
enabled=1

                        e、yum repolist查看生效有否。

root@cenots6.8  /etc/yum.repos.d # yum repolist
已加载插件:fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
cdrom                                                                                                                                 | 4.0 kB     00:00 ... 
tree            仓库名称         状态
cdrom            cdrom           6,696
tree            tree            1
repolist: 6,697

        方法3、基于Ftp的方式配置yum仓库

                        a、安装vsftpd,输入yum install vsftpd,在/var/ftp/pub目录下创建rpm目录,并且把/testdir/testrepo中的全部文件(/*)拷贝到rpm目录中,然后执行service vsftpd start开启vsftpd服务。

                        b、配置/etc/yum.repos.d/local.repo文件

[Ftprepo]
name=Ftp-repo
baseurl=ftp://192.168.1.103/pub/rpm
gpgcheck=0
enabled=1

                        c、yum repolist查看生效与否。

        方法4、基于htp的方式配置yum仓库

                        a、安装httpd,输入yum install httpd,然后输入service http start启动,把/var/ftp/pub/目录下的所有文件复制到/var/www/htm/目录下。

                        b、在浏览器中热输入http://192.168.1.103/rpm

截图20160824215329.png

                        c、 编辑/etc/yum.repos.d/local.repo文件配置仓库路径。

                        d、yum repolist查看生效与否。

                注意:/etc/yum.repos.d/目录下,执行mv CentOS-Base.repo CentOS-Base.bak,这样CentOS-Bse.repo就停止工作也做备份,以后重新使用把bak的后缀名改成repo即可,禁用启用yum仓库也可以使用yum-config-manager –disable “仓库名" 禁用仓库, yum-config-manager –enable “仓库名” 启用仓库。

程序包的编译安装

       程序包的安装编译:

                1、拿到源代码,并解压:

                        # tar xf package-version.tar.{gz|bz2|xz}

                        注意:展开后的目录名通常为package-version

                2、切换至源码目录中

                        # cd package-version

                3、执行configure脚本

                        # ./configure

                4、编译

                        # make

                5、安装

                        # make install

                    建议:安装前先查看INSTALL,README

                  configure脚本功能:检查编译环境是否满足编译需求,并定义当前程序编译时启用哪个特性或功能,以及安装路径的定义等等;

                  GNU/make:项目管理工具  通过make命令来调用GCC编译工具来实现编译    

        configure脚本的通用功能:

            1、指定安装路径:

                    –prefix=/usr/local/packagename 指定安装路径

                    –sysconfdir=/etc/packagename 指定配置文件的存放路径

            2、指定启用/禁用的特性:

                    –enable-feature: 例如–enable-fpm

                    –disable-feature: 例如 –disable-socket

            3、指定所依赖功能、程序或文件

                    –with-function:启用某功能

                    –without-function:禁用某功能  

                不同的程序,其configure脚本功能不同,要获取帮助:./configure –help

        安装后的配置:

                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

                                            vim /etc/mandb.conf
                                            MANDATORY_MANPATH /usr/local/NAME/man

        应用举例:源码安装apache

        1、下载httpd到指定目录中。

root@cenots6.8  ~ # lftp http://mirrors.sohu.com/apache/
cd 成功, 当前目录=/apache                                  
lftp mirrors.sohu.com:/apache> ls
lftp mirrors.sohu.com:/apache> get httpd-2.2.31.tar.bz2 
5610489 bytes transferred in 51 seconds (106.8K/s) 
lftp mirrors.sohu.com:/apache> bye
root@cenots6.8  ~ # ls
aa  cc   dir1  httpd-2.2.31.tar.bz2  install.log.syslog  模板  图片  下载  桌面
bb  dir  ee    install.log           公共的              视频  文档  音乐

         2、解压程序包,并切换到nginx-1.9.9目录中

root@cenots6.8  ~ # tar xf httpd-2.2.31.tar.bz2 
root@cenots6.8  ~ # ls
aa  cc   dir1  httpd-2.2.31          install.log         公共的  视频  文档  音乐
bb  dir  ee    httpd-2.2.31.tar.bz2  install.log.syslog  模板    图片  下载  桌面
root@cenots6.8  ~ # cd httpd-2.2.31
root@cenots6.8  ~/httpd-2.2.31 # ls
ABOUT_APACHE  CHANGES        httpd.dsp       libhttpd.dep  NOTICE            server
acinclude.m4  config.layout  httpd.mak       libhttpd.dsp  NWGNUmakefile     srclib
Apache.dsw    configure      httpd.spec      libhttpd.mak  os                support
build         configure.in   include         LICENSE       README            test
BuildAll.dsp  docs           INSTALL         Makefile.in   README.platforms  VERSIONING
BuildBin.dsp  emacs-style    InstallBin.dsp  Makefile.win  README-win32.txt
buildconf     httpd.dep      LAYOUT          modules       ROADMAP

        3、配置configure命令指定安装路径和配置文件的存放路径

./configure --prefix=/usr/local/http2 --sysconfdir=/etc/http2/

注意:如果在执行此命令报错,error requires the *** library.可通过yum search ***,然后执行yum install ***—devel.x86_64 (支包一般都在***—devel包中)。

         4、make
         5、make install
         6、cd /usr/local/http2/bin   执行./apachectl start
         7、netstat -ant
         8、iptables -F
         9、在浏览器处输入ip地址查看状态即可。

1.png

yum的常用命令及选项

    yum的常用命令:

            显示仓库列表:yum repolist

            显示程序包:yumlist

            安装程序包:yum install package

            升级程序包:yum update package

            降级程序包:yum downgrade package

            卸载程序包:yum remove | erase  package

            检查可用升级:yum check-update

            查看程序包信息:yum info

            查看指定的特定是由哪个程序包所提供的:yum provides | whatprovides feature

            清理本地缓存:yum clean [ packages | metadata | expire-cache |rpmdb | plugins | all ]

            构建缓存:yum makecache

            搜索:yum search string1 [string2] […]

            查看指定程序包所依赖的能力: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 redo 6   重新执行编号为6的操作

                            yum history undo 6   撤销之前编号6 的操作

            查看yum的日志:/var/log/yum.log

            创建yum仓库:createrepo /path/to/dir

            包组管理的相关命令:

                            yum groupinstall group1 [group2] […]    
                            yum grouplist [hidden] [groupwildcard] […]
                            yum groupremove group1 [group2] […]
                            yum groupinfo group1 […]

            通过包组提供开发组件:

                            centOS5:“Development Tools”和“Development Libraries”

                            centos6:Develop Tools  Server Platform Development

                            centos7:Develop Tools

    yum的命令行选项:

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

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

(3)
NarutoNaruto
上一篇 2016-08-25
下一篇 2016-08-25

相关推荐

  • 8.5-文本处理工具(命令篇)

     1、文件查看命令: cat, tac,rev cat [OPTION]… [FILE]…     -E: 显示行结束符$     -n: 对显示出的每一行进行编号     -A:显…

    Linux干货 2016-08-07
  • 马哥linux2014|2015全套教程

    1、本课程全程将基于集成了Openstack云环境、支持高精度时间(PTP)及虚拟化性能大大提升的RHEL 6.5或CentOS 6.6,间或介绍CentOS 7系统的使用; 2、此文章给出的只是个课程知识点框架,实际讲解过程相当精细;另外,知识点讲授的次序未必同此文章所标示的顺序相同; 3、第15期面授班定于2015年3月24号开课;本期将会是马哥教育数年…

    Linux干货 2015-07-14
  • httpd配置支持https

    httpd配置支持https 建一台私有CA 配置httpd支持ssl协议以及使用证书 测试基于https访问的相应主机 rpm包安装的httpd https https 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,也被称为HTTP over TLS,HTTP over SSL或HTTP …

    Linux干货 2016-12-21
  • bash脚本编程

    Linux脚本编程中bash常用的测试类型:                 整数测试:       -gt greater than  大于    …

    Linux干货 2016-08-18
  • redis + keepalived 双主模型

    redis + keepalived 双主模型 架构图:    1.vip默认绑定在redis主上,由redis主提供服务,redis从为备用节点。(实际上提供服务的只是vip) 2.当redis主挂掉,vip会默认漂移至redis从。由redis从提供服务,redis主已经挂掉。 3.当redis主已经恢复,redis从继续提供服务和挂…

    Linux干货 2016-06-23
  • xen虚拟化基础篇

    Xen介绍:  xen是一个开放的源代码虚拟机监视器,有剑桥大学研发。它打算在单个计算机上运行多达128个满足特征的操作系统,操作系统必须进行显示地修改("移植")以在Xen上运行(但是提供对用户应用的兼容性)。这使得无需特殊硬件支持,就能达到高性能的虚拟化。 Xen由三部分组成:     第一部分…

    Linux干货 2015-08-26

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-26 13:32

    文章对内容总结的很全面,同时通过多种方式自建yum源,并配置使用,加深了自己对yum工具的使用。如果在用词上更专业点,会让文章看起来更优秀哦。