Shell腳本解壓rpm軟件包
更新時間:2014年06月20日 10:25:53 投稿:junjie
這篇文章主要介紹了Shell腳本解壓rpm軟件包,用來解壓后提取某個包中文件,需要的朋友可以參考下
有時候需要從RPM包中提取文件,而又沒有安裝且不想安裝 rpm相關(guān)的庫和程序,此時下面這個小小的綠色腳本可以幫你達成愿望。
注:
1. 此腳本來源于 Internet,具體位置不記得了,相對于源腳本做了一點點小的改動
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)文章
jenkins?pipeline中獲取shell命令的標準輸出或者狀態(tài)的方法小結(jié)
這篇文章主要介紹了jenkins?pipeline中獲取shell命令的標準輸出或者狀態(tài),工作中需要獲取shell?命令的執(zhí)行狀態(tài),返回0或者非0,本文給大家介紹的非常詳細,需要的朋友可以參考下2024-02-02Linux Shell 數(shù)組的創(chuàng)建及使用技巧
這篇文章主要介紹了Linux Shell 數(shù)組的創(chuàng)建及使用技巧,本文講解了數(shù)組定義、數(shù)組讀取與賦值以及特殊使用,需要的朋友可以參考下2015-07-07linux shell字符串內(nèi)置的常用操作(獲取長度、查找、替換)
在編寫shell程序時,經(jīng)常會涉及到字符串相關(guān)操作。有許多命令語句,如awk,sed都能夠做字符串各種操作。 事實上shell內(nèi)置一系列操作符號,能夠達到相似效果,使用內(nèi)部操作符會省略啟動外部程序等時間,因此速度會很的快。如果內(nèi)置的操作符能夠做到的,優(yōu)先使用內(nèi)置的2015-12-12