Shell腳本解壓rpm軟件包
更新時(shí)間:2014年06月20日 10:25:53 投稿:junjie
這篇文章主要介紹了Shell腳本解壓rpm軟件包,用來(lái)解壓后提取某個(gè)包中文件,需要的朋友可以參考下
有時(shí)候需要從RPM包中提取文件,而又沒(méi)有安裝且不想安裝 rpm相關(guān)的庫(kù)和程序,此時(shí)下面這個(gè)小小的綠色腳本可以幫你達(dá)成愿望。
注:
1. 此腳本來(lái)源于 Internet,具體位置不記得了,相對(duì)于源腳本做了一點(diǎn)點(diǎn)小的改動(dòng)
2. 系統(tǒng)需要安裝cpio程序(一般的系統(tǒng)都帶)
#!/bin/sh #************************************************************* # Author: Unknown, Modified by jb51.net # Filename: rpmextract.sh # Description: extrac rpm package without install # rpm related program #************************************************************* if [ $# -lt 1 ] ; then echo -e "anUsage: `basename $0` <rpm_pkg_file> 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 <RPM文件>
相關(guān)文章
修改Apache配置指定php配置文件php.ini的位置方法
下面小編就為大家?guī)?lái)一篇修改Apache配置指定php配置文件php.ini的位置方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
收集的55個(gè)Linux系統(tǒng)管理中常用的一些shell命令
這篇文章主要介紹了收集的55個(gè)Linux系統(tǒng)管理中常用的一些shell命令,需要的朋友可以參考下2014-12-12
Linux下的自動(dòng)化構(gòu)建工具之make/makefile的用法詳解
這篇文章主要為大家詳細(xì)介紹了Linux下的自動(dòng)化構(gòu)建工具之make/makefile的區(qū)別與使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-10-10

