zoukankan      html  css  js  c++  java
  • CentOS7使用Alien将RPM从DE转换为DEB和DEB转换为RPM包

    我相信您已经知道,有很多方法可以在Linux中安装软件:使用您的发行版提供的软件包管理系统(aptitude,yum或zypper,举几个例子),从源代码编译(尽管有些这些天很少见,它是Linux早期唯一可用的方法,或者分别使用dpkg或rpm等低级工具和.deb和.rpm独立的预编译软件包。     将RPM转换为DEB,将DEB转换为RPM

                                         使用Alien将RPM转换为DEB和DEB转换为RPM包

    在本文中,我们将向您介绍alien,一种在不同Linux包格式之间进行转换的工具,使用.rpm到.deb(反之亦然)是最常用的用法。

    这个工具,即使它的作者不再维护它并在他的网站上说外星人总是可能保持实验状态,如果你需要某种类型的包但只能找到另一种包装格式的程序,它可以派上用场。

    例如,当我为喷墨打印机寻找.deb驱动程序时,外星人节省了我的一天,但却找不到 - 制造商只提供了一个.rpm包。我安装了外星人,转换了包装,不久我就可以毫无问题地使用我的打印机了。

    也就是说,我们必须澄清这个实用程序不应该用于替换重要的系统文件和库,因为它们在不同的发行版中设置不同。如果本文开头的建议安装方法不能满足所需程序的要求,请仅使用外星人作为最后的手段。

    最后但并非最不重要的是,我们必须注意,尽管我们将在本文中使用CentOS和Debian,但除了前两个发行版及其各自的系列之外,外星人也知道在Slackware甚至Solaris中工作。

    第1步:安装外来和依赖项

    要在CentOS / RHEL 7中安装外星人,您需要按顺序启用EPEL和Nux Dextop(是的,它是Dextop - 而不是桌面)存储库:

    #yum install epel-release
    #rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

    支持此存储库的最新版软件包目前为0.5(2015年8月10日发布)。您应该先检查http://li.nux.ro/download/nux/dextop/el7/x86_64/以查看是否有更新的版本,然后再继续:
    #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安装外星人

    由于制作rpm包过程较为麻烦,此处使用rpmrebuild去将本机已安装好的openvswitch包进行重新打包,用于下次安装部署

    # yum install rpmrebuild -y

    第2步:从.deb转换为.rpm包

    对于此测试,我们选择了dateutils,它提供了一组日期和时间实用程序来处理大量的财务数据。我们将.deb软件包下载到我们的CentOS 7盒子,将其转换为.rpm并安装它:

    检查CentOS版本

                                    检查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包

                                               在Linux中将.deb转换为.rpm包

    重要 :(请注意,默认情况下,alien会增加目标包的版本次要编号。如果要覆盖此行为,请添加-keep-version标志)。

    如果我们立即尝试安装软件包,我们将遇到一个小问题: 

    安装RPM包

                                                              安装RPM包

    要解决此问题,我们将启用epel-testing存储库并安装rpmrebuild实用程序以编辑要重建的程序包的设置:

          #yum --enablerepo = epel-testing安装rpmrebuild

    然后跑,

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

    这将打开您的默认文本编辑器。转到该%files部分并删除引用错误消息中提到的目录的行,然后保存文件并退出:
    将.deb转换为外星人版

                                            将.deb转换为外星人版

    当您退出该文件系统将提示您继续重建。如果你选择Y.,则文件将重建到指定目录(不同于当前工作目录):

    #rpmrebuild -pe dateutils-0.3.1-2.1.x86_64.rpm
    构建RPM包

                                                         构建RPM包

    现在,您可以继续安装软件包并照常验证:

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

    安装Build RPM Package

                                                           安装Build RPM Package

    最后,您可以列出dateutils中包含的各个工具,也可以检查各自的手册页:

    #ls -l / usr / bin | grep dateutils

    验证已安装的RPM包

                                                      验证已安装的RPM包

    第3步:从.rpm转换为.deb包

    在本节中,我们将说明如何将.rpm转换为.deb。在32位Debian Wheezy框中,让我们从CentOS 6操作系统下载zsh shell 的.rpm包存储库。请注意,默认情况下,Debian和衍生产品中不提供此shell。

    #cat / etc / shells
    #lsb_release -a | 尾巴-n 4
    
    检查Shell和Debian OS版本

                              检查Shell和Debian OS版本

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

    您可以放心地忽略有关丢失签名的消息:

    将.rpm转换为.deb包

                                                         将.rpm转换为.deb包

    片刻之后,应该生成.deb文件并准备安装:

    #dpkg -i zsh_4.3.11-5_i386.deb
    
    安装RPM Converted Deb Package

                                                     安装RPM Converted Deb Package

    安装后,您可以验证zsh是否已添加到有效shell列表中:

    #cat / etc / shells
    
    确认已安装的Zsh包

                         确认已安装的Zsh包

    摘要

    在本文中,我们已经解释了如何将.rpm转换为.deb,反之亦然,以便在这些程序在存储库中不可用或作为可分发的源代码时,作为最后的手段安装软件包。你会想要为这篇文章添加书签,因为我们所有人都会在某个时候需要外星人。

     
     
  • 相关阅读:
    Devexpress [汇总链接]
    [转]修改LayoutControlitem容器内的控件长宽
    How to hide border of XtraTabControl
    CEF / Chromium 重新编译2018 官网地址 一路是坑 千万别跟着官方step by step走一定多思考多查资料 因为改动地方太多了编译都每个版本都不一样
    c#:配置引用程序集的路径(分离exe和dll)和 如何处理[dllImport]中的程序集的加载 [笔记]
    [redis] -- 缓存雪崩和缓存穿透、缓存击穿问题解决方案篇
    [redis] -- 为什么那么快
    [redis] -- 集群篇
    [spring cloud] -- 服务注册与服务发现篇
    [spring cloud] -- 核心篇
  • 原文地址:https://www.cnblogs.com/MrJason/p/11555923.html
Copyright © 2011-2022 走看看