問題タブ [rpm-spec]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - スペックファイルのCONFIG_SITEをオーバーライドする方法(ベストプラクティス)
スペックファイルからrpmをビルドしようとしているユーザーが、rpmbuildの実行時に環境にCONFIG_SITEを設定し、スペックファイルが「./configure --prefix = / usr && make」でビルドされた場合、CONFIG_SITEでのユーザーの設定は完全に混乱する可能性がありますビルド。(具体的な例として、/ usr / share/config.siteに"prefix= / bar"という行があるとします。そうすると、スペックファイルのファイルマニフェストが完全に間違って、rpmbuildが失敗します。)
この問題に対処するためのベストプラクティスは何ですか?一般的な習慣はそれを無視することのようです。スペックファイルでCONFIG_SITE=trueを設定することにしました。
rpmbuildを呼び出すときに元の環境を想定するのがより一般的であり、/ usr / share / config.siteにプレフィックスをリセットするような愚かさはありませんか?または、スペックファイルが期待どおりにrpmを構築することを保証するのは、メンテナの責任ですか?
rpm - coreutilsの後にAnacondaにパッケージを強制的にインストールさせるにはどうすればよいですか?
サブパッケージのセットを構築するカスタマイズされたRPMがあります。各サブパッケージのスペックファイルには、いくつかのシンボリックリンクを別のフォルダーにコピーするために使用される%postスクリプトがあります。
実行中のシステムにサブパッケージRPMの1つをインストールすると、正常に動作します。Anacondaを介して(キックスタートパッケージリストの一部として)インストールすると、RPMのインストール後のスクリプトが実行されないようです。
編集:結局のところ 、実際には実行されますが、次のようなエラーが発生します。
どうやら、Anacondaはcoreutilsを依存関係として指定しているにもかかわらず、coreutilsをインストールする前にRPMをインストールしようとしていますRequires:
。
だから、私の改訂された質問はタイトルです: coreutilsの後にパッケージを強制的にインストールするにはどうすればよいですか?
relative-path - RPMを構築するときに、.specファイルの場所を基準にして_topdirをどのように作成しますか?
.spec
という変数に依存するファイルがあります_topdir
。
現在、gitからSRPMソースをチェックアウトするときは、を正しく機能_topdir
させるために、を指している場所を変更する必要があります。rpmbuild
ハードコーディングされないように、ファイル_topdir
の場所に相対的である必要があることをどのように指定しますか?.spec
_topdir
packaging - ソース tarball から rpm パッケージを作成する - ただし、tarball にはスペック ファイルは含まれず、インストール スクリプトのみが含まれます
システム管理者として、RedHat ベースのディストリビューションにインストールする rpm パッケージを提供せず、ソース tarball のみを提供するアプリケーションに遭遇しました。ソース tarball には、rpm パッケージの作成プロセスを簡素化するスペック ファイルが含まれていません。代わりに、ソース tarball は、アプリケーションをシステムにインストールするために root として実行する必要がある bash/ksh/ スクリプトのみを提供します。
基本的にインストール スクリプトを実行してインストール スクリプトを実行する rpm パッケージを作成しようとしました。また、root 以外のユーザーとしてパッケージの rpmbuild を試行し、スクリプトのインストール ディレクトリが rpm 環境/マクロを参照するようにインストール スクリプトをできる限り変更して、正しいことをしようとしました。しかし、数百行の長さの複雑なインストール スクリプトを使用すると、他のスクリプトも呼び出されます...まあ、私はこの努力に失敗する運命にありました。
このような .spec-less ソース tarball をパッケージ化するより良い方法はありますか? より良い解決策は次のとおりです。
- アプリケーションのインストール前に何らかの方法でシステムのスナップショットを取得する
- 提供されたインストール スクリプトを使用してソース tarball をインストールします
- インストール後にシステムのスナップショットを作成し、インストールによって行われた変更/追加を確認します
- 変更/追加のリストを仕様ファイルに入れて、この方法で rpm パッケージを作成しますか?
この問題に対する有用な/関連性のある/有益な/面白い/深遠な意見やアドバイスをいただければ幸いです。
前もって感謝します
linux - RPM のバージョンを更新するにはどうすればよいですか?
RPM バージョンを更新する方法は? スペックファイルで更新して、パッケージ全体を再構築するだけでいいですか?
permissions - RPM 仕様ファイルの %defattr は何を意味しますか?
RPM の作成中、RPM 仕様ファイルにはディレクティブがあり%defattr
ます。その RPM によってインストールされるファイルのデフォルト属性を定義していることは知っています。以下のように書くと%defattr
、どういう意味ですか?
rpmbuild - rpmbuild の失敗: エラー: インストールされた (パッケージ化されていない) ファイルが見つかりました:
これが質問を投稿するのに適切な場所かどうかはわかりません。自分のプロジェクト用に rpm を作成しようとしていますが、仕様ファイルを作成するのはこれが初めてです。コマンドでファイルの仕様を構築しているとき
rpmbuild -ba name.spec
仕様ファイルへのリンク ( http://pastie.org/2426321 ) を見つけてください。これに関するヘルプは大歓迎です。前もって感謝します。
rpm - RPM スペック ファイルのビルド フェーズ中の RPM 依存関係エラー
libmy.so
私の目的は、 RPM を介してインストール可能なライブラリとして既にビルドされているものを配布することです。
以下は、.spec ファイルのスニペットです。
のコンパイル時に、別の RPM の一部としてインストールされているものlibmy.so
にリンクしています。libxx.so
上記のステップ 1 の一部として作成された RPM のインストール中libxx.so
に、マシンにインストールされていても、次の依存関係エラーが発生します。
以下のことを試しました。
分析中に、 が配置されているパスがlibxx.so
に存在しないことがわかりましたld.so.conf
。ただし、あるパスのエントリを追加libxx.so
しても役に立ちませんでした。
この依存エラーを取り除くために追加の手順を実行する必要があるかどうかをお知らせください。