rpm 与 dpkg 用法比较
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 等等知名的开发商都是用这咚咚。
distribution 代表 | 软体管理机制 | 使用指令 | 线上升级机制(指令) |
Red Hat/Fedora | RPM | rpm, rpmbuild | YUM (yum) |
Debian/Ubuntu | DPKG | dpkg | APT (apt-get) |
以下整理列表来自Jamyy's Weblog :
安装
查询
移除
在Debian使用alien处理RPM套件
alien 可处理.deb、.rpm、.slp、.tgz 等档案格式, 进行转档或安装.
于Debian安装非Debian套件时,可使用alien进行安装.
安装alien套件: apt-get install alien
YUM
YUM(Yellow dog Updater, Modified )是Yellow Dog Linux开发的。 Yellow Dog Linux原本是一套完全源于Red Hat但运作于先前使用IBM PPC平台的MAC机器,原本以为这个版本已经消失,没想到最新消息是他们推出了在Sony PS3上面运作的版本。 CentOS及Fedora的基本预设安装中即将YUM列入其内。 如果没记错,要在Debian上使用YUM也是可以的。
使用方法:
注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.repo in /etc/yum.repos.d。 个人可视喜好决定。
参考文件:
目的 | rpm 用法 | dpkg 用法 |
安装指定套件 | rpm -i pkgfile.rpm | dpkg -i pkgfile.deb |
目的 | 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 (显示详细资讯) |
目的 | rpm 用法 | dpkg 用法 |
移除指定套件 | rpm -e softwarename | dpkg -r softwarename (会留下套件设定档) dpkg -P softwarename (完全移除) |
- 在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
- 编辑/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 [ softwarename2...] | 移除软体(保留设定档) |
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) |
- 编辑/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.....] | 移除已经安装的套件 |
- 鸟哥的Linux与ADSL私房菜: 简易APT/YUM伺服器设定
- Debian无痛起步法: 了解Debian系统的哲学
- Jamyy's Weblog: rpm vs. dpkg常用参数对照