设为首页 收藏本站
查看: 667|回复: 0

[经验分享] rpm与dpkg yum与apt-get详解,一看这个就知道这些个关系了

[复制链接]

尚未签到

发表于 2015-10-23 09:53:13 | 显示全部楼层 |阅读模式
Linux界的两大主流: RPM与DPKG

由于自由软体的蓬勃发展,加上大型Unix-Like 主机的强大效能,让很多软体开发者将他们的软体使用Tarball 来释出。 后来Linux 发展起来后,由一些企业或社群将这些软体收集起来制作成为distributions 以发布这好用的Linux 作业系统。 但后来发现到,这些distribution 的软体管理实在伤脑筋,如果软体有漏洞时,又该如何修补呢? 使用tarball 的方式来管理吗? 又常常不晓得到底我们安装过了哪些程式? 因此,一些社群与企业就开始思考Linux 的软体管理方式。

如同刚刚谈过的方式,Linux 开发商先在固定的硬体平台与作业系统平台上面将需要安装或升级的软体编译好, 然后将这个软体的所有相关档案打包成为一个特殊格式的档案,在这个软体档案内还包含了预先侦测系统与相依软体的脚本, 并提供记载该软体提供的所有档案资讯等。 最终将这个软体档案释出。 用户端取得这个档案后,只要透过特定的指令来安装,那么该软体档案就会依照内部的脚本来侦测相依的前驱软体是否存在,若安装的环境符合需求,那就会开始安装 ,安装完成后还会将该软体的资讯写入软体管理机制中,以达成未来可以进行升级、移除等动作呢。

目前在Linux 界软体安装方式最常见的有两种,分别是:

  • dpkg :
    这个机制最早是由Debian Linux 社群所开发出来的,透过dpkg 的机制, Debian 提供的软体就能够简单的安装起来,同时还能提供安装后的软体资讯,实在非常不错。 只要是衍生于Debian 的其他Linux distributions 大多使用dpkg 这个机制来管理软体的, 包括B2D, Ubuntu 等等。
  • RPM :
    这个机制最早是由Red Hat 这家公司开发出来的,后来实在很好用,因此很多distributions 就使用这个机制来作为软体安装的管理方式。 包括Fedora, CentOS, SuSE 等等知名的开发商都是用这咚咚。
如前所述,不论dpkg/rpm 这些机制或多或少都会有软体属性相依的问题,那该如何解决呢? 其实前面不是谈到过每个软体档案都有提供相依属性的检查吗? 那 么如果我们将相依属性的资料做成列表, 等到实际软体安装时,若发生有相依属性的软体状况时,例​​如安装A 需要先安装B 与C ,而安装B 则需要安装D 与E 时,那么当妳要安装A,透过相依属性列表,管理机制自动去取得B, C, D, E 来同时安装, 不就解决了属性相依的问题吗?

没错! 您真聪明! 目前新的Linux 开发商都有提供这样的『线上升级』机制,透过这个机制, 原版光碟就只有第一次安装时需要用到而已,其他时候只要有网路,妳就能够取得原本开发商所提供的任何软体了呢! 在dpkg 管理机制上就开发出APT 的线上升级机制,RPM 则依开发商的不同,有RedHat 系统的yum , SuSE 系统的Yast Online Update (YOU), Mandriva 的urpmi 软体等。
distribution 代表软体管理机制使用指令线上升级机制(指令)Red Hat/FedoraRPMrpm, rpmbuildYUM (yum)Debian/UbuntuDPKGdpkgAPT (apt-get)我们这里使用的是CentOS 系统嘛! 所以说: 使用的软体管理机制为RPM机制,而用来作为线上升级的方式则为yum ! 底下就让我们来谈谈RPM 与YUM 的相关说明吧!

RPM与DPKG
目前市面上大部分的Linux distro都是根基于Red Hat及Debian这两大厂牌的改装(SuSE是一个异类)​​。 因此在套件管理上,Red Hat的RPM与Debian的DPKG就成为Linux套件管理上的两大标准。

这边也不讨论类Unix作业系统在套件管理(软体的安装,移除,查询)上所持的哲学与一般人常用的MS Windows系列有很大的不同而衍生出的困难了,直接就这两个套件管理工具列出比较以利查询。

以下整理列表来自Jamyy's Weblog :

安装
目的rpm 用法dpkg 用法安装指定套件rpm -i pkgfile.rpmdpkg -i pkgfile.deb
查询
目的rpm 用法dpkg 用法显示所有已安装的套件名称rpm -qadpkg -l (小写L)显示套件包含的所有档案rpm -ql softwarename (小写L)dpkg -L softwarename显示特定档案所属套件名称rpm -qf /path/to/filedpkg -S /path/to/file查询套件档案资讯rpm -qip pkgfile.rpm (显示套件资讯)
rpm -qlp pkgfile.rpm (小写L,显示套件内所有档案)dpkg -I pkgfile.deb (大写I )
dpkg -c pkgfile.deb显示指定套件是否安装rpm -q softwarename (只显示套件名称)
rpm -qi softwarename (显示套件资讯)dpkg -l softwarename (小写L,只列出简洁资讯)
dpkg -s softwarename (显示详细资讯)
dpkg -p softwarename (显示详细资讯)
移除
目的rpm 用法dpkg 用法移除指定套件rpm -e softwarenamedpkg -r softwarename (会留下套件设定档)
dpkg -P softwarename (完全移除)
在Debian使用alien处理RPM套件
alien 可处理.deb、.rpm、.slp、.tgz 等档案格式, 进行转档或安装.
于Debian安装非Debian套件时,可使用alien进行安装.
安装alien套件: apt-get install alien


  • 在Debian安装RPM套件: alien -i quota-3.12-7.i386.rpm
  • 制作成deb的套件格式: alien -d quota-3.12-7.i386.rpm
  • 制作成rpm的套件格式: alien -r quota_3.12-6_i386.deb

APT与YUM
虽然RPM与DPKG有效的解决的软体的安装,移除与查询的需求,但是在Linux上的套件管理还有一个很大的问题必须解决,就是各软体间的相依性(dependency)。 RPM与DPKG只能做到检查相依性,在安装或移除时告知相依性的不满足,皆下来就需要使用者自行去找出所需的套件来安装。 这样的确是有点不方便,因此产生了前端工具软体-APT及YUM。


APT
Debian开发,目前也有porting到其他版本,要在Red Hat系的Fedora或CentOS使用也是可以的。
使用方法:

  • 编辑/etc/apt/sources.list ,设定所选用的版本,如stable,testing,unstable及套件来源站台或装置。 档案详细设定请参考: 了解Debian系统的哲学
  • 基本指令:
apt-setup设定/etc/apt/souces.listapt-get update软体资料库同步apt-get install softwarename1 [softwarename2.....]安装软体apt-get remove softwarename 1 [softwarename 2...]移除软体(保留设定档)apt-get --purge remove softwarename 1 [softwarename 2...]移除软体(不保留设定档)apt-cache search softwarename列出所有sofrwarename的套件apt-upgrade [softwarename 1 softwarename2...]更新套件,不指定套件名则更新所有可更新的套件apt-get clean(autoclean)删除系统暂存的deb(autoclean只会将比目前系统旧版的套件删除)apt-get dist-upgrade转换系统的版本(需在/etc/apt/sources.list指定stable,testing或unstable)


YUM
YUM(Yellow dog Updater, Modified )是Yellow Dog Linux开发的。 Yellow Dog Linux原本是一套完全源于Red Hat但运作于先前使用IBM PPC平台的MAC机器,原本以为这个版本已经消失,没想到最新消息是他们推出了在Sony PS3上面运作的版本。 CentOS及Fedora的基本预设安装中即将YUM列入其内。 如果没记错,要在Debian上使用YUM也是可以的。
使用方法:

  • 编辑/etc/yum.conf档案详细设定请参考: 简易APT/YUM伺服器设定注1
  • 基本指令: (如果yum在工作过程中需要使用者回应,可加上-y参数直接回答yes )
yum install softwarename1 [softwarename2.....]安装套件yum update [softwarename 1 softwarename2...]更新套件,不指定套件名则更新所有可更新的套件yum list列出目前在yum server 上面有的套件yum info类似rpm -qiyum clean移除下载到本机的packages 或headersyum remove softwarename1 [softwarename2.....]移除已经安装的套件
注1:Red Hat近年来致力于将一个设定档切割成很多小设定档。 以yum.conf为例,Red Hat将其分割成xxx.repo档放置在/etc/yum.repos.d这个目录下。 并在yum.conf档里增加一行注解: PUT YOUR REPOS HERE OR IN separate files named file.repoin /etc/yum.repos.d。 个人可视喜好决定。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-129849-1-1.html 上篇帖子: RedHat6.0 ES 本地yum服务器搭建配置 下篇帖子: 搭建内网yum服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表