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 与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.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使用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.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 softwarename 2...] 更新套件,不指定套件名则更新所有可更新的套件 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 softwarename 2...] 更新套件,不指定套件名则更新所有可更新的套件 yum list 列出目前在yum server 上面有的套件 yum info 类似rpm -qi yum clean 移除下载到本机的packages 或headers yum 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.repo in /etc/yum.repos.d。 个人可视喜好决定。
参考文件:
- 鸟哥的Linux与ADSL私房菜: 简易APT/YUM伺服器设定
- Debian无痛起步法: 了解Debian系统的哲学
- Jamyy's Weblog: rpm vs. dpkg常用参数对照
来源: http://blog.roodo.com/schonrosemary/archives/4362693.html
相关推荐
### Linux下的rpm详细用法 #### 一、什么是rpm? **rpm** 是 **Red Hat ...rpm 作为 Linux 系统中的一个重要工具,掌握了它的使用方法对于日常系统管理来说非常关键。希望本文能够帮助您更好地理解和运用 rpm 工具。
### Linux下查看YUM/RPM/DPKG某软件是否已安装的方法 #### 前言 在Linux系统中,软件的安装方式多种多样,包括RPM包、DEB包、YUM安装以及手动编译安装等。对于系统管理员来说,了解如何检查这些不同方式安装的软件...
tar 包是使用 UNIX 系统的打包工具 tar 打包的,rpm 包是 Redhat Linux 提供的一种包封装格式,dpkg 包是 Debain Linux 提供的一种包封装格式。这些安装包的命名也有一定的规律,遵循名称-版本-修正版-类型的格式。 ...
安装方法因系统而异,.deb文件通常用`dpkg`或`apt`安装,.rpm文件则使用`rpm`或`yum`。此外,还有.tar.gz格式的源码包,需要编译安装。 4. **deb包**: Debian和其衍生版如Ubuntu使用.deb包管理系统。通过`dpkg`命令...
《g++ RPM安装包详解与应用》 在编程领域,C++是一种广泛应用的高级编程语言,而g++是GCC(GNU Compiler Collection)的一部分,是C++的编译器。对于Linux用户来说,g++是构建C++程序的必备工具。然而,在没有网络...
本文将详细介绍Linux环境下三种常见的软件安装包格式:tar包、rpm包以及dpkg包,并演示它们的安装与卸载过程。 #### 二、Linux应用软件安装包解析 Linux下的应用软件通常采用以下三种类型的安装包: 1. **tar包**...
本文主要聚焦于Linux下安装RPM包的方法,同时也简要提及了其他类型的软件安装方式。RPM(Red Hat Package Manager)是一种广泛用于Fedora、CentOS、RHEL等基于Red Hat的Linux发行版的软件包管理器。RPM包提供了方便...
在Linux世界里,Ubuntu是一个基于Debian的广泛使用的操作系统,而RPM(Red Hat Package Manager)则是Red Hat及其衍生系统如CentOS、Fedora等的主要软件包管理器。由于Ubuntu使用的是dpkg和apt作为其软件包管理系统...
在Linux系统中,安装软件的过程可能会因不同的发行版而略有差异,但主要的安装包类型有tar包、rpm包和dpkg包。本文将详细解释这些安装包的特性以及对应的安装和卸载方法。 首先,tar包(如software-1.2.3-1.tar.gz...
与rpm包类似,卸载使用`dpkg --remove 软件名`。 在Linux中,安装软件的步骤通常包括以下部分: - **下载软件包**:根据所需软件和所使用的Linux发行版,从官方网站或第三方软件仓库下载相应的安装包。 - **切换到...
【Linux系统下的MegaCli使用方法】 MegaCli是一款由LSI公司提供的命令行工具,用于管理和监控基于LSI(现已被Avago收购)MegaRAID控制器的RAID阵列。它允许用户在Linux环境下对RAID配置进行高级操作,如查看RAID...
在Linux系统中,安装软件的方式相对于Windows有所不同,但同样提供了便捷的方法。Linux主要有两种常见的软件包格式:RPM(Red Hat Package Manager)和deb(Debian Package)。这两种格式各有其特点,同时也有一些...
### Linux下使用Alien安装APM的方法 #### 一、了解Alien工具 在开始之前,我们先来了解一下Alien这个工具。Alien是一款用于在不同的Linux发行版之间转换软件包格式的工具,它可以将一种类型的软件包转换为另一种...
`.deb`包是包含软件及其元数据的归档文件,类似于其他Linux发行版中的`.rpm`包。 在离线安装Nginx之前,确保您已经下载了所有必要的`.deb`文件,包括Nginx本身以及其所有依赖项。这通常包括`libssl-dev`(用于SSL/...
在Ubuntu 20.04 Linux操作系统中安装LabVIEW 2017需要遵循特定的步骤,因为LabVIEW主要为Windows设计,但在Linux上可以通过使用`alien`工具将RPM包转换为DEB包来实现安装。以下是详细的过程: 首先,确保你有一个...
其操作方法与RPM类似,但更注重于依赖关系的管理和版本控制。 1. **安装软件**:使用命令`dpkg -i 包名称.deb`来安装软件。 2. **查询软件状态**:执行`dpkg -l 软件名称`查看软件安装状态。 3. **卸载软件**:通过...
Linux 操作系统提供了多种方法来安装软件,包括 RPM 包安装、DEB 包安装、tar.gz 源代码包安装和 tar.bz2 源代码包安装等。下面将详细介绍每种方法的安装步骤和参数说明。 一、RPM 包安装方式 RPM(Red Hat ...
Linux环境下还有其他多种软件管理工具,例如Debian系的APT(Advanced Package Tool),以及使用较多的Dpkg等。每种工具都有其特定的文件格式和管理方式,例如RPM的包格式通常是以 rpm 为后缀的文件。 6. 文档内容的...
QQ for Linux是一款专为Linux操作系统设计的即时通讯软件,它为Linux用户提供了与Windows和Mac平台相似的功能,如聊天、群聊、视频通话等。这款软件的最新版本为"QQ for Linux.zip",区别于以往基于Wine环境的模拟...