蚊章汇 - Alien
type: channel
link: https://linuxcn.bwsl.wang/tag/Alien/
items: Alien 魔法：RPM 和 DEB 互转

Alien 魔法：RPM 和 DEB 互转
type: item
date: 2015-08-31T18:45:15+08:00
description: 正如我确信，你们一定知道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）仓库，顺序如下：# yum install epel-release 启用Nux Dextop仓库的包的当前最新版本是0.5（2015年8月10日发布），在安装之前你可以查看http://li.nux.ro/download/nux/dextop/el7/x86_64/上是否有更新的版本。# rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro # rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm 然后再做，# yum update && yum install alien 在Fedora中，你只需要运行上面的命令即可。在Debian及其衍生版中，只需要：# aptitude install alien 步骤2：将.deb转换成.rpm包对于本次测试，我们选择了date工具，它提供了一系列日期和时间工具用于处理大量金融数据。我们将下载.deb包到我们的CentOS 7机器中，将它转换成.rpm并安装：检查CentOS版本# cat /etc/centos-release # wget http://ftp.us.debian.org/debian/pool/main/d/dateutils/dateutils_0.3.1-1.1_amd64.deb # alien --to-rpm --scripts dateutils_0.3.1-1.1_amd64.deb 在Linux中将.deb转换成.rpm重要：（请注意alien是怎样来增加目标包的次版本号的。如果你想要无视该行为，请添加-keep-version标识）。如果我们尝试马上安装该包，我们将碰到些许问题：# rpm -Uvh dateutils-0.3.1-2.1.x86_64.rpm 安装RPM包要解决该问题，我们需要启用epel-testing仓库，然后安装rpmbuild工具来编辑该包的配置以重建包：# yum --enablerepo=epel-testing install rpmrebuild 然后运行，# rpmrebuild -pe dateutils-0.3.1-2.1.x86_64.rpm 它会打开你的默认文本编辑器。请转到%files章节并删除涉及到错误信息中提到的目录的行，然后保存文件并退出：转换.deb到Alien版但你退出该文件后，将提示你继续去重构。如果你选择“Y”，该文件会重构到指定的目录（与当前工作目录不同）：# rpmrebuild –pe dateutils-0.3.1-2.1.x86_64.rpm 构建RPM包现在你可以像以往一样继续来安装包并验证：# rpm -Uvh /root/rpmbuild/RPMS/x86_64/dateutils-0.3.1-2.1.x86_64.rpm # rpm -qa | …