Rpmパッケージからspecファイルを抽出する方法はありますか(RPMファイルしかありません)
ではなく
rpm --scripts -qp my-great-app-1.1.2.rpm
(この構文は、スペックファイルをrpmからのスクリプトのみを取得しません)
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
パッケージャーが何らかの理由で特別に含めない限り、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ファイルについて尋ねることができます。
使用できます
yumdownloader --source < something.rpm
その後:
rpm2cpio packagename | cpio -ivd
@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
が必要です。
通常、specファイルはrpmではありません。それらはソースrpmです。
rpmrebuildはあなたの友達です。使用する
rpmrebuild -e -p <rpm_file>
エディターで仕様ファイルを開くときに、rpm仕様を変更することもできます。
この簡単なコマンドで、すべての.spec、ソース、パッチを取得できました
$ rpmbuild --recompile --noclean ./SRPMS/somerpm.src.rpm
これで、仕様、srcを変更し、RPMまたはSRPMを再構築できます。