软件包管理工具的使用及yum源仓库的配置

我们知道CentOS,本质上是RedHat的社区版,其无论是功能还是软件配置上都与RedHat保持一致,因此CentOs系列的软件包管理主要的也是rpm和yum工具。

RPM包管理

rpm包管理工具可以说是历史悠久、名声斐然了。rpm起初是RedHat公司研发的软件包管理工具,即RedHat Package Managemer。但由于其性能突出,在开源界得到了各大Linux发行厂商的认同,被推崇为公认的行业标准,因此rpm也改为递归称呼RPM Package Manager。

虽然现在的标准CentOS系统都有yum可以使用,rpm工具似乎已经无用武之地,但作为yum利器的基础软件,在某些情况下还是很需要掌握的。尤其是当我们安装一个单独的外来rpm软件包的时候,直接使用rpm进行安装明显要好很多。

安装

    rpm {-i|–install} [install-options] PACKAGE_FILE…  

        #尤其需要注意的是这里使用的是rpm包文件的全名

        -v:  显示安装过程信息

        -h:  以# 显示程序包管理执行进度

        –test:  测试安装,但不真正执行安装;dry run 模式

        –nodeps :忽略依赖关系

        –replacepkgs | replacefiles :替换原来的安装包或文件

        –nosignature:  不检查来源合法性

        –nodigest :不检查包完整性

        –noscripts :不执行程序包脚本

升级/更新

    rpm {-U|–upgrade} [install-options]  PACKAGE_FILE …

    rpm {-F|–freshen} [install-options]   PACKAGE_FILE …

        upgrade :安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”

        freshen :安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作

    –oldpackage :降级

    –force : 强制安装

注意:在Linux下同一软件的不同版本可以共存,这在某些情况下是非常方便的,尤其是当需要在某个软件的两个版本之间进行频繁切换的时候。另外!!!生产环境中,针对系统内核一定要谨慎升级,可以重新安装,让两个版本的内核并存,避免新内核不稳定造成严重影响。

查询

    rpm {-q|–query} [select-options] [query-options] [select-options]

        -a:  所有已经安装的软件包

        -f:  查看系统上指定的文件由哪个程序包安装生成

        -p:对尚未安装的程序包文件进行查询,需要加上-p选项

        –whatprovides CAPABILITY :查询指定的CAPABILITY由哪个包所提供

        –whatrequires CAPABILITY :查询指定的 CAPABILITY 被哪个包所依赖

        –changelog :查询rpm 包的changelog

        -c:  查询程序的配置文件

        -d:  查询程序的文档

        -i: information

        -l:  查看指定的程序包安装后生成的 所有文件

        –scripts :程序包自带 的脚本

        -R|–requires:  查询指定的程序包所依赖的 CAPABILITY

        –provides:  列出指定程序包所提供的 CAPABILITY

卸载

    rpm {-e|–erase}[–allmatches][–nodeps][–noscripts][–notriggers][–test] PACKAGE_NAME…

校验

    rpm {-V|–verify} [select-options] [verify-options]  对安装后的软件进行校验

    校验结果各字符的含义:

        S  文件大小发生改变

        M  Mode 改变(包括权限和文件类型)

        5  MD5校验发生改变

        D  设备号不匹配

        L  readLink(2) 路径不匹配

        U  User 信息发生改变

        G  Group 信息发生改变

        T  mTime 改变

        P  capabilities 发生改变

    rpm -K|checksig rpmfile 软件包文件的校验,需要提前导入密钥文件

    rpm –import / etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

YUM管理工具

使用过yum的人,信息都不想再继续用rpm来进行软件的安装,最主要的原因就是yum很好的解决了软件安装过程中的包依赖关系,让软件的安装不再那么“痛苦”,尤其是当我们在安装过程中被各种依赖搞得焦头烂额却仍然无法搞定的时候,一条yum命令却可以轻松解决。这么神奇的工具是如何实现的呢?

YUM: Yellowdog Update Modifier,是Yellowdog公司开发出来的rpm前端程序,能够很好的解决软件包安装过程中的相互依赖关系。Yum是构建在rpm基础之上的,所以没有rpm,yum也是无法使用的。要想更好的使用yum,需要进行提前配置的(系统默认已经进行配置,我们也可以根据自己需要进行修改),yum的配置主要分为客户端和服务端(在后面部分会讲解相关配置)。

安装程序包:

    yum install package1 [package2] […]  注意:这里用的是软件包名,不是软件包的文件名

    yum reinstall package1 [package2] […]  重新安装

        –nogpgcheck :禁止进行gpg check

        -y:  自动回答为“yes”

        -q :静默模式

        –noplugins :禁用所有插件

升级程序包:

    yum update [package1] [package2] […]

    yum downgrade package1 [package2] […]   降级

检查可用升级:

    yum check-update

卸载程序包:

    yum remove | erase package1 [package2] […]

安装及升级本地程序包:

    yum localinstall rpmfile1 [rpmfile2] […]   ( 用install 替代)

    yum localupdate rpmfile1 [rpmfile2] […]  ( 用update 替代)

包组管理的相关命令:

    yum groupinstall group1 [group2] […]

    yum groupupdate group1 [group2] […]

    yum grouplist [hidden] [groupwildcard] […]

    yum groupremove group1 [group2] […]

    yum groupinfo group1 […]

查看程序包information: :

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

    yum provides | whatprovides feature1 [feature2][…]

搜索:

    yum search string1 [string2] […] 以指定的关键字搜索程序包名及summary 信息

查看指定包所依赖的capabilities: :

    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 undo 6

显示仓库列表:

    yum repolist [all|enabled|disabled]

显示程序包:

    yum list

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

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

清理本地缓存:

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

构建缓存:

    yum makecache

YUM仓库的配置

yum仓库主要分为两部分,一部分是rpm软件包,一部分是yum配置文件repodata。可以将两者放在一个目录,当然为了便于管理,我们还是建议两者分开。

第一步,创建目录结构。那么首先我们创建一个yum仓库的目录centos,如果你同时为多个版本(如centos6和7)提供yum源,那么可以在centos目录下分别创建目录(目录6和7),然后分别创建yum仓库;如果只是为单一版本提供yum源,可以直接在centos目录创建yum仓库,我们这里以centos7为例。进入到要创建yum仓库的目录,创建一个软件包的存放目录Packages(名称可以自己定义)。

第二步,获取rpm软件包。rpm软件包,可以从光盘、官方网站、第三方获取,或自己制作rpm软件包,把我们获取到的rpm软件包移到Packages目录下。

第三步,创建配置文件。当以上步骤准备就绪以后,我们就可以使用createrepo命令来创建yum仓库的配置文件repodata了。命令格式如下:

createrepo  [/PATH/TO/REPODATA]  [/PATH/TO/RPM_PACKAGES/]

createrepo centos/7 centos/7/Packages

至此,我们的yum仓库服务端已经配置好了,最终的目录结构如下图。是不是感觉很简单呢?当然,如果你想通过网络为更多的人提供yum源服务,那就需要配置ftp或http web服务了,只需要将我们配置好的yum仓库放置在我们提供服务的相应目录里即可。

Image 1.jpg

YUM客户端的配置

yum客户端的配置文件在/etc/yum.repos.d/目录中,默认系统已经提供了大部分的官方网络yum源配置,当然大家也可以使用我们自己配置的yum源。这里需要我们创建一个以.repo结尾的配置文件,并编辑文件的内容,格式如下:

[CentOS7]

name=CentOS7 base repo

baseurl=file:///misc/cd/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS7

enabled=1

[CentOS7]  这个是yum仓库的ID,名称可以自己定义,但在系统中需要是唯一的,不能重复

name=  这个是yum仓库的描述信息,可以没有

baseurl=  这个是yum源repodata父目录的位置,有本地file://或网络ftp://或http://三种形式

gpgcheck=  这个说明对于安装的软件是否要进行校验,1为校验,0为不校验

gpgkey=  指定gpgcheck校验码的位置;如果gpgcheck为1,则该项必须填写,并且正确

enabled=  该项指明该仓库是否可用,1为可用,0为不可用

该例中,我们的yum仓库位于本机/misc/cd目录下,该目录下有rpm软件包目录Packages和配置文件目录repodata两个子目录,因此使用baseurl=file:///misc/cd指明路径。

当配置好本地客户端以后,使用yum clean all命令清理一下yum缓存,这样我们就可以愉快的使用yum了。

原创文章,作者:M21-张国辉,如若转载,请注明出处:http://www.178linux.com/57835

(2)
M21-张国辉M21-张国辉
上一篇 2016-11-06
下一篇 2016-11-06

相关推荐

  • 鸟哥?马哥?靠边站!今天猫哥带你玩千万PV级别运维架构实战

    1.哼,从今天开始马哥linux,就是我猫哥的天下了!,马哥你奏凯! 我猫哥在此宣誓,从今以后马哥教育正式更名猫哥教育! 哼,信猫哥,得永生! 2.妹的,都好好给我学习,猫哥我盯着呢 3.猫哥我第一次出镜,给咱来个特写啊小伙,拍的好看了,猫哥就免费给你讲讲Linux运维之道。 4.哎哟,拍的还不赖,猫哥我算是45°角仰望星空了,来来,猫哥给你讲讲互联网运维架…

    Linux干货 2016-04-01
  • N21_第x周_Storm_01_单机实践篇

       这2周没有按马哥安排的课程走,因公司需要,大家一直在试尝大数据这块。作业不能不做,也不知道马哥哪周的作业会有storm,只好先将这段时间的实验慢慢记录下来(其它flume、kafka、spark等本周会慢慢补充),等知道具体的作业题目后,再完善。 实验目的   了解storm的原理,并用storm单机版实验加深理解,为后面…

    Linux干货 2016-09-15
  • Chrony

    RHEL7.4 192.168.100.1 作为时间服务器,其它主机到这台来同步时间。 时间服务器安装及配置:#yum install chrony –RHEL7默认已安装chrony,而没有安装ntpd. #systemctl status chronyd –查看chronyd服务状态#systemctl enable chrony…

    2018-01-06
  • MariaDB

    Mariadb 结构化数据–>关系型数据库 范式:Entry(每一行来描述一个整体) 半结构化数据–>YAML,XML,JSON 非结构化数据–>日志文件 NoSQL 关系型数据库:事务能力 ACID测试(原子性,一致性,隔离性,持久性) MariaDB or MySQL: 层次模型–>…

    Linux干货 2016-11-15
  • N25_第二周

    Linux文件管理类命令 cp命令:copy 源文件;目标文件; 单源复制:cp [OPTION]… [-T] SOURCE DEST 多源复制:cp [OPTION]… SOURCE… DIRECTORY |       cp [OPTION]… -t DIRECTORY SOURCE……

    Linux干货 2016-12-11
  • linux文件管理

    目录创建删除,软硬链接的区别和注意,file命令的使用,工作中遇到一些情况的处理方法

    2017-11-18