Alien 魔法:RPM 和 DEB 互转

作者: Gabriel Cánepa 译者: LCTT joeren

| 2015-08-31 10:45   评论: 6 收藏: 10

正如我确信,你们一定知道Linux下的多种软件安装方式:使用发行版所提供的包管理系统(aptitude,yum,或者zypper,还可以举很多例子),从源码编译(尽管现在很少用了,但在Linux发展早期却是唯一可用的方法),或者使用各自的低级工具dpkg用于.deb,以及rpm用于.rpm,预编译包,如此这般。

使用Alien将RPM转换成DEB以及将DEB转换成RPM

在本文中,我们将为你介绍alien,一个用于在各种不同的Linux包格式相互转换的工具,其最常见的用法是将.rpm转换成.deb(或者反过来)。

如果你需要某个特定类型的包,而你只能找到其它格式的包的时候,该工具迟早能派得上用场——即使是其作者不再维护,并且在其网站声明:alien将可能永远维持在实验状态。

例如,有一次,我正查找一个用于喷墨打印机的.deb驱动,但是却没有找到——生产厂家只提供.rpm包,这时候alien拯救了我。我安装了alien,将包进行转换,不久之后我就可以使用我的打印机了,没有任何问题。

即便如此,我们也必须澄清一下,这个工具不应当用来转换重要的系统文件和库,因为它们在不同的发行版中有不同的配置。只有在前面说的那种情况下所建议的安装方法根本不适合时,alien才能作为最后手段使用。

最后一项要点是,我们必须注意,虽然我们在本文中使用CentOS和Debian,除了前两个发行版及其各自的家族体系外,据我们所知,alien可以工作在Slackware中,甚至Solaris中。

步骤1:安装Alien及其依赖包

要安装alien到CentOS/RHEL 7中,你需要启用EPEL和Nux Dextop(是的,是Dextop——不是Desktop)仓库,顺序如下:

  1. # yum install epel-release

启用Nux Dextop仓库的包的当前最新版本是0.5(2015年8月10日发布),在安装之前你可以查看http://li.nux.ro/download/nux/dextop/el7/x86_64/上是否有更新的版本。

  1. # rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
  2. # rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

然后再做,

  1. # yum update && yum install alien

在Fedora中,你只需要运行上面的命令即可。

在Debian及其衍生版中,只需要:

  1. # aptitude install alien

步骤2:将.deb转换成.rpm包

对于本次测试,我们选择了date工具,它提供了一系列日期和时间工具用于处理大量金融数据。我们将下载.deb包到我们的CentOS 7机器中,将它转换成.rpm并安装:

Check CentOS Version

检查CentOS版本

  1. # cat /etc/centos-release
  2. # wget http://ftp.us.debian.org/debian/pool/main/d/dateutils/dateutils_0.3.1-1.1_amd64.deb
  3. # alien --to-rpm --scripts dateutils_0.3.1-1.1_amd64.deb

在Linux中将.deb转换成.rpm

重要:(请注意alien是怎样来增加目标包的次版本号的。如果你想要无视该行为,请添加-keep-version标识)。

如果我们尝试马上安装该包,我们将碰到些许问题:

  1. # rpm -Uvh dateutils-0.3.1-2.1.x86_64.rpm

安装RPM包

要解决该问题,我们需要启用epel-testing仓库,然后安装rpmbuild工具来编辑该包的配置以重建包:

  1. # yum --enablerepo=epel-testing install rpmrebuild

然后运行,

  1. # rpmrebuild -pe dateutils-0.3.1-2.1.x86_64.rpm

它会打开你的默认文本编辑器。请转到%files章节并删除涉及到错误信息中提到的目录的行,然后保存文件并退出:

转换.deb到Alien版

但你退出该文件后,将提示你继续去重构。如果你选择“Y”,该文件会重构到指定的目录(与当前工作目录不同):

  1. # rpmrebuild –pe dateutils-0.3.1-2.1.x86_64.rpm

构建RPM包

现在你可以像以往一样继续来安装包并验证:

  1. # rpm -Uvh /root/rpmbuild/RPMS/x86_64/dateutils-0.3.1-2.1.x86_64.rpm
  2. # rpm -qa | grep dateutils

安装构建RPM包

最后,你可以列出date工具包含的各个工具,也可以查看各自的手册页:

  1. # ls -l /usr/bin | grep dateutils

验证安装的RPM包

步骤3:将.rpm转换成.deb包

在本节中,我们将演示如何将.rpm转换成.deb。在一台32位的Debian Wheezy机器中,让我们从CentOS 6操作系统仓库中下载用于zsh shell的.rpm包。注意,该shell在Debian及其衍生版的默认安装中是不可用的。

  1. # cat /etc/shells
  2. # lsb_release -a | tail -n 4

检查Shell和Debian操作系统版本

  1. # wget http://mirror.centos.org/centos/6/os/i386/Packages/zsh-4.3.11-4.el6.centos.i686.rpm
  2. # alien --to-deb --scripts zsh-4.3.11-4.el6.centos.i686.rpm

你可以安全地无视关于签名丢失的信息:

将.rpm转换成.deb包

过了一会儿后,.deb包应该已经生成,并可以安装了:

  1. # dpkg -i zsh_4.3.11-5_i386.deb

安装RPM转换来的Deb包

安装完后,你看看可以zsh是否添加到了合法shell列表中:

  1. # cat /etc/shells

确认安装的Zsh包

小结

在本文中,我们已经解释了如何将.rpm转换成.deb及其反向转换,这可以作为这类程序不能从仓库中或者作为可分发源代码获得的最后安装手段。你一定想要将本文添加到书签中,因为我们都需要alien。

请自由分享你关于本文的想法,写到下面的表单中吧。

Alien 魔法:RPM 和 DEB 互转的更多相关文章

  1. sudo权限添加 和 rpm、deb之名词解释

    sudo权限添加: 刚开始用Center_os Linux操作系统,想装个输入法,搜了一下,看到linux下的搜狗输入法(帖子链接)下载下来的文件的扩展名是.deb,直接用帖子上的一个命令: sudo ...

  2. alien 进行rpm 包和deb 包之间的转换

    今天安装一个pandoc, 官方只提供了一个deb 的二进制包,为了在redhat 上安装,需要将deb 包转换成rpm 包. 使用工具alien : http://ftp.de.debian.org ...

  3. ubuntu中使用 alien安装rpm包

    我们可以使用alien 在ubuntu中安装rpm 包 使用方法: 安装 alien 安装   apt-get update apt-get install alien 帮助命令 Usage: ali ...

  4. linux系统(rpm与deb环境),JAVA JDK的配置

    步骤一:(配置 JAVA JDK  DEB系列linux系统) 1,下载JAVA JDK 1.1.官网下载java JDK (最好为1.7及以上版本) 下载地址http://www.oracle.co ...

  5. tar.gz和bin,以及rpm,deb等linux后缀的文件的区别

    先说tar.gz源码类的吧.这种要你手动安装,编译,首先你还要安装了相关的编译软件如gcc g++ 等.一般操作 configure , make && make install. 其 ...

  6. rpm和deb包制作和升级执行步骤

    deb安装包升级和安装都是dpkg -i .deb命令,升级时直接覆盖安装新包安装步骤:1 preinst install2 postinst configure升级步骤:1 先执行旧包prerm u ...

  7. 如何在Ubuntu下安装”.deb“、”.bin“、”.tar.gz“、”.tar.bz2“格式的软件包!

    今天在Ubuntu11.10中安装Google chrome浏览器是遇到了问题,下载好的“.deb”格式的安装文件google-chrome-stable.deb双击后或者右键快捷菜单选择 Synap ...

  8. ubuntu .deb .tar.gz .tar.bz2 .rmp 和命令方式安装软件的方法

    今天在Ubuntu11.10中安装Google chrome浏览器是遇到了问题,下载好的".deb"格式的安装文件google-chrome-stable.deb双击后或者右键快捷 ...

  9. Ubuntu系统下常用的新建、删除、拷贝文件命令

    我们在Ubuntu系统中安装程序时,经常要在usr目录下新建.拷贝文件,此文件夹在Linux类系统中需要root权限才能访问,因此用常规的鼠标右键菜单操作是无效的,今天分享一下在终端中使用命令新建.拷 ...

随机推荐

  1. [Fundamental of Power Electronics]-PART II-7. 交流等效电路建模-7.4 规范电路模型

    7.4 规范电路模型 在讨论了推导开关变换器交流等效电路模型的几种方法后,让我们先停下来,说明下这些结果.所有的在 CCM下以PWM工作的DC-DC变换器都具有相似的基本功能.首先,他们在理想情况下, ...

  2. 201871030134-余宝鹏 实验二 个人项目一 《D{0-1}KP》项目报告

    项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 1.掌握软件项目个人开发流程2.掌握Github发布软件项目的操作方法 这个作业帮助我在哪些方面实现学习目标 1. ...

  3. day-8 xctf-guess_num

    xctf-guess_num 题目传送门:https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&i ...

  4. JavaWeb请求与响应 Cookie&Session

    1.请求与响应 &Cookie&Session 1.1.请求与响应 HTTP协议 概念:英文全称:HyperText Transfer Protocol 中文全称:超文本传输协议   ...

  5. Python输入与输出

    输出 print函数 语法: print(self, *args, sep=' ', end='\n', file=None) print函数是python中最常见的一个函数.用于将内容打印输出. p ...

  6. 【Nginx(五)】Nginx配置Https证书

    大致的流程如下 1.申请Https证书,绑定域名信息; 由于自己的服务器是腾讯云服务器, 这里就在腾讯云上申请SSL证书, 申请地址: https://console.cloud.tencent.co ...

  7. 技术面试问题汇总第003篇:猎豹移动反病毒工程师part3

    从现在开始,面试的问题渐渐深入.这次的三个问题,都是对PE格式的不断深入的提问.从最初的概念,到病毒对PE格式的利用,再到最后的壳的问题.这里需要说明的是,由于壳是一个比较复杂的概念,面试中也仅仅只能 ...

  8. Python多线程_thread和Threading

    目录 多线程 _thread模块 使用 _thread模块创建线程 threading 使用 threading模块创建线程 线程同步 在讲多线程之前,我们先看一个单线程的例子: import _th ...

  9. 关于PHP动态的接收传递的GET,POST和COOKIE变量

    0x01 我们知道 PHP 接收的变量最常用的是 GET,POST,COOKIE 这三个变量.GET变量是附在 url 后传输的,而 POST 变量是放在 http 包中传输的,COOKIE 则是浏览 ...

  10. Python中根据库包名学习使用该库包

    目录 Python库包模块 import 语句 from-import 语句 搜索路径 PYTHONPATH 变量 命名空间和作用域 查看模块中所有变量和函数,以及查看具体函数的用法 globals( ...