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

相关推荐

  • shell编程

       编程基础   编程基础:       编程:也就是程序+数据           程序编程风格:                  过程式:以指…

    Linux干货 2016-08-15
  • 【招聘福利】普景/上海/运维工程师/8K起/双休/五险一金

    岗位要求:  经验可无,要求熟悉LANMP、zabbix的配置和维护  了解SQL语句  熟悉shell、会python 更佳岗位职责:  1. 负责zabbix的配置和维护,发现问题及时处理(如果你是有经验的童鞋,找出或者写出如Centreon类的软件优化邮…

    Linux干货 2016-04-15
  • vim shell 练习作业题

    vim练习题 1. 复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符   :%s/^[[:blank:]]\+//g 【注意要把/etc/profile复制到/tmp下,cp  /etc/profile  /tmp(尽量不要修改原文件)】 2. 复制/etc/rc.d…

    2017-08-07
  • linux用户和组的配置文件

    1./etc/passwd:用户及其属性信息(用户名,密码,uid,gid,gecos注释性描述信息,家目录,登录shell)在/etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。这个文件对所有用户都是可读的。      …

    2017-07-22
  • Linux运维学习历程-第三天-初识Linux

    初识Linux 本章内容    初安装Linus的网络配置    防火墙的关闭    用户    终端    shell    命令纪要 安装linux之后,linux默认网卡开机不是自动激活,并且防火墙开启的,这对初期我们学习linux会…

    Linux干货 2016-08-03
  • 难搞的grep、find练习题

    马哥教育网络班21期-第五周博客作业 1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@caicai ~]# grep –color "^[[:space:]]\+" /boot/grub/grub.conf    …

    Linux干货 2016-07-26

评论列表(1条)

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

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