yum

简介:

 在linux中要想使用某个软件,我们需要对其源码进行编译、链接库,然后生成二进制可执行程序。程序的编译是有规则的,哪些程序先编译,哪些程序后编译,哪些程序需要重新编译,因此程序员给安装程序提供了一个文件:makefile,里面记录了程序的编译规则,但是当程序文件数目很庞大的时候,Makefile的制作无疑也是个费时的工程,因此,有人专门开发了工具制作它,比如:autotools,具体的可以参考:http://blog.chinaunix.net/uid-20544507-id-3494422.html

    有时候我们只需要这个程序所能提供的功能中的一两个,所以一次性把程序所有功能都编译成可执行程序必然是耗时且作用不大的。为了解决这个问题,程序的开发者给程序提供了编译参数,利用configure命令进行选择,可以参考:http://www.chinaz.com/server/2009/0807/85792.shtml    

    所以一般来说一个完整的程序应该包含以下几种文件:

        1.二进制程序:一般是/bin或/sbin下的程序

        2.库文件:/lib下的文件

        3.头文件:include里面的文件(程序调用函数,这些函数必须在事先声明变量等,头文件存放这些信息)

        4.配置文件:一般是/etc里面的内容(编译参数是让你有使用这个功能的能力,而配置文件则是让你选择是否启用这个功能)

        5.帮助文件:一般放在share或者man这个目录

    

    因为编译实在是太耗费时间了,当我们硬件架构与某些人编译程序的架构一模一样的时候,此时如果这些人能提供我们编译好的程序,我们就没必要再自己编译一遍,这些人就是redhat或者debian等厂商,这些编译好的程序我们把它们做成rpm或者dkpg格式,所谓rpm包的安装就是把程序里面编译好的程序解压出来,放到相对应的地方,比如二进制程序放在/bin或/sbin等目录,模块放在/lib/module等。但是这样有个缺点,别人编译好的程序并不一定是我们想要的,他们编译出来的程序是大部分人需要的,因此,当我们需要特定功能的时候,我们仍然需要自己编译软件,大部分情况下rpm包已经能满足我们的需要了。

    rpm包安装起来很方便,但是除了有可能没有我们需要的功能以外,它还有一个缺点,不能解决包与包之间的依赖关系。因此,有人就想如果我们把rpm包和依赖包收集起来,并记录它们之间的关联关系,放到服务器上以供下载,这样安装rpm包不就不用再辛辛苦苦地找依赖包了吗?这个就是本文要说明的yum(还有其他种 比如debian的apt等)


yum把包与依赖包的信息记录在元数据文件中,主要包含以下几种:

primary.xml.gz:

    所有rpm包的列表

    依赖关系

    每个rpm包安装生成的文件列表

filelists.xml.gz:

    当前仓库中所有rpm包的所有文件列表

other.xml.gz:

    额外信息,rpm包的修改日志

repomd.xml:

    记录的是上面三个文件的时间戳和校验和

comps.xml.gz

    rpm包分组信息


客户端要想使用yum服务器所提供的功能,则必须配置/etc/yum.conf文件,或者编辑以.repo结尾的文件,放在/etc/yum.repos.d/目录下


如何为yum定义repo文件

[Repo_ID]

name=Description

baseurl=    #yum服务器所在地址,三种格式,指向要指向repodata所在路径

    ftp://

    http://

    file:///

enable={1|0}  #这个代表是否启用这个repo

gpgcheck={1|0}    #这个代表是否验证包的来源合法性

gpgkey=    #这个代表密钥路径


示例:

[root@logstash yum.repos.d]# ls  /mnt/

CentOS_BuildTag                repodata/

.discinfo                      RPM-GPG-KEY-CentOS-6

EULA                           RPM-GPG-KEY-CentOS-Debug-6

GPL                            RPM-GPG-KEY-CentOS-Security-6

images/                        RPM-GPG-KEY-CentOS-Testing-6

isolinux/                      TRANS.TBL

Packages/                      .treeinfo

RELEASE-NOTES-en-US.html       

[root@logstash yum.repos.d]# ls

bak  sys.repo

[root@logstash yum.repos.d]# cat sys.repo 

[sys]

name=test repo

baseurl=file:///mnt/

enable=1

gpgcheck=0

[root@logstash yum.repos.d]# ls  /mnt/

CentOS_BuildTag  Packages                    RPM-GPG-KEY-CentOS-Security-6

EULA             RELEASE-NOTES-en-US.html    RPM-GPG-KEY-CentOS-Testing-6

GPL              repodata                    TRANS.TBL

images           RPM-GPG-KEY-CentOS-6

isolinux         RPM-GPG-KEY-CentOS-Debug-6

[root@logstash yum.repos.d]# yum  list

zenity.i686                                2.28.0-1.el6                sys      

zlib-static.i686                           1.2.3-27.el6                sys      

zsh.i686                                   4.3.10-5.el6                sys      

zsh-html.i686                              4.3.10-5.el6                sys   

(太多了..截取后面几行)


yum命令格式:

yum [option] [command] [package ...]

option:

    -y:自动选择yes


command:

    list:列表

        支持glob    

        all:显示所有

        available:可用的,仓库中有但尚未安装的

        installed:已经安装的

        updates:可用的升级

    clean:清理缓存

        [packages|headers|metadata|dbcache|all]


    repolist:显示repo列表及其简要信息

        all:所有

        enabled:已经启用的(默认显示这个)

        disable:没启用的

    install:安装

    update:升级

    update_to:升级为指定版本

    remove|erase:卸载

    info:说明

    provides|whatprovides:查看指定的文件或特性是由哪个包安装生成的;

    groupinfo:组信息

    grouplist:

    groupinstall:

    groupremove:

    groupupdate:


如何创建yum仓库

createrepo /PATH/TO/RPM_package's_father_dir


示例:

[root@logstash Packages]# pwd

/yum-test/Packages

[root@logstash Packages]# ls

abrt-2.0.8-6.el6.centos.i686.rpm

abrt-addon-ccpp-2.0.8-6.el6.centos.i686.rpm

abrt-addon-kerneloops-2.0.8-6.el6.centos.i686.rpm

abrt-addon-python-2.0.8-6.el6.centos.i686.rpm

abrt-cli-2.0.8-6.el6.centos.i686.rpm

abrt-desktop-2.0.8-6.el6.centos.i686.rpm

abrt-gui-2.0.8-6.el6.centos.i686.rpm

abrt-libs-2.0.8-6.el6.centos.i686.rpm

abrt-tui-2.0.8-6.el6.centos.i686.rpm

abyssinica-fonts-1.0-5.1.el6.noarch.rpm

[root@logstash Packages]# cd  ..

[root@logstash yum-test]# cd  /etc/yum

yum/         yum.conf     yum.repos.d/ 

[root@logstash yum-test]# cd  /etc/yum.repos.d/

[root@logstash yum.repos.d]# vi  

bak/                      CentOS-Vault.repo         mirrors-rpmforge-testing

CentOS-Base.repo          epel.repo                 rpmforge.repo

CentOS-Debuginfo.repo     epel-testing.repo         sys.repo

CentOS-fasttrack.repo     mirrors-rpmforge          

CentOS-Media.repo         mirrors-rpmforge-extras   

[root@logstash yum.repos.d]# mv  ./* bak/

mv: cannot move `./bak' to a subdirectory of itself, `bak/bak'

[root@logstash yum.repos.d]# mv bak/sys.repo   .

[root@logstash yum.repos.d]# vi  sys.repo 

[sys]

name=test repo

baseurl=file:///yum-test/Packages

enable=1

gpgcheck=0


[root@logstash yum.repos.d]# yum repolist

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

file:///yum-test/Packages/repodata/repomd.xml: [Errno 14] Could not open/read file:///yum-test/Packages/repodata/repomd.xml

Trying other mirror.

repo id                             repo name                             status

sys                                 test repo                             4,776

repolist: 4,776

[root@logstash yum.repos.d]# yum clean metadata

Loaded plugins: fastestmirror

Cleaning repos: sys

2 metadata files removed

1 sqlite files removed

0 metadata files removed

[root@logstash yum.repos.d]# yum repolist

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

file:///yum-test/Packages/repodata/repomd.xml: [Errno 14] Could not open/read file:///yum-test/Packages/repodata/repomd.xml

Trying other mirror.

file:///yum-test/Packages/repodata/repomd.xml: [Errno 14] Could not open/read file:///yum-test/Packages/repodata/repomd.xml

Trying other mirror.

repo id                             repo name                             status

sys                                 test repo                             0

repolist: 0

[root@logstash yum.repos.d]# createrepo   /yum-test/Packages/

Spawning worker 0 with 10 pkgs

Workers Finished

Gathering worker results


Saving Primary metadata

Saving file lists metadata

Saving other metadata

Generating sqlite DBs

Sqlite DBs complete

[root@logstash yum.repos.d]# yum repolist

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

sys                                                      | 2.9 kB     00:00 ... 

sys/primary_db                                           |  11 kB     00:00 ... 

repo id                             repo name                             status

sys                                 test repo                             10

repolist: 10

[root@logstash yum.repos.d]# ls  /yum-test/Packages/

abrt-2.0.8-6.el6.centos.i686.rpm

abrt-addon-ccpp-2.0.8-6.el6.centos.i686.rpm

abrt-addon-kerneloops-2.0.8-6.el6.centos.i686.rpm

abrt-addon-python-2.0.8-6.el6.centos.i686.rpm

abrt-cli-2.0.8-6.el6.centos.i686.rpm

abrt-desktop-2.0.8-6.el6.centos.i686.rpm

abrt-gui-2.0.8-6.el6.centos.i686.rpm

abrt-libs-2.0.8-6.el6.centos.i686.rpm

abrt-tui-2.0.8-6.el6.centos.i686.rpm

abyssinica-fonts-1.0-5.1.el6.noarch.rpm

repodata/

[root@logstash yum.repos.d]# ls  /yum-test/Packages/

abrt-2.0.8-6.el6.centos.i686.rpm

abrt-addon-ccpp-2.0.8-6.el6.centos.i686.rpm

abrt-addon-kerneloops-2.0.8-6.el6.centos.i686.rpm

abrt-addon-python-2.0.8-6.el6.centos.i686.rpm

abrt-cli-2.0.8-6.el6.centos.i686.rpm

abrt-desktop-2.0.8-6.el6.centos.i686.rpm

abrt-gui-2.0.8-6.el6.centos.i686.rpm

abrt-libs-2.0.8-6.el6.centos.i686.rpm

abrt-tui-2.0.8-6.el6.centos.i686.rpm

abyssinica-fonts-1.0-5.1.el6.noarch.rpm

repodata

[root@logstash yum.repos.d]# ls  /yum-test/Packages/repodata/

03a9c58549ff25cca1d0f8dd97d82d539a0b11b99c50bc303b3e53a5cddd27b1-other.sqlite.bz2

0c0afd76be4eb9f2170ae47ce261a607966a1123e8980455088b39f224a77549-other.xml.gz

24c2e2ff0624a9c617353bbfe75276b9865e0edc11f2e6ac11af65d6451783b2-filelists.xml.gz

7bc227e5e01412e6179bc1e604bb57f1b4c7a0a9cb0b26b03b47e18a7826fad4-filelists.sqlite.bz2

c4d29babe0205855a823dcb718a51af964409066f5a7b3ffb470bf57f904c727-primary.sqlite.bz2

ef11c37fc89a392df2c366c3a26778993d9207fb04653f54f34839aa6de440aa-primary.xml.gz

repomd.xml

[root@logstash Packages]# yum  list available

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

Available Packages

abrt.i686                                 2.0.8-6.el6.centos                 sys

abrt-addon-ccpp.i686                      2.0.8-6.el6.centos                 sys

abrt-addon-kerneloops.i686                2.0.8-6.el6.centos                 sys

abrt-addon-python.i686                    2.0.8-6.el6.centos                 sys

abrt-cli.i686                             2.0.8-6.el6.centos                 sys

abrt-desktop.i686                         2.0.8-6.el6.centos                 sys

abrt-gui.i686                             2.0.8-6.el6.centos                 sys

abrt-libs.i686                            2.0.8-6.el6.centos                 sys

abrt-tui.i686                             2.0.8-6.el6.centos                 sys

abyssinica-fonts.noarch                   1.0-5.1.el6                        sys















本文转自biao007h51CTO博客,原文链接:http://blog.51cto.com/linzb/1754812 ,如需转载请自行联系原作者



相关文章
|
Ubuntu Unix Linux
Ubuntu 开机启动脚本配置
本文基于Ubuntu 20.04 LTS版本用实例来讲解如何配置开机自启动服务。
1308 1
Ubuntu 开机启动脚本配置
|
监控 Android开发
【Android 开发入门】android studio 控制台打印输出日志
有些情况下,不方便使用断点的方式来调试,而是希望在控制台打印输出日志,使用过Eclipse的同学都知道Java可以使用 System.out.println(""); 来在控制台打印输出日志,但是在android studio中却是不行的,还是有差别的,那应该用什么呢? android.util.Log 在调试代码的时候我们需要查看调试信息,那我们就需要用Android Log类。
3204 0
|
存储 编解码 算法
声音的变奏:深入理解ffmpeg音频格式转换的奥秘与应用(一)
声音的变奏:深入理解ffmpeg音频格式转换的奥秘与应用
611 0
|
Kubernetes Nacos 微服务
nacos常见问题之v2.2.3 k8s 微服务注册nacos强制删除 pod不消失如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
337 1
nacos常见问题之v2.2.3 k8s 微服务注册nacos强制删除 pod不消失如何解决
|
机器学习/深度学习 算法 数据库
R-CNN论文详解(入门目标检测必读)
R-CNN论文详解(入门目标检测必读)
R-CNN论文详解(入门目标检测必读)
|
安全 网络协议 算法
电脑病毒木马的清除和防范方法
电脑病毒木马的清除和防范方法
2860 0
电脑病毒木马的清除和防范方法
|
存储 安全 关系型数据库
技术人必修课:利用金字塔原理高效思考与表达
作者写这篇文章的目的就是希望能够帮助更多同学了解金字塔原理并合理应用,不只是写作,更是要着眼于思考和表达。本文将围绕认识金字塔结构、表达的逻辑、思考的逻辑、解决问题的框架、演示的逻辑这几个方面带领大家深入学习金字塔原理。
|
资源调度 自然语言处理 JavaScript
源码分享-基于vue+Ant Design管理平台
源码分享-基于vue+Ant Design管理平台
649 0
源码分享-基于vue+Ant Design管理平台