utils/rpm2deb.sh

#!/bin/bash
#下面这两个值分别赋值为当前目录
$SRC_DIR='./'
$DEST_DIR='./'
#下面两个语句用于判断形参是否为null
if [ ! -z "${1}" ] ; then
    SRC_DIR=${1}
fi

if [ ! -z "${2}" ] ; then
    DEST_DIR=${2}
fi
#更新系统,并检查如果没有安装alien,则安装这个包
apt-get update
if [ -z "$(which alien 2>/dev/null)" ] ; then
    sudo apt-get install -y alien
fi
#检查系统是否安装debsigs,如果没有安装,则安装这个包
if [ -z "$(which debsigs 2>/dev/null)" ] ; then
    sudo apt-get install -y debsigs
fi
sudo apt-get install -y expect
sudo apt-get install -y policycoreutils
#创建一个临时目录,如果已经有重名的则删除
TMP_BUILD="/tmp/tmp_rpm2deb/"
if [ -d ${TMP_BUILD} ] ; then 
    rm -fr ${TMP_BUILD}/*
else 
    mkdir -p ${TMP_BUILD}
fi

#Convert RPM files to Deb files
cd ${TMP_BUILD}
#针对SRC_DIR 目标下的所有以rpm包结束的文件执行alien 命令,
for rpmfile in ${SRC_DIR}/*.rpm
do
     echo ""
#alien 命令会将rpm 包装成deb包,也能将deb包装成rpm包。这里将rpm包装成在arm64平台上的deb包
     alien --target=arm64 ${rpmfile}
done
#将生成的deb包copy到DEST_DIR
if [ "${SRC_DIR}" != "${DEST_DIR}" ] ; then
    if [ ! -d ${DEST_DIR} ] ; then
        mkdir -p ${DEST_DIR}
    fi
    mv ${TMP_BUILD}/*.deb ${DEST_DIR}/
fi 

#Re-sign deb files
#对DEST_DIR 下的所有deb包执行sign的过程,这个flow之前的博文已经分析过
GPG_KEY="24CC6CF4"
KEY_PASSPHRASE="$(cat /root/KEY_PASSPHRASE)"
for debfile in ${DEST_DIR}/*.deb
do
expect <<-END
#expect 命令用于不用timeout
        set timeout -1
        spawn debsigs --sign=origin -k ${GPG_KEY} ${debfile}
        expect {
                "Enter passphrase:" {send "${KEY_PASSPHRASE}\r"}
                timeout {send_user "Enter pass phrase timeout\n"}
        }
        expect eof
END
done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值