红联Linux门户
Linux帮助

不安装提取rpm包文件的脚本

发布时间:2014-03-29 16:01:33来源:红联作者:tioced
不安装rpm包相关的库和程序,只需要从rpm包中提取文件,下面有个绿色的脚本可以实现这个功能。

系统要安装cpio程序,不过一般系统都自带。

引用:
#!/bin/sh
#*************************
# Author: Unknown,
# Modified by Muddyboot - toobyddum@gmail.com
# Last modified:
# Filename: rpmextract.sh
# Description: extrac rpm package without install
# rpm related program
#*************************
if [ $# -lt 1 ] ; then
echo -e "\a\nUsage: `basename $0` \n"
exit 1
fi
pkg=$1
if [ ! -e "$pkg" ]; then
echo -e "\nERR: package $pkg does not exist ! \n"
exit 1
fi
### check if cpio exists
CPIO_VER=`cpio --version 2>/dev/null`
if [ -z "$CPIO_VER" ]; then
echo -e "\nERR: prerequisite program cpio does not found ! \n"
exit 1
fi
leadsize=96
o=`expr $leadsize + 8`
set `od -j $o -N 8 -t u1 $pkg`
il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
# echo "sig il: $il dl: $dl"
sigsize=`expr 8 + 16 \* $il + $dl`
o=`expr $o + $sigsize + \( 8 - \( $sigsize \% 8 \) \) \% 8 + 8`
set `od -j $o -N 8 -t u1 $pkg`
il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
# echo "hdr il: $il dl: $dl"
hdrsize=`expr 8 + 16 \* $il + $dl`
o=`expr $o + $hdrsize`
dd if=$pkg ibs=$o skip=1 2>/dev/null | gunzip | cpio -idmuv || dd if=$pkg ibs=$o skip=1 2>/dev/null | bzip2 -d | cpio -idmuv


运行方式:rpmextract.sh
文章评论

共有 1 条评论

  1. bybandzk 于 2014-04-18 16:59:21发表:

    看看