Linux之yum详解及程序包安装

Linux之 yum详解 及 程序包安装

   在Linux常用的命令安装工具中,rpm是一个功能十分强大的软件包管理系统,它使得在Linux下安装、升级和删除软件包的工作变得容易,并且具有查询、验证软件包的功能。与图形化工具相比,使用命令行可以获得更大的灵活性。

   但是rpm有一个缺点,无法解决包的依赖性,也就是说,当我们用rpm安装A包的时候,需要依赖于B包,但运用rpm安装A包前必须手动安装B包,然后才能安装A包。

   如果用yum安装A包的话,yum会先自动安装B包,以解决A包的依赖性。

   而yum是什么?

   YUM: Yellowdog Update Modifier, rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,up2date的替代工具,以下为yum详解。

yum

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

    文件服务器:

        ftp://

        http://

        file:///

    yum客户端配置文件:

        /etc/yum.conf:为所有仓库提供公共配置

  clipboard.png

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

    仓库指向的定义:              

        [repositoryID]                                          

            name=Some name for this repository

            baseurl=url://path/to/repository/

            enabled={1|0}        //是否启用该配置

            gpgcheck={1|0}       //1为开启,0为不验证公钥

            gpgkey=URL          //公钥地址,可以为本机(/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7   

                                            或者为光盘的  CentOS\ 7\ x86_64/RPM-GPG-KEY-CentOS-7   

                                            或者为远端镜像源的地址)

            enablegroups={1|0}     //是否允许包

            failovermethod={roundrobin|priority}     //默认为: roundrobin,意为随机挑选;

            cost= 默认为1000


    yum命令的用法:

        yum [options] [command] [package …]

            yum-config-manager –disable “仓库名" 禁用仓库

            yum-config-manager –enable “仓库名” 启用仓库

  

        显示仓库列表:

            repolist [all|enabled|disabled]      //下图是本博主自己自定义的一个仓库列表,

                                在/etc/yum.repos.d/ 录下仅有本博主自己的一个 *.repo文件,

                                                但是文件里边有多个配置信息,所以,仓库列表也显示多个

                               这里再次说明一下,当仓库指向的配置中enabled=1,

                                则为启用,yum repolist中就会显示该仓库列表

              

        blob.png   blob.png     

    显示程序包:

        list

        # yum list [all | glob_exp1] [glob_exp2] […]

        # yum list {available|installed|updates} [glob_exp1]

        […]

blob.png

    安装程序包:

        install package1 [package2] […]

        reinstall package1 [package2] […] (重新安装)


    升级程序包:

        update [package1] [package2] […]

        downgrade package1 [package2] […] (降级)


    检查可用升级:

        check-update


    卸载程序包:

        remove | erase package1 [package2] […]


    查看程序包information:

        info […]

blob.png

  

    查看指定的特性(可以是某文件)是由哪个程序包所提供:

        provides | whatprovides feature1 [feature2] […]


    清理本地缓存:

        clean [ packages | metadata | expire-cache |rpmdb | plugins | all ]

        blob.png

    构建缓存:

        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]

        yum history

            yum history info 15     //查看yum history  id为15 的 操作

            yum history undo 15     //撤销yum history  id为15 的 操作

    

    日志 : /var/log/yum.log

    blob.png

    blob.png    

    由于我history info  15   是一个安装gcc 的操作,  所以我的命令  yum history undo 15   就是卸载 gcc  的操作 

    安装及升级本地程序包:

        localinstall rpmfile1 [rpmfile2] […]

        (用install替代)

        localupdate rpmfile1 [rpmfile2] […]

        (用update替代)

    

     包组管理的相关命令:

            grouplist [hidden] [groupwildcard] […]

           groupinstall group1 [group2] […]

            groupupdate group1 [group2] […]           

            groupremove group1 [group2] […]

            groupinfo group1 […]

    这里值得注意的是,通常包组名都不是一个看上去连续的字符,而是一个中间有空格的字符串如 Development Tools 等

        (PS : 这里的包组就是一开始的时候,安装Linux系统可以选择的包组 )

    blob.png

    所以在使用 yum groupinstall groupname   安装包组的时候,需要加双引号" "  ,否则无法识别

    blob.png

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

    (1) 挂载光盘至某目录,例如/media/cdrom

        # mount /dev/cdrom /media/cdrom

    (2) 创建配置文件

        [CentOS7]

        name=

        baseurl=

        gpgcheck=

        enabled=

    blob.png

     

    yum的命令行选项:

            –nogpgcheck:禁止进行gpg check

            -y: 自动回答为“ yes”

            -q:静默模式

            –disablerepo=repoidglob:临时禁用此处指定的repo

            –enablerepo=repoidglob:临时启用此处指定的repo

            –noplugins:禁用所有插件

  

    yum的repo配置文件中可用的变量:

        $releasever: 当前OS的发行版的主版本号

        $arch: 平台, i386,i486,i586,x86_64等

        $basearch:基础平台; i386

        $YUM0-$YUM9:自定义变量

    

    实例:(当我们在实际生产工作中,管理的服务器是大量的,且有可能每一台的配置都有所不同,那么是否要每一台的yum仓库指向文件都要配置一次呢,答案是否定的)

        http://server/centos/$releasever/$basearch/

        http://server/centos/7/x86_64

        http://server/centos/6/i384  

     blob.png

    创建yum仓库:

        createrepo [options] <directory>

            no.1  复制仓库安装包至自定义目录,自定义目录为自创的yum仓库

            no.2  在yum仓库下运行命令 createrepo . (. 为当前目录) , 运行成后会生成一个repodata ,一个yum仓库的标记文件

            no.3  安装yum仓库的rpm包

        以下为创建yum仓库,并安装 tree

    
          blob.png

        blob.png

        blob.png

        当然 , 安装仓库没有的rpm包是会报错的

        blob.png



====================================================================================================================================

程序包编译安装:

若要在Linux系统上安装软件 ,

    首先要有源码(开放源码;因为linux是开源系统) ,

        然后解压源码包,源码包只不过是程序员编写的代码

            以下步骤在解压源码包的目录下进行

    接着是编译 , 编译是因为机器无法读懂人类语言 , 通过编译软件 如 gcc等,编译成二进制文件 , 机器才能读懂 (在解压源码包的目录下进行)

        然后 make  构建应用程序文件(在解压源码包的目录下进行)

            最后就是 make install  安装程序(在解压源码包的目录下进行)

    

    相较于Windows安装软件,Windows执行应用程序相当于Linux的make install这一步,虽说简单,但由于Windows是闭源,无法自定义软件的功能,而Linux的开源可以编写文件的某些字段 , 以达到自定义软件的功能(这是开源的好处)


以安装Apache2为详解:


Application-VERSION-release.src.rpm –> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装

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

源代码组织格式:

    多文件:文件中的代码之间,很可能存在跨文件依赖关系C、 C++: make (项目管理器, configure –>

    Makefile.in –> makefile)

    java: maven

C代码编译安装三步骤:

    下载httpd安装包,也就是Apache的安装包(2.2.29版本比较稳定)

    blob.png

    1、 ./configure:(一般来说,我们都先要看一下帮助文件,以了解软件的相关信息: configure –help  或者是 less README )

        (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile

        (2) 检查依赖到的外部环境   (需要检查,了解)

        (3) 最后才运行configure   (./configure)

    blob.png

    2、 make:根据makefile文件,构建应用程序 (跑的代码比较多,不截图了,记住要在解压的目录里运行)

    3、 make install:复制文件到相应路径    (跑的代码比较多,不截图了,记住要在解压的目录里运行)

    第一步: configure脚本

        选项:指定安装位置、指定启用的特性

        –help: 获取其支持使用的选项

        选项分类:

        安装路径设定:

        –prefix=/PATH: 指定默认安装位置,默认为/usr/local/

        –sysconfdir=/PATH:配置文件安装位置

        System types:支持交叉编译

        Optional Features: 可选特性

        –disable-FEATURE

        –enable-FEATURE[=ARG]

        Optional Packages: 可选包,

        –with-PACKAGE[=ARG],依赖包

        –without-PACKAGE,禁用依赖关系

    第二步: make

    第三步: make install

PATH=$PATH:/usr/local/apache2/bin

编译安装

    安装后的配置:

        (1) 二进制程序目录导入至PATH环境变量中;

            编辑文件/etc/profile.d/NAME.sh

            export PATH=/PATH/TO/BIN:$PATH

        blob.png

       

        (2) 导入库文件路径

            编辑/etc/ld.so.conf.d/NAME.conf

            添加新的库文件所在目录至此文件中;

            让系统重新生成缓存:

            ldconfig [-v]

        blob.png


        (3) 导入头文件(程序运行,很多时候都是要依赖头文件)

            基于链接的方式实现:

            ln -sv

        blob.png

        在 /usr/include/ 目录下创建 /usr/lcoal/apache2/include/ 的软链接

        

        (4) 导入帮助手册

            编辑/etc/man.config|man_db.conf文件

            添加一个MANPATH


        blob.png


开发工具:

    autoconf: 生成configure脚本

    automake:生成Makefile.in

        注意:安装前查看INSTALL, README

    开源程序源代码的获取:

        官方自建站点:

            apache.org (ASF)

            mariadb.org

            

        代码托管:

            SourceForge.net

            Github.com

            code.google.com

    c/c++编译器: gcc (GNU C Complier)

    编译C源代码:

    前提:提供开发工具及开发环境(要先安装Development Tools )

    开发工具: make, gcc等

    开发环境:开发库,头文件

    glibc:标准库

    通过“包组”提供开发组件

    CentOS 6: "Development Tools",

    "Server Platform Development",

    

Linux之yum详解及程序包安装


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

(2)
hunterhunter
上一篇 2016-08-24
下一篇 2016-08-24

相关推荐

  • 文本处理工具和shell脚本基本编程

    文本处理工具 grep 对文本进行搜索获取我们想要的行(关键信息) egrep 支持扩展正则表达式的grep fgrep 快速搜索不支持正则    -v 取反  找出不包含“pattern”的行  -i 忽略字符的大小写  -n 显示行号  -c 显示统计到的行数,等同于wc -l  -o…

    2017-04-09
  • N29 第一周作业

    1、描述计算机的组成及其功能。
    2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    3、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
    4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
    5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
    6、请罗列Linux发行版的基础目录名称命名法则及功用规定

    Linux干货 2018-03-05
  • Linux系统之用户和组

    Linux系统之用户和组 1、什么是用户 用户:资源获取标识符,资源分配,安全权限模型的核心要素之一 2、没有用户,操作系统可否正常执行? 答案是肯定的 在Linux系统上,用户管理是基于用户名和密码的方式进行资源的分配, Username/UID分为以下类别:     管理员:root, 0  &…

    Linux干货 2016-08-04
  • linux任务管理与计划

    linux系统作业控制的命令:     job(作业):一个作业通常包含多个命令(也有可能只包含一个),联合起来由单个小程序组合,完成复杂任务,对Linux而言作业有两种;前台作业和后台作业        前台作业(forgroud):通过终端启动,且启动后会…

    Linux干货 2016-09-13
  • keepalived+nginx 模型示例

    原理为: 调度器 利用 keepalived 保持高可用性,实现对系统的监控和VIP 的floating NGINX 利用upstream模块进行调度 关键点: keepalived 对NGINX 状态的监控: //利用配置文件中设定的脚本对调度器的nginx 进程的监控 实验步骤: 基于上一篇LVS-DR架构来做,具体LVS-DR架构请参考上一篇 先设置主…

    2017-05-13
  • shell脚本的各种循环

    For循环 For循环格式      For   变量名  in    列表    ;   do         &nb…

    Linux干货 2016-08-21

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-26 16:11

    文章思路清晰,整篇博客能让人看到很多专业性所在,还能看出很用心的地方,革命尚未成功,同志仍需努力啊,加油!