热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Linux套件升级--RPM与Tarball

文章标题:Linux套件升级--RPM与Tarball。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  为何需要升级套件
  这真是一个很有趣的课题,为何需要升级套件?通常我们升级的原因主要有三个:
  1. 需要新的功能,所以需要安装新的套件;
  2. 旧版本的套件上面可能有安全上的顾虑,所以需要更新到新版的套件;
  3. 旧版的套件执行效能不彰,或者执行的能力不能让管理者满足。
  尤其是第二点,当一个套件有安全上的顾虑时,千万不要怀疑,赶紧更新套件吧!那幺更新的方法有哪些呢?基本上就是两种啦:
  1. 直接以 binary 的 source code 方法安装:就是以 Tarball 的方式来安装;
  2. 以已经套件档案,利用套件管理程式(package manager)如 RPM(Red Hat), apt(Mandrake), pkg(Sun Unix), dpkg(Dabien) 等方式来安装。
  这两种方法是各有优缺点啦,我们这里想要来谈一谈 RPM 与 Tarball 的安装方式了!
  
  什幺是 RPM 、 SRPM ?
  RPM 全名是『 RedHat Package Manager 』简称则为 RPM 啦!顾名思义,当初这个套件管理的程式是由 Red Hat 这家公司发展出来的,但其实在很多的其他套件也有相类似的套件管理程式。不过由于 RPM 使用上很方便,所以就成了目前最热门的套件管理程式啦!那幺什幺是 RPM 呢?说的简单一点, RPM 是以一种资料库记录的方式来将你所需要的套件安装到你的 Linux 主机的一套管理程式。他最大的特点就是将您要安装的套件先包装好了,透过包装好的套件里头预设的资料库记录,记录这个套件要安装的时候必须要的相依属性模组(就是你的 Linux 主机需要先存在的几个必须的套件),当安装在你的 Linux 主机时, RPM 会先依照套件里头的纪录资料查询 Linux 主机的相依属性套件是否满足,若满足则予以安装,若不满足则不予安装。那幺安装的时候就将该套件的资讯整个写入 RPM 的资料库中,以便未来的查询、验证与反安装!
  这样一来的优点是:
  1. 由于已经打包完毕,所以安装上很方便;
  2. 由于套件的资讯都已经记录在 Linux 主机的资料库上,很方便查询、升级与反安装;
  但是这也造成很大的困扰,由于 RPM 程式是已经包装好的资料,也就是说,里面的资料已经都『编译完成』了!所以,安装的时候一定需要当初安装时的主机环境才能安装,也就是说,当初建立这个套件的安装环境必须也要在你的主机上面出现才行!例如 rp-pppoe 这个 ADSL 拨接套件,他必须要在 ppp 这个套件存在的环境下才能进行安装!如果你的主机并没有 ppp 这个套件,那幺很抱歉,除非您先安装 ppp 否则 rp-pppoe 就是不让你安装的(当然您可以强制安装,但是通常都会有点问题发生就是了!)
  这样可以发现他的缺点是:
  1. 安装的环境必须与打包时的环境需求一致或相当;
  2. 需要满足套件的相依属性需求;
  3. 反安装时需要特别小心,最底层的套件不可先移除,否则可能造成整个系统的问题!
  那怎幺办?呵呵!还好,还有 SRPM 这个东西! SRPM 是什幺呢?他也是一种 RPM 啦!但是由于里面连同当初包装之前的原始码都在里头,所以可以进行重新编译的动作。通常 SRPM 的附档名是 ****.src.rpm 这一种档案格式。由于 SRPM 包含了原始码,所以在安装之前则必须重新的编译建立起包装的资讯档案套件才行!当然???绻?诒嘁氲墓?讨蟹⑸?宋侍猓?部梢越逵衫锿返脑?悸敫??葱拚?侍獾乃?谀兀?br>  
  什幺是 i386, i586, i686, noarch
  好啦!现在我们已经知道 RPM 与 SRPM 的格式了,分别为:
   
  这样子可以很清楚的发现该套件的名称、版本资讯、打包次数与操作的硬体平台!好了,来谈一谈每个不同的地方吧:
  · 套件名称:当然就是每一个套件的名称了!
  · 版本资讯:每一次更新版本就需要有一个版本的资讯,否则如何知道这一版是新是旧?
  · 释出版本次数:也就是编译的次数啦!那么为何需要重复的编译呢?这是由于同一版的套件中,可能由于有某些 bug 或者是安全上的顾虑,所以必须要重新设定当初打包时候的设定参数,设定完成之后重新编译并打包成 RPM 档案!因此就有不同的打包数出现了!
  · 操作硬体平台:这是个很好玩的地方,由于 RPM 可以适用在不同的操作平台上,但是由于不同的平台设定的参数还是有所差异性!所以就有所谓的 i386, i586, i686 与 noarch 等的档案名称出现了!
  o i386:几乎适用于所有的 x86 平台,不论是旧的 pentum 或者是新的 pentum-III 等等,都可以正常的工作!那个 i 指的是 Intel 相容的 CPU 的意思,至于 386 不用说,就是 CPU 的等级啦!
  o i586, i686:就是比较高阶的 CPU 等级!
  o noarch:就是没有任何硬体等级上的限制。
  需要额外说明的是, i386 的档案可以在任何的机器上面安装,不论是 586 或者是 686 的机器,但是 i386 则不一定可以使用于 586 或者是 686 的硬体上面,另外,在 686 的机器上使用 i686 的档案会比使用 i386 的档案在执行上,效能可能比较好一些!无论如何,使用 i386 应该就是比较没有问题的啦!另外,由于不同的 distirbution 会有不同的环境与函式库,所以在 i386 之后也有可能会额外再加上该套件的简写!
  好了!接下来我们来谈一谈安装的时候所需要使用到的目录!
  
  SRPM 与 RPM 工作时候所需要的安装目录
  由于 SRPM 还需要经过一个编译的程序,所以我们就先从 SRPM 的工作情况说起吧!好了,先捉一个档案回去试试看: rp-pppoe-2.6-5.src.rpm!
  SRPM 的编译过程:
  刚刚提到 SRPM 里头含有的是未经编译的原始码,所以我们需要将 SRPM 进行编译打包的动作!那么编译是在哪里进行呢?由于编译的时候会将原始码解压缩出来,并且将附有的参数控制选项也同时的解开,所以就有一些资料会出现了,那么这些资料放在哪里呢?你可以到你的 /usr/src/redhat 里头去看一看呦!先执行:
  rpm -i rp-pppoe-2.6-5.src.rpm 将资料解开到 /usr/src/redhat 当中!
  · /usr/src/redhat/SPEC:这个目录当中放置的是该套件的设定档,例如这个套件的资讯参数、设定项目等等都放置在这里;
  · /usr/src/redhat/SOURCE:这个目录当中放置的是该套件的原始档(*.tar.gz的档案)以及 config 这个设定档;
  · /usr/src/redhat/BUILD:在编译的过程中,有些暂存的资料都会放置在这个目录当中;
  · /usr/src/redhat/RPMS:经过编译之后,并且顺利的编译成功之后,将打包完成的档案放置在这个目录当中。里头有包含了 i386, i586, i686, noarch.... 等等的次目录。
  此外,在编译的过程当中,可能会发生不明的错误,或者是设定的错误,这个时候就会在 /tmp 底下产生一个相对应的错误档,您可以根据该错误档进行除错的工作呢!等到所有的问题都解决之后,也编译成功了,那么刚刚解压缩之后的档案,就是在 /usr/src/redhat/SPEC, SOURCE, BUILD 等等的档案都会被杀掉,而只剩下放置在 /usr/src/redhat/RPMS 底下的档案了!
  RPM 的安装过程:
  RPM 在安装的时候,会先去读取 套件 内的设定参数内容,就是刚刚我们在 /usr/src/redhat/SPEC 的相关资讯啦!然后将该资料用来比对 Linux 系统的环境,如果环境相符就予以安装,如果不符就会显示出不符合的内容所在!等到安装完毕之后, rpm 就会将套件的资讯写入:/var/lib/rpm 这个目录中去!所以,往后您在进行查询的时候或者是预计要升级的时候,相关的资讯就会由 /var/lib/rpm 这个目录的内容资料来提供???br>  
  RPM 的指令使用:安装、升级与更新、查询、验证、反安装与重建资料库
  RPM 的功能相当的丰富,我们一项一项来说明吧!
  · 安装:
  从无到有就是安装啦!那么安装的方式为何呢?若是 RPM 则使用 ivh 啦!如果是 SRPM 就使用 rebuild 或是 recompiler ??
   
  
  o --rebuild:这个参数会将后面的 SRPM 进行『编译』与『打包』的动作,但是并没有安装,当您使用 --rebuild 的时候,最后通常会发现一行字体:
  Wrote: /usr/src/redhat/RPMS/i386/rp-pppoe-2.6-5.i386.rpm
  这个就是编译完成的 RPM 档案??∧敲凑飧龅蛋妇涂梢杂美窗沧袄玻“沧暗氖焙蚯爰泳?月肪独窗沧凹纯桑
  o --recompile:这个动作会直接的『编译』『打包』并且『安装』??
  o -ivh:就是用来安装 RPM 的参数而在这个参数之下,由于会有一些『相依属性』的问题,或者是曾经安装过的档案的问题,所以您可以再加以下的参数来『强制』安装:
  § --nodeps:不考虑相依属性的关系,给他强制的安装下去;
  § --replacepkgs:如果这个套件之前安装过,您想要覆盖这个套件,那么不需要反安装后再安装,可以直接加上 --replacepkgs 强制覆盖;
  § --replacefiles:那么如果这个套件安装完毕之后,曾经被你修改过档案呢?就是安装过程中会出现『confilcting files 』的话,那么直接以 --replacefiles 覆盖掉这种档案吧!
   
  § 升级:
  使用 RPM 来升级真是太简单了!就以 Uvh 来升级即可!但是在比较大量的升级版本中,使用 Fvh 则是比较好的作法。但是需要注意的是,如果您使用的是 Uvh ,偏偏您的机器上尚无这一个套件,那么很抱歉,该套件并不会被安装在您的 Linux 主机上面,所以请重新以 ivh 来安装吧!
   
  · 注意的是, Uvh 是仅升级您所写入的套件,至于 Fvh 则是『仅升级在您的系统里面存在的套件』,所以有的朋友在大量的进行套件版本修补的时候:
  o 先到 Red Hat 的 errata 网站上捉下来最新的 i386 档案;
 
推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linuxchmod目录权限命令图文详解在Linux文件系统模型中,每个文件都有一组9个权限位用来控制谁能够读写和执行该文件的内容。对于目录来说,执行位的作用是控制能否进入或者通过 ... [详细]
  • 本文介绍了使用CentOS7.0 U盘刻录工具进行安装的详细步骤,包括使用USBWriter工具刻录ISO文件到USB驱动器、格式化USB磁盘、设置启动顺序等。通过本文的指导,用户可以轻松地使用U盘安装CentOS7.0操作系统。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文主要讨论了在xps15上安装双系统win10和MacOS后,win10无法正常更新的问题。分析了可能的引导问题,并提供了解决方法。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 树莓派Linux基础(一):查看文件系统的命令行操作
    本文介绍了在树莓派上通过SSH服务使用命令行查看文件系统的操作,包括cd命令用于变更目录、pwd命令用于显示当前目录位置、ls命令用于显示文件和目录列表。详细讲解了这些命令的使用方法和注意事项。 ... [详细]
author-avatar
滚猪儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有