SRPMを解凍、変更、再構築、およびインストールする方法


9

Fedora 15パッケージ(gnome-shell-extensions-alternative-status-menu)を変更したいと思います。これは小さな変更です(このコミットを元に戻します)。使用してyumdownloader、私は(SRPMをダウンロードすることができますよgnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm)。

この後、解凍して再構築するにはどうすればよいですか?


最近の編集を@mdpcの回答へのコメントに変更するか、問題の解決に役立つ手順を含む独自の回答を追加する必要があります。質問自体から回答データを除外してください。
カレブ

@Caleb完了!(あと3つ...)
Vitor Py 2011

回答:


7

ROOTユーザーとしての私:

  1. 他のパッケージと同様にSRPMをインストールします(rpm --install [source-rpm-filename]

  2. 調べ/root/rpmbuild/SPECSディレクトリをし、あなたのパッケージにマッチするスペックファイルを見つけます

  3. rpmbuild -bb /root/rpmbuild/SPECS/[found-filename]

結果のバイナリパッケージは、/root/rpmbuild/RPMS/ディレクトリに配置され、標準rpm --installコマンドを使用してインストールする準備が整います。

注:これは、標準のバイナリパッケージの内容をビルドするだけです。私はこれを投稿して、ソースに変更を加えて新しいパッケージを生成する方法ではなく、特定の質問に答えています。

修正を行うには、パッチを入力として提供してSPECSファイルを変更するか、またはにある標準を独自の標準*.tar.bz2に置き換えて、/root/rpmbuild/SOURCES上記のようにビルドを実行します。

SPECSパッケージを機能させるために変更する必要がある場合があることに注意してください(通常、パッチを抜き、SPECSファイルによってプログラムされているいくつかのファイル名を変更します)。


編集

rootは悪い習慣(ソース)であるため、rpmをビルドしているようです。root以外のユーザーとしては問題なく動作します。

パッチを追加するための詳細な手順(ここから):

  1. パッチをにコピーしますrpmbuild/SOURCES
  2. を編集し、行の直後に権利rpmbuild/SPECS/package.specを追加します。Patch0: mypatch.patchSource0: ...
  3. %setup ...行の後に行を追加し%patch0 -p1ます

これで正常にビルドされます。と:rpmbuild -ba SPECS/package.spec


2
インストールはrootとしてのみ行われ、rpmbuildでは行われないことを明確にする必要があります。rpmファイルのビルドは、rootで実行しないでください。
カレブ2011

@Calebルート以外のパッケージをインストールしました。rpmは〜/ rpmbuild階層に配置します。また、私はあなたが質問で提案したとおりにし、追加の手順をここに入力しました。
Vitor Py 2011

ほんの2、3のメモ:sudo dnf install rpmdevtoolsrpmbuildコマンドに必要です。%patch0 -p1スペックファイルが1 %autosetup行ではなく%setup1 行を使用している場合は、その行を省略します(%autosetupパッチを自動的に適用するため)。
ネルソン

また、オリジナルのRPMを上書きして新しいRPMをインストールするには(オリジナルがすでにシステムにインストールされている場合)、次の手順を実行しますsudo rpm -ivh --force your.rpm
Nelson

4

OpenSSLパッケージの再構築CentOS 6.4は、SRPMパッケージの再構築の詳細な例です。

上記の例では、パッケージビルダーのJedi Light SabreであるMockを使用しています。

Mockは、chrootに確実にデータを入力し、そのchrootでパッケージを再構築するために作成されました。

詳細については、http://fedoraproject.org/wiki/Projects/Mockを参照してください

この例では、モックが3回使用されています。1回はパッケージを「アンパック」し、次に.src.rpmを再ビルドし、最後に.rpmを作成します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.