dpkg 和 rpm两大包安装管理工具

一般来说著名的 Linux 系统基本上分两大类:

  1. RedHat 系列:Redhat、Centos、Fedora 等
  2. Debian 系列:Debian、Ubuntu 等

Dpkg (Debian系):Ubuntu 
RPM (Red Hat系):CentOS、Fedora

RedHat 系列

  • 常见的安装包格式 rpm 包,安装rpm包的命令是“rpm -参数”
  • 包管理工具 yum
  • 支持 tar 包

Debian系列

  • 常见的安装包格式 deb 包,安装 deb 包的命令是“dpkg -参数”
  • 包管理工具 apt-get
  • 支持 tar 包

tar 只是一种压缩文件格式,所以,它只是把文件压缩打包而已。

rpm 相当于windows中的安装文件,它会自动处理软件包之间的依赖关系。优缺点来说,rpm一般都是预先编译好的文件,它可能已经绑定到某种CPU或者发行版上面了。

列出系统中已安装的所有套件:

dkpg -l
 
 
  • 1
  • 1
rpm -qa  
 
 
  • 1
  • 1
yum list installed


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/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.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)

 

 

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.....]移除已经安装的套件

注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。 个人可视喜好决定。

### 使用 `dpkg` 安装 RPM 包的解决方案 在 Linux 系统中,`dpkg` 是 Debian 及其衍生发行版(如 Ubuntu)中的软件包管理工具,而 RPM 则是 Red Hat 及其衍生发行版(如 CentOS Fedora)使用的软件包格式。这种格式并不兼容,因此无法直接使用 `dpkg` 来安装 RPM 包。然而,可以通过一些间接的方法实现跨格式安装。 #### 方法一:将 RPM 包转换为 DEB 包 可以使用工具 `alien` 将 RPM 包转换为 DEB 包,从而使其能够在基于 Debian 的系统上被 `dpkg` 正常识别安装。 ##### 安装 `alien` 首先需要确保系统已安装 `alien` 工具: ```bash sudo apt-get update sudo apt-get install alien ``` ##### 转换过程 使用 `alien` 将 RPM 包转换为 DEB 包: ```bash alien -d your_package.rpm ``` 参数说明: - `-d`:生成适用于当前系统的 DEB 包。 - `your_package.rpm`:要转换的目标 RPM 包名称。 完成后会在当前目录生成对应的 `.deb` 文件[^1]。 ##### 安装转换后的 DEB 包 一旦成功生成 DEB 包,即可使用 `dpkg` 进行安装: ```bash sudo dpkg -i your_converted_package.deb ``` 如果遇到依赖项缺失的情况,可使用以下命令解决: ```bash sudo apt-get install -f ``` #### 方法二:手动解压 RPM 并部署到系统 当无法使用 `alien` 或其他工具时,可以选择手动解压 RPM 包并将内容复制到适当的位置。 ##### 解压 RPMRPM 包本质上是一种压缩存档文件,可通过以下步骤将其内容提取出来: ```bash rpm2cpio your_package.rpm | cpio -idmv ``` 这一步会将 RPM 包的内容释放到当前工作目录下的相应路径中[^4]。 ##### 手动部署 根据解压后的内容结构,将文件移动到目标系统上的正确位置。通常需要注意以下几个方面: - **可执行文件**:应放置于 `/usr/bin/`, `/usr/local/bin/` 等标准目录。 - **配置文件**:通常位于 `/etc/` 下面。 - **库文件**:需放入 `/lib/`, `/usr/lib/`, 或 `/usr/local/lib/` 中。 - **文档其他资源**:按照惯例存储在 `/usr/share/doc/` 或类似的地方。 最后还需确认所有权限设置恰当,并确保服务能够正常启动运行。 --- ### 注意事项 无论是采用自动化的转换工具还是纯手工操作,在处理不同平台间的软件包移植过程中都需要格外留意潜在的风险因素,比如版本差异、依赖关系冲突以及架构适配性等问题。建议事先做好充分准备并进行全面测试后再应用于生产环境之中。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值