rpmパッケージからスペックファイルを抽出する方法はありますか(RPMファイルしかありません)
によってではない
rpm --scripts -qp my-great-app-1.1.2.rpm
(この構文は、rpmからのスクリプトのみをスペックファイルに取得しません)
rpmrebuildをインストールし、rpmファイルまたはすでにインストールされているパッケージのスペックファイルを「抽出」(実際には再作成)します。
例:
rpmrebuild --package --notest-install -e oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm
rpmrebuild -s hercules.spec hercules
スペックファイルは、パッケージャーが何らかの理由で具体的に含めない限り、バイナリrpmで保存されません(実際にそうする理由はありません)。バイナリrpmから取得できる唯一の情報は、返される情報とリストさrpm -qi <package>
れるファイルです。rpm -ql <package>
それ以上が必要な場合は、ソースパッケージを見つける必要があります。グーグル/ベンダーのウェブサイトがあなたにそれを提供しない場合、有能な人によってパッケージ化されたものについては、パッケージャーフィールドに連絡先情報が提供されているはずです。たとえば、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 (packager@cfengine.com)
そこには、それぞれ、スペックファイルまたはsrpmファイルについて質問できるWebサイトと電子メールアドレスがあります。
通常、spec ファイルは rpm にはありません。それらはソースrpmにあります。
あなたが使用できる
yumdownloader --source < something.rpm
それから:
rpm2cpio packagename | cpio -ivd
この単純なコマンドで、すべての .spec、ソース、パッチを取得できました
$ rpmbuild --recompile --noclean ./SRPMS/somerpm.src.rpm
これで、spec、src を変更し、RPM または SRPM を再構築できます。