Linux之包管理工具总结[RPM/DPKG]-[YUM/APT]
0.关键词解释
RPM:Red Hat Package Manager(原名),RPM Package Manager(现名,递归缩写,类似于GNU的命名);
解释:RPM软件包管理器
YUM:Yellow dog Updater, Modified(现名);
解释:Shell前端(作为RPM的前端)软件包管理器 。一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。[百科]
--------------------------------------------
DPKG:Debian Packager(现名)
解释:为 “Debian” 专门开发的套件管理系统,方便软件的安装、更新及移除,是Debian软件包管理器的基础 。
所有源自“Debian”的“Linux ”发行版都使用 “dpkg”,例如 “Ubuntu”、“Knoppix ”等。
dpkg是Debian软件包管理器的基础,它被伊恩·默多克创建于1993年。
dpkg与RPM十分相似,同样被用于安装、卸载和供给.deb软件包相关的信息。
dpkg本身是一个底层的工具。上层的工具,如APT,被用于从远程获取软件包以及处理复杂的软件包关系。
“dpkg”是“Debian Package”的简写。[百科]
APT:Advanced Packaging Tool(现名)
解释:Advanced Packaging Tool(apt),前端(作为DPKG 的前端)包管理工具,是Linux下的一款安装包管理工具,是一个客户/服务器系统。
Debian GNU/Linux 是Linux APT的缔造者。
初衷是利用工具来解决软件安装时候的依赖性问题。
其工作原理大致为:用户安装Linux APT客户端工具,查寻APT服务器端的资料库(repositories)上的RPM软件包信息,并分析软件包之间的依赖性然后下载并进行安装。
1. 前世今生谈起源
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 则依开发商的不同,有Red Hat 系统的yum , SuSE 系统的Yast Online Update (YOU),Mandriva 的urpmi 软体等。
distribution 代表 | 软体管理机制 | 使用指令 | 线上升级机制(指令) |
Red Hat/Fedora | RPM | rpm, rpmbuild | YUM (yum) |
Debian/Ubuntu | DPKG | dpkg | APT (apt-get) |
以CentOS为例: 使用的软体管理机制为RPM机制,而用来作为线上升级的方式则为yum !
RPM与DPKG
目前市面上大部分的Linux distro都是根基于Red Hat及Debian这两大厂牌的改装(SuSE是一个异类)。 因此在套件管理上,Red Hat的RPM与Debian的DPKG就成为Linux套件管理上的两大标准。
这边也不讨论类Unix作业系统在套件管理(软体的安装,移除,查询)上所持的哲学与一般人常用的MS Windows系列有很大的不同而衍生出的困难了,直接就这两个套件管理工具列出比较以利查询。
2.使用
2.1 安装
目的 | rpm 用法 | dpkg 用法 |
安装指定套件 | rpm -i pkgfile.rpm | dpkg -i pkgfile.deb |
2.2 查询
目的 | rpm 用法 | dpkg 用法 |
显示所有已安装的套件名称 | rpm -qa | dpkg -l (小写L) |
显示套件包含的所有档案 | rpm -ql softwarename (小写L) | dpkg -L softwarename |
显示特定档案所属套件名称 | rpm -qf /path/to/file | dpkg -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 (显示详细资讯) |
2.3 转换套件
- 在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
- 在Debian使用alien处理RPM套件
alien 可处理.deb、.rpm、.slp、.tgz 等档案格式, 进行转档或安装.于Debian安装非Debian套件时,可使用alien进行安装.安装alien套件: apt-get install alien
2.4 APT与YUM
虽然RPM与DPKG有效的解决的软体的安装,移除与查询的需求,但是在Linux上的套件管理还有一个很大的问题必须解决,就是各软体间的相依性(dependency)。 RPM与DPKG只能做到检查相依性,在安装或移除时告知相依性的不满足,皆下来就需要使用者自行去找出所需的套件来安装。 这样的确是有点不方便,因此产生了前端工具软体- APT及YUM。
2.4.1 APT
Debian开发,目前也有porting到其他版本,要在Red Hat系的Fedora或CentOS使用也是可以的。
使用方法:
编辑/etc/apt/sources.list ,设定所选用的版本,如stable,testing,unstable及套件来源站台或装置。 档案详细设定请参考: 了解Debian系统的哲学
基本指令:
apt-setup | 设定/etc/apt/souces.list |
apt-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) |
2.4.2 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 -qi |
yum clean | 移除下载到本机的packages 或headers |
yum remove softwarename1 [softwarename2.....] | 移除已经安装的套件 |
3.引用文献与致谢
首先非常非常感谢原文博主的深刻见解和分享,终于明白几大包管理工具之间的关系和作用,在以后安装的时候,也更加通透了!
1.[rpm与dpkg yum与apt-get详解,一看这个就知道这些个关系了](侧重原理)http://blog.csdn.net/baixiaoshi/article/details/43529649
2.[关于ubuntu安装软件的问题:apt-get和dpkg区别?]https://zhidao.baidu.com/question/540410059.html
3.[Ubuntu 软件包管理]https://www.cnblogs.com/chenbeibei/p/7231779.html
4.[包管理系统指南](侧重命令使用)http://wiki.ubuntu.org.cn/%E5%8C%85%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F%E6%8C%87%E5%8D%97
Linux之包管理工具总结[RPM/DPKG]-[YUM/APT]的更多相关文章
- ubuntu软件管理工具的使用——dpkg和apt
deb.rpm.tar.gz三种Linux软件包的区别在哪里呢,这种区别可能使安装进行不下去,那么我们应该下载什么格式的包呢?下面具体讲解一下. rpm包是在Redhat.Suse和Fedora可以直 ...
- CentOS系统程序包管理器【rpm、yum】
将编译好的文件打包成一个或有限的几个文件,可用于实现便捷的安装.卸载.升级.查询,校验等程序管理. centos常用的程序管理器有rpm和yum rpm: redhat package manager ...
- Linux RPM、YUM、APT包管理工具
⒈rpm包的管理 1)介绍 rpm是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有.RPM扩展名的文件,RPM是RedHat Package Manager(RedH ...
- Linux rpm包管理工具
1.什么是rpm包 是一种编译好的二进制软件包,安装速度快. 2.rpm包命名 el6:软件包用于在Red Hat 6.x, CentOS 6.x, and CloudLinux 6.x进行安装 el ...
- Linux包管理工具分析
转自:http://blog.csdn.net/carolzhang8406/article/details/14198219 在正式进入讨论之前,先贴几条非常有用的link: linux 发行版比较 ...
- Linux程序包管理rpm与yum
Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...
- Linux服务器中安装python包管理工具pip
pip是python的包管理工具,python的强大之处除了在于语法的简练,还有就是对众多的库支持了. 1.下载pip包管理工具 链接地址:https://pypi.python.org/pypi/p ...
- linux--软件包管理工具
linux平台软件包管理: RPM/DPKG 两大阵营简介 在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM ...
- Linux对包管理阐述
Centos/Redhat/Fedora的软件包,都是rpm后缀的文件.包管理器rpm(Redhat packages manager) linux的哲学思想是简单命令解决复杂任务,因此每个软件的功 ...
随机推荐
- python之Counter类:计算序列中出现次数最多的元素
Counter类:计算序列中出现次数最多的元素 from collections import Counter c = Counter('abcdefaddffccef') print('完整的Cou ...
- fatal error: matio.h: No such file or directory
http://blog.csdn.net/zziahgf/article/details/72900948 $ sudo apt-get install libmatio-dev 或源码安装: # 下 ...
- pgm14
这部分讨论在有数据缺失情况下的 learning 问题,这里仍然假定了图结构是已知的. 首先需要讨论的是为什么会缺失,很多情况下缺失并不是“随机”的:有的缺失是人为的,那么某些情况下缺失的可以直接补上 ...
- 洛谷P3868 [TJOI2009]猜数字(中国剩余定理,扩展欧几里德)
洛谷题目传送门 90分WA第二个点的看过来! 简要介绍一下中国剩余定理 中国剩余定理,就是用来求解这样的问题: 假定以下出现数都是自然数,对于一个线性同余方程组(其中\(\forall i,j\in[ ...
- <? extends T>和<? super T>的理解
背景:对泛型中使用super和extends关键字进行分析总结. 问题: public class TestExtend { public static void main(String[] args ...
- Java:判断当前操作系统界面采用的主题是windows经典样式还是xp样式
想起两三年前,发现写Java界面的时候,如果将当前界面的layout设为null,由于windows的不同主题界面下,标题栏的高度不一致,导致当前界面表现也不一致. 当时就想找到一个办法先判断当前用户 ...
- hashlib模块(二十八)
# 1.什么叫hash:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算法接受传入的 ...
- 洛谷 P1020 导弹拦截(dp+最长上升子序列变形)
传送门:Problem 1020 https://www.cnblogs.com/violet-acmer/p/9852294.html 讲解此题前,先谈谈何为最长上升子序列,以及求法: 一.相关概念 ...
- 【codeforces】【Round#523D】TV shows
题意:n个节目,每个节目的播放时间为[li,ri],你需要选择一些电视机全部播放这些节目,一台电视机不能同时播放多个节目,选择一个新的电视机代价为x , 如果某台电视机的使用时间为[Li,Ri]需要付 ...
- Git与GitHub的基本使用
Git与GitHub的基本使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Git的基本使用 1.版本库创建 a>.什么是版本库呢 版本库又名仓库,英文名reposit ...