web-dev-qa-db-ja.com

rpmパッケージからspecファイルを抽出します

Rpmパッケージからspecファイルを抽出する方法はありますか(RPMファイルしかありません)

ではなく

   rpm --scripts -qp my-great-app-1.1.2.rpm 

(この構文は、スペックファイルをrpmからのスクリプトのみを取得しません)

37
jon

rpmrebuildをインストールし、rpm fileまたは既にインストール済みパッケージのspecファイルを抽出します。

例:

rpmrebuild --package --notest-install -e Oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm
rpmrebuild -s Hercules.spec Hercules
24
reichhart

パッケージャーが何らかの理由で特別に含めない限り、specファイルはバイナリrpmに保存されません(実際にそうする理由はありません)。バイナリrpmから取得できる唯一の情報は、rpm -qi <package>が返され、rpm -ql <package>リスト。それ以上必要な場合は、ソースパッケージを見つける必要があります。 Google /ベンダーのウェブサイトがあなたにそれを提供することに失敗した場合、有能な人によってパッケージ化されたものについてはPackagerフィールドで提供される連絡先情報があるはずです。たとえば、RHELに同梱されているパッケージとサードパーティベンダーのパッケージを次に示します。

$ rpm --qf '%{Packager}\n' -q redhat-release
Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
$ rpm --qf '%{Packager}\n' -q cfengine-community
CFEngine AS ([email protected])

Webサイトと電子メールアドレスがそれぞれあり、specファイルまたはsrpmファイルについて尋ねることができます。

13
dannysauer

使用できます

yumdownloader --source < something.rpm

その後:

rpm2cpio packagename | cpio -ivd
7
kamal

@RumpleStiltskinの回答によると、元のspecファイルは抽出可能なソースrpmにあります。ソースrpmを取得するには、次を実行します。

yum install yum-utils # Only required if yumdownloader is not installed
yumdownloader --source <package name, like 'emacs-nox'>

これにより、パッケージが現在のディレクトリにインストールされます。抽出するには次を実行:

rpm2cpio <package name>.src.rpm | cpio -civ '*.spec'

.specファイルは現在のディレクトリにあります。

何らかの理由でyum-utilsをインストールできない場合は、/etc/yum.repos.d/のファイルを見て、ソースrpmリポジトリーに関するセクションを探してください。 baseurlの値をブラウザに入力して、ソースパッケージを手動で検索できます。 .specを抽出するには、引き続きrpm2cpioが必要です。

7
Rick Smith

通常、specファイルはrpmではありません。それらはソースrpmです。

6

rpmrebuildはあなたの友達です。使用する

rpmrebuild -e -p <rpm_file>

エディターで仕様ファイルを開くときに、rpm仕様を変更することもできます。

5
esmeagol

この簡単なコマンドで、すべての.spec、ソース、パッチを取得できました

$ rpmbuild --recompile --noclean ./SRPMS/somerpm.src.rpm

これで、仕様、srcを変更し、RPMまたはSRPMを再構築できます。

0
Vipin Tripathi