আমি কীভাবে কোনও আরপিএম এর বিষয়বস্তু বের করতে পারি?


154

আমার একটি আরপিএম আছে এবং আমি এটি টারবালের মতো আচরণ করতে চাই। আমি বিষয়বস্তুগুলিকে একটি ডিরেক্টরিতে বের করতে চাই যাতে আমি বিষয়বস্তুগুলি পরীক্ষা করতে পারি। আমি একটি আনইনস্টল করা প্যাকেজটির অনুসন্ধানের কমান্ডগুলির সাথে পরিচিত। আমি কেবল আরপিএম এর বিষয়বস্তুর একটি তালিকা চাই না। অর্থাত

$ rpm -qpl foo.rpm

আমি আরপিএম-এ থাকা বেশ কয়েকটি ফাইলের সামগ্রীগুলি পরিদর্শন করতে চাই। আমি আরপিএম ইনস্টল করতে চাই না। আমি% পোস্ট বিভাগে অতিরিক্ত পরিবর্তনগুলি করার জন্য আরপিএমএস ক্ষমতা এবং সেগুলি কীভাবে পরীক্ষা করব সে সম্পর্কেও আমি সচেতন। অর্থাত

$ rpm -qp --scripts foo.rpm

তবে এক্ষেত্রে আমার কোন উদ্বেগ নেই।

উত্তর:


184

rpm2cpioকমন্ড চেষ্টা করেছ? নীচের উদাহরণটি দেখুন:

$ rpm2cpio php-5.1.4-1.esp1.x86_64.rpm | cpio -idmv

/etc/httpd/conf.d/php.conf  
./etc/php.d  
./etc/php.ini  
./usr/bin/php  
./usr/bin/php-cgi  
etc 

28
আমি আশ্চর্য হয়েছি যে লিনাক্স ডিস্ট্রিবিউশনগুলি এটিকে সহজ করার জন্য একটি মোড়ক কার্যকরকরণযোগ্য সরবরাহ করে না (যেমন, rpmextract bla.rpm), কারণ এটি একটি খুব সাধারণ কাজ। মধ্যস্থতাকারী সিপিও ফর্ম্যাটটি সম্পর্কে ব্যবহারকারীর যত্ন নেওয়া উচিত নয়।
অ্যালান ইভাঞ্জেলিস্টা

2
@AlanEvangelista, অবাক হবেন না এটি অবশ্যই কোর্সের সমান।
ngreen

এটি আরপিএম 2 সিপিও ইনস্টল করার জন্য রুট অ্যাক্সেসের প্রয়োজন :(
törzsmókus

9
@ অ্যালানএভেঞ্জলিস্টা আমি অবাক হয়েছি যে আরপিএম এর মতো খারাপ ফর্ম্যাট। অন্যান্য জাতীয় দেবতার সাথে তুলনা করা যা ইউনিক্স দর্শনের অনুগত কেবল সাধারণ সংরক্ষণাগার।
ত্রিসমেগিস্টোস

1
@ সুমিতমুরারি অবশ্যই খারাপ is আমি কেবল টারজস্মেকাসের দুর্দশা সম্পর্কে একটি সমাধান দিচ্ছিলাম।
মিররফেটে

66
$ mkdir packagecontents; cd packagecontents
$ rpm2cpio ../foo.rpm | cpio -idmv
$ find . 

রেফারেন্সের জন্য: সিপিও আর্গুমেন্টগুলি

-i = extract
-d = make directories
-m = preserve modification time
-v = verbose

আমি উত্তরটি এখানে পেয়েছি: লন্টারের উত্তর


1
"rpm2cpio foo.rpm | cpio -idmv" আমার জন্য কাজ করে। এটি বর্তমান পথে আরপিএমের সামগ্রীগুলি বের করতে যথেষ্ট is
পরশ্রিশ

32

যাদের আরপিএম 2 সিপিও নেই তাদের জন্য, এখানে প্রাচীন rpm2cpio.sh স্ক্রিপ্ট রয়েছে যা * .rpm প্যাকেজ থেকে পেলোড উত্তোলন করে।

উত্তরোত্তর ... এবং পরবর্তী প্রজন্মের জন্য পোস্ট করা হয়েছে।

এই মত আহ্বান: ./rpm2cpio.sh .rpm | সিপিও -ডিমভ

#!/bin/sh

pkg=$1
if [ "$pkg" = "" -o ! -e "$pkg" ]; then
    echo "no package supplied" 1>&2
    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`
EXTRACTOR="dd if=$pkg ibs=$o skip=1"

COMPRESSION=`($EXTRACTOR |file -) 2>/dev/null`
if echo $COMPRESSION |grep -q gzip; then
        DECOMPRESSOR=gunzip
elif echo $COMPRESSION |grep -q bzip2; then
        DECOMPRESSOR=bunzip2
elif echo $COMPRESSION |grep -iq xz; then # xz and XZ safe
        DECOMPRESSOR=unxz
elif echo $COMPRESSION |grep -q cpio; then
        DECOMPRESSOR=cat
else
        # Most versions of file don't support LZMA, therefore we assume
        # anything not detected is LZMA
        DECOMPRESSOR=`which unlzma 2>/dev/null`
        case "$DECOMPRESSOR" in
            /* ) ;;
            *  ) DECOMPRESSOR=`which lzmash 2>/dev/null`
             case "$DECOMPRESSOR" in
                     /* ) DECOMPRESSOR="lzmash -d -c" ;;
                     *  ) DECOMPRESSOR=cat ;;
                 esac
                 ;;
        esac
fi

$EXTRACTOR 2>/dev/null | $DECOMPRESSOR

আমি এই ত্রুটিটি "আনলজমা: খারাপ lzma শিরোলেখ" পেয়েছি আল্পাইন লিনাক্স ব্যবহার করে। একাধিক আরপিএম চেষ্টা করেছে।
জেকেনেডি

27

কখনও কখনও আপনি মধ্যবর্তী আরপিএম সংরক্ষণাগার সহ একটি সমস্যা সম্মুখীন করতে পারেন:

সিপিও: ত্রুটিযুক্ত নম্বর
সিপিও: ত্রুটিযুক্ত নম্বর
সিপিও: ত্রুটিযুক্ত সংখ্যা
। । ।
সিপিও: সংরক্ষণাগার অকাল শেষ

এর অর্থ এটি প্যাক করা যায়, আজকাল এটি যথারীতি এলজেডএমএ 2 সংক্ষেপণ xz:

rpm2cpio <file>.rpm | xz -d | cpio -idmv

অন্যথায় আপনি চেষ্টা করতে পারেন:

rpm2cpio <file>.rpm | lzma -d | cpio -idmv

2
আমি সবেমাত্র এটির মুখোমুখি হয়েছি। ধন্যবাদ!
স্যাম স্টোলেঙ্গা

2
খুব দরকারী. ধন্যবাদ জনাব!
ILIV

1
রক্ষাকর্তা। @ ল্যাসেহালবার্গহরবিয়ে আমি এটি স্বীকৃত উত্তরে যুক্ত করেছি।
জোসেফ ফারাহ

আমি "ত্রুটিযুক্ত নম্বর" এবং "সংরক্ষণাগার অকাল শেষ" ত্রুটি পেয়ে যাচ্ছিলাম তবে পোস্ট করা সমাধানগুলির মধ্যে দুটিই আমার পক্ষে কার্যকর হয়নি। rpm2cpio <file>.rpm | bsdtar -xf -এটি কাজ করার জন্য আমাকে (কোনও সিপিও) করতে হয়নি।
jackkamm

মধ্যবর্তী সংরক্ষণাগারটি আমার জন্য জিজিপ-ফর্ম্যাট করা শেষ হয়েছিল, তাই আমি এর gunzipপরিবর্তে xzবা lzmaযা ভাল কাজ করেছি তা ব্যবহার করেছি ।
jayhendren

9

বেশিরভাগ বিতরণে জিইউআই অ্যাপ্লিকেশন ফাইল-রোলার ইনস্টল করা আছে যা ট্যারি, জিপ, আরপিএম এবং আরও অনেকগুলি প্যাক করে।

file-roller --extract-here package.rpm

এটি বর্তমান ডিরেক্টরিতে থাকা সামগ্রীগুলি বের করে দেবে।


6

7-জিপ আরপিএম এবং অন্তর্ভুক্ত সিপিও সহ বেশিরভাগ ধরণের সংরক্ষণাগারগুলি বোঝে।


আমি 7 টি জিপ দিয়ে চেষ্টা করেছি এবং এটি পুরোপুরি কার্যকর হয়েছে।
আনশুল

5

আপনি কেবল tar -xvf <rpm file>পাশাপাশি করতে পারেন !


.Rpm প্যাকেজ সহ এটি পুনরুত্পাদন করতে অক্ষম। আপনি আপনার উত্তরটি সংশোধন করতে চাইতে পারেন।
gvlasov

9
এটি ওএস এক্স - বা অন্য কোনও সিস্টেমে কাজ করে tarযা libarchiveহুডের নীচে বিভিন্ন রূপ ব্যবহার করে।
গ্লেনজামিন

2
আমি ত্রুটি পেয়েছি: এটি কোনও টਾਰ আর্কাইভের মতো দেখাচ্ছে না।
wp-overwatch.com

এটি আমার জন্য ম্যাকস 10.14.1 তে বিএসডিটার ২.৮.৩ - লিবারচিভ ২.৮.৩ সহ কাজ করেছে। এটি কোনও ধরণের সংকোচনের জন্য ব্যবহৃত হয়েছিল তার উপর নির্ভর করে। Rpm2cpio.sh স্ক্রিপ্টটি উত্তোলনের জন্য সঠিক সরঞ্জামটিতে যাওয়ার আগে বিভিন্ন ধরণের সংক্ষেপণের জন্য পরীক্ষা করে দেখে মনে হচ্ছে।
2xj

যেহেতু এসও এর সম্পাদনা কার্যকারিতা আমাকে উত্তর ঠিক করতে 3 টি অক্ষর যুক্ত করতে দেয় না, এটি যুক্ত করা উচিত যে এটি লিবারচিভের প্রয়োজন bsdtar। ম্যাকের হোমব্রেউ এর সাথে tarডিফল্টরূপে লিঙ্ক হয় তবে অন্যান্য ওএসে tarজিএনইউ টার থাকে।
আতেমু

5

শক্তিশালী টেক্সট-ভিত্তিক ফাইল ম্যানেজার এমসি (মিডনাইট কমান্ডার, অস্পষ্টভাবে পুরানো ডস সময়ের নর্টন কমান্ডারকে স্মরণ করিয়ে দিচ্ছে) .rpm এবং .rpms ফাইলগুলি খতিয়ে দেখার এবং আনপ্যাক করার অন্তর্নিহিত ক্ষমতা রাখে, .rpm (গুলি) ফাইলটি কেবল "খুলুন" এমসির মধ্যে এবং নির্বাচন করুন CONTENTS.cpio: একটি আরপিএমের জন্য আপনি ইনস্টল ট্রিটিতে অ্যাক্সেস পাবেন, আরপিএমের জন্য আপনি .spec ফাইল এবং সমস্ত উত্স প্যাকেজ অ্যাক্সেস পাবেন।




1

কমপক্ষে ওপেনসেসে, unrpmকমান্ডটি buildপ্যাকেজ সহ আসে ।

উপযুক্ত ডিরেক্টরিতে (কারণ এটি একটি সংরক্ষণাগার বোমা):

unrpm file.rpm

1

পৃথক ফোল্ডারে .rpm ফাইলটি অনুলিপি করুন তারপরে নিম্নলিখিত কমান্ডটি চালান। Yourfile.rpm | সিপিও-আইডিএমভি


এটি মন্তব্য করা উচিত
কেতান

1

"এক্সজেড" কেস সংবেদনশীল হওয়ার জন্য "গ্রেপ" চেক করার কারণে "ডিকোপ্রেশন" পরীক্ষাটি সাইগউইনের পক্ষে সবচেয়ে সম্ভাব্য উপকারী প্ল্যাটফর্মগুলির মধ্যে একটি ব্যর্থ। "সংক্ষেপণ:" পরীক্ষার ফলাফল:

COMPRESSION='/dev/stdin: XZ compressed data'

কেবল 'গ্রেপ-কি''-এর পরিবর্তে সর্বত্র' গ্রেপ-কি-আই 'দিয়ে প্রতিস্থাপন করা সমস্যার সমাধান করবে বলে মনে হয়।

আমি কয়েকটি আপডেট করেছি, বিশেষত কিছু মন্তব্য যুক্ত করা এবং "স্ট্যাকড" যদি "স্টেটমেন্ট" এর পরিবর্তে "কেস" ব্যবহার করেছি এবং নীচে সেই সংশোধনটি অন্তর্ভুক্ত করেছি

#!/bin/sh
#
# rpm2cpio.sh - extract 'cpio' contents of RPM
#
# Typical usage: rpm2cpio.sh rpmname | cpio -idmv
#

if [ "$# -ne 1" ]; then
    echo "Usage: $0 file.rpm" 1>&2
    exit 1
fi

rpm="$1"
if [ -e "$rpm" ]; then
    echo "Error: missing $rpm"
fi


leadsize=96
o=`expr $leadsize + 8`
set `od -j $o -N 8 -t u1 $rpm`
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 $rpm`
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`
EXTRACTOR="dd if=$rpm ibs=$o skip=1"

COMPRESSION=`($EXTRACTOR |file -) 2>/dev/null`
DECOMPRESSOR="cat"

case $COMPRESSION in
    *gzip*|*GZIP*)
        DECOMPRESSOR=gunzip
        ;;
    *bzip2*|*BZIP2*)
        DECOMPRESSOR=bunzip2
        ;;
    *xz*|*XZ*)
        DECOMPRESSOR=unxz
        ;;
    *cpio*|*cpio*)
        ;;
    *)
        # Most versions of file don't support LZMA, therefore we assume
        # anything not detected is LZMA
        DECOMPRESSOR="`which unlzma 2>/dev/null`"
        case "$DECOMPRESSOR" in
            /*)
                DECOMPRESSOR="$DECOMPRESSOR"
                ;;
            *)
                DECOMPRESSOR=`which lzmash 2>/dev/null`
                case "$DECOMPRESSOR" in
                    /* )
                        DECOMPRESSOR="lzmash -d -c"
                        ;;
                    *  )
                        echo "Warning: DECOMPRESSOR not found, assuming 'cat'" 1>&2
                        ;;
                esac
                ;;
        esac
esac

$EXTRACTOR 2>/dev/null | $DECOMPRESSOR

1

7-জিপ সামগ্রীগুলি বের করতে সক্ষম। এটি একটি tar.gz ফাইলের মতো কাজ করে way একটি সংকুচিত ফাইলের অভ্যন্তরে একটি সংকুচিত ফাইল।

উইন্ডোজ 7 প্রো-তে 7-জিপ ইনস্টল করা আছে:

আরপিএম ফাইলটিতে রাইট ক্লিক করুন। প্রসঙ্গ মেনুতে 7-জিপের উপরে মাউস করুন। "ফাইলের নাম" এ এক্সট্র্যাক্ট নির্বাচন করুন।

ফাইলের নাম ফোল্ডারে প্রবেশ করুন।

সিপিও ফাইলটিতে রাইট ক্লিক করুন। প্রসঙ্গ মেনুতে 7-জিপের উপরে মাউস করুন। "ফাইলের নাম" এ এক্সট্র্যাক্ট নির্বাচন করুন।

তুমি পেরেছ. "ফাইলের নাম" সহ ফোল্ডারে পরিদর্শন করার জন্য নিষ্কাশিত সামগ্রী রয়েছে।

আমি জানি আপনি লিনাক্স ছেলেরা জিনিসকে সহজ করে তোলা তুচ্ছ করে তবুও দীর্ঘমেয়াদে যদি আপনাকে এই জাতীয় কোনও সমস্যার সমাধানের জন্য সময় ব্যয় করতে হয়; অদক্ষতা আপনার জন্য অর্থ ব্যয় করছে।

আপনি লিনাক্স ছেলেরা দক্ষ সরলতা উপেক্ষা করে এই সত্যটি প্রদান করে, আমি অত্যন্ত সন্দেহ করি যে 7-জিপের লিনাক্স সংস্করণটি ঠিক একইভাবে একই কাজ করবে।

আপনি যখন সরল বোকা শক্ত করতে এবং একই সাথে প্রতিভা হিসাবে দাবি করতে পারেন তখন কেন এটি সহজ করবেন?

শুধু পরিষ্কার হতে; আমি উইন্ডোজ ফ্যানবয় নই। আমি আসলে লিনাক্সে যাওয়ার চেষ্টা করছি। উইন্ডোজ বিকাশকারীরা সাধারণ জ্ঞান হিসাবে আপনার মুখের মধ্যে সেরা বিকাশকারী অনুশীলন হিসাবে যা দেখবে তা ঘষানোর সুযোগটি আমি কেবল প্রতিহত করতে পারিনি।

কেবল খুশি হোন যে আমি এটি পোস্ট করছি এবং আপনার কাছে মার্ক হারমন আপনার পক্ষে দাঁড়িয়ে নেই; বিশেষ এজেন্ট Leroy Jethro Gibbs আপনাকে মাথা না ব্যবহার করার জন্য একটি মাথা চড় দিয়েছিল।

গিবস কোনটি শাসন করে তা আমি জানি না তবে নিয়মটি হ'ল: নিজের জন্য জিনিসকে তার চেয়ে শক্ত করে দেবেন না।

এখন আমরা দেখতে পাচ্ছি কাদের ছুটি নেওয়া দরকার। যত্ন নিবেন!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.