第五周学习总结-rpm&yum

我们都知道,计算机只能识别二进制程序,而程序员编写的源代码都是以纯文本形式存在,因此,要想让计算机识别并运行这些源代码程序,就必须通过中间的转换机制让源代码变为二进制程序文件,而这种转换过程就称为编译过程。Linux的各发行版本中由于各厂商的编译过程不尽相同,因此就诞生了各种不同的软件管理包组件。其中我们最熟知的就要数Redhat系列的rpm包了。

rpm包是通过预先编译并打包成为rpm文件格式,再加以安装到系统的方式,并且还能够进行数据库的记载,因此,rpm有很多优点:

  1. rpm内含有已经编译过的程序与配置文件等数据,可以让使用者免去重新编译的困扰;
  2. rpm在被安装之前,会先检查系统的硬盘容量、操作系统版本号等,可避免文件被错误安装;
  3. rpm文件本身提供软件版本信息、依赖性关系、软件用途说明、软件所含文件等,便于了解软件;
  4. rpm管理的方式使用数据库记录rpm文件的相关参数,便于升级、移除、查询和验证等。

既然rpm包这么重要,那么接下来就来聊一聊如何管理rpm类型的软件。rpm类型的软件管理工具为rpm命令,有安装、升级、卸载、查询和校验等功能操作。

安装

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

安装选项:

  • -h:以#来表示安装进度;
  • -v:显示安装过程中的详细信息;
  • –test:测试安装,检查并报告依赖关系及冲突消息等;
  • –nodeps:忽略依赖关系;
  • –replacepkgs:重新安装并覆盖原有文件;
  • –force:强制安装

升级

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

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

此处的-U表示升级或安装,而-F仅表示升级之意。

卸载

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

选项:

  • –allmatches:卸载所有匹配指定名称的程序包的各个版本;
  • –nodeps:卸载时忽略依赖关系;
  • –test:测试卸载;

查询

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

选择选项:

  • -a, –all:查询所有已经安装过的包;
  • -f FILE:查询某文件由哪个程序包安装生成;
  • -p  PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;

查询选项:

  • –changelog:查询rpm包的changlog;
  • -l, –list:程序安装生成的所有文件列表;
  • -i, –info:程序包相关的信息,版本号、大小、所属的包组;
  • -c, –configfiles:查询指定的程序包提供的配置文件;
  • -d, –docfiles:查询指定的程序包提供的文档;
  • -R, –requires:查询指定的程序包的依赖关系;

校验

rpm {-V|–verify} [select-options] [verify-options]

在实际的使用中,因为rpm包是不会自动解决依赖关系,因此在rpm包的管理中往往会遇到各种依赖关系,那么有没有办法自动解决这些依赖关系呢?答案当然是有,yum就是这样一个工具,yum其实是rpm的前端管理工具,能够从指定的服务器自动下载RPM包并安装,可以自动处理依赖性关系,并且一次性安装所有依赖的软件包。

yum命令的用法非常简单:yum [options] [command] [package …],主要有如下功能选项:

  • 显示仓库列表:  yum repolist [all|enabled|disabled]
  • 显示程序包:yum list [all | glob_exp1] [glob_exp2]或者yum list {available|installed|updates} [glob_exp1]
  • 安装程序包:yum install package
  • 升级程序包:yum update package
  • 卸载程序包:yum remove | erase package
  • 查看程序包信息:yum info  package
  • 构建本地缓存:yum makecache
  • 清理本地缓存:yum clean
  • 列出所有包组:yum grouplist
  • 显示指定包组详情:yum groupinfo group_name
  • 安装包组:yum groupinstall group_name
  • 卸载包组:yum groupremove group_name
  • 升级包组:yum groupupdate group_name
  • 安装本地程序包文件:yum localinstall rpmfile

虽然yum可以很方便的安装软件,但是yum严重依赖于yum仓库,如果仓库里面没有对应指定的软件,那么安装时不会成功的,因此我们在安装之前必须给yum配置好对应的软件仓库。yum仓库的位置及其相关的各种配置信息保存在yum的配置文件中,各仓库的定义主要在/etc/yum.repo.d/*.repo文件中。在此文件中主要要定义几个内容:

  1. [repositoryid]:对于当前系统的yum来说,此repositoryid用于唯一标识此repository指向,因此,必须唯一;
  2. name:当前仓库的描述信息;
  3. baseurl:指明仓库的访问路径,可以是ftp服务器、http服务器或者本地的目录;
  4. enabled:指明此仓库是否可被使用;
  5. gpgcheck:是否对程序包做校验;
  6. gpgkey:指明校验文件的路径;
  7. cost:指明当前仓库的访问开销,默认为1000;

因此如果要指定一个网络源仓库,则可以在/etc/yum.repo.d/路径下新建以.repo结尾的文件,文件内容如下(163仓库为例):

501

在实际的工作中,如果你作为一个企业的网络管理员,为了方便公司内部网络中的服务器安装软件,同时也为了节约网络带宽,通常需要在公司内部创建一个yum仓库,下面就谈谈如何创建本地yum仓库。

  1. 安装createrepo软件用于生成yum的软件元数据信息;
  2. 确定repository的输出方式:本地file的形式输出或者本地网络的方式输出;
  3. 在准备的目录下放置下载好的rpm程序包文件;
  4. 在此目录下运行createrepo命令;

通过以上步骤就已经完成yum仓库的创建了。

502

503504

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90805

(0)
虫草君虫草君
上一篇 2018-01-03
下一篇 2018-01-03

相关推荐

  • N22-第四周博客作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost ~]# ll -d  /etc/skel/drwxr-xr-x. 3 root root 74 3月&…

    Linux干货 2016-09-19
  • LVS负载均衡集群详解

    一、LVS概述  1.LVS:Linux Virtual Server          四层交换(路由):根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法);      …

    系统运维 2016-04-30
  • 考试题目

    1、  简述TCP三次握手四次挥手过程及各过程中客户端和服务器端的状态。 TCP三次握手,四次断开通过以下图示说明: 2、说说进程和线程的区别 (1)一个线程只能输入某一个进程,一个进程可以有多个线程。一个程序至少有一个进程,一个进程至少有一个线程。 (2)进程有独立的地址空间,线程没有独立的地址空间,进程内的多个线程共享进程的地址空间。 (3)线…

    Linux干货 2016-06-19
  • sed行编辑器与vim编辑器

    一、sed行编辑器   1、简介:sed的本身也是一个管道命令,可以分析标准输入,还可以将数据进行替换、删除、新增、选取特定行的功能   2、工作原理:sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”( pattern space),接着用sed命令处理缓冲区中的内容…

    Linux干货 2016-08-11
  • 初探linux

    计算机的组成及其功能: 存储器:    实现记忆功能的部件用来存放计算程序及参与运算的各种数据 运算器:    负责数据的算术运算和逻辑运算即数据的加工处理 控制器:    负责对程序规定的控制信息进行分析,控制并协调输入,输出操作或内存访问 输入设备:    实现计算程序和原始…

    Linux干货 2016-10-29
  • Linux系统上的人机交互

    众所周知,计算机上运行的数据流最后都会以二进制的方式流转,这对计算机来说确实没什么问题,但是对人类来说,这样的方式无疑太难理解,所以计算机通过转换,将二进制的0、1字符串转换成人们可以易于理解的字母和数字,来方便计算机与人类的沟通和交互。这样一来,人类可以读取和输入人类习惯的字母和数字;而计算机可以使用自己的0、1字符串接收任务和返回结果。然而,这一过程就少…

    Linux干货 2017-09-01