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

相关推荐

  • 用户管理类命令

    2018-03-18

    Linux干货 2018-03-18
  • Linux介绍

    Linux简介 Linux是一种自由和开放源代码的类UNIX操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布。在加上用户空间的应用程序之后,成为Linux操作系统。Linux也是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。…

    Linux干货 2016-10-28
  • 如何安装CentOS 6.9

    1、打开VMware,点击“创建新的虚拟机”   2、刚开始用的话,一般就选择推荐的典型类型来安装,所以直接点击“下一步”   3、此处选择稍后安装操作系统,这里我们先进行配置,点击“下一步”   4、因为我需要用里面的linux系统,所以选择客户机操作系统为Linux,选择版本为CentOS 64位,单击“下一步”。 &nbs…

    2017-07-11
  • Zabbix 发现功能中文文档

    说明:本文译自 zabbix 官方文档 Discovery 一节,包括 Network Discovery, Auto Registration和Low level discovery,同时对文章进行了补充以及更详细的说明。适用于Zabbix 2.0 版本。 发现包括三种类型: 网络发现 ( Network discovery) 主动客户端自动注册 ( Ac…

    Linux干货 2015-03-12
  • haproxy 监控配置

    方法一:在defaults段增加如下配置: stats refresh 30s #统计页面自动刷新时间stats uri /stats #统计页面urlstats realm baison-test-Haproxy #统计页面密码框上提示文本stats auth admin:admin123 #统计页面用户名和密码设置stats hide-version #…

    Linux干货 2018-03-19
  • Linux DNS服务系列之主从复制、子域授权和转发、view配置详解

    前言 上文我们讲解了DNS服务的原理及正反向解析配置,相信大家对DNS服务已经有了初步了解。接下来,让我们进一步了解DNS服务的其它功能,本文将详解主从复制、子域授权和转发以及view的相关配置。 主从服务器配置 主从服务器关系 如果公司内DNS服务器负载过重或者为了实现冗余这一类功能就需要用到一个备份DNS服务器,备份服务器和主DNS服务器就形成了主从关系…

    Linux干货 2015-04-13

评论列表(1条)

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

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