問題タブ [rpmbuild]
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.
java - MacOsX rpmbuild--targetnoarchが機能しない
MavenでrpmをビルドするJavaプロジェクトがあります。noarchパケットを作成する必要がありますが、具体的なarchが表示されます。MacOsXのmacports経由でrpm(4.4.9または5.2.0)をインストールし、mavenrpmプラグインからコマンドを実行します。
Mavenプラグインはオプション「--targetnoarch」を使用しますが、rpmbuildはそれを完全に無視します。noarch.rpmファイルが必要ですが、rpmbuildが4.4.9バージョンとx86でi386を作成するのはなぜですか?
アップデート
呼び出しrpmbuilderの1つの動作するバリアントを見つけました。ビルド*.noarch.rpmファイル:
別の変種、ビルド* .i386.rpmファイル:
理解できません。何か案は?
PS私の英語は申し訳ありませんが、それは私にとって難しい言語です。
rpm - OS の新規インストール後にシステム構成用の RPM を構築することはできますか?
私がやろうとしているのは、OS の新規インストール後に実行する RPM を作成することです。私が作成したカスタムスクリプトを実行して、現在OSに多くのものをコピーし、さまざまなサービスなどを構成し、一連のrpmをインストールしたいと考えています。これができれば、必要なのはフラッシュ ドライブにある 1 つの rpm ファイルだけで、内部にすべてが含まれています (入力する必要があるのは rpm -i xxx.rpm だけです)。私は現在持っています(現在install.shと入力しています)。これはできますか?
java - rpmbuild は tmp ファイルを作成し、それらを削除しようとすると「許可が拒否されました」という理由で失敗します
バックグラウンド
いくつかの Web アプリのソース ファイルをインストール ディレクトリにコピーするだけの単純な rpm を構築しようとしています。Web アプリケーションは Java で作成され、ベンダーによって提供されます (つまり、私が作成したものではありません)。
以下のエラーにより、rpm のビルドに失敗します。しかし、同じベンダーの別の Java ベースの Web アプリ用にほぼ同じ rpm を構築することに成功しました。スペック ファイルは、インストール パスやソース ファイル名などの名前を除いて同じです。
問題
rpmbuild -v -bb --clean SPECS/web-app.spec
Permission denied
内のいくつかのファイルを削除しようとすると、 で失敗します{BUILDROOT}/web-app-1.0/tmp
。
rpmbuild
削除できなかったファイルのアクセス許可を確認しました。以下にいくつかの例を示します。
彼らは私のビルド ユーザー ( signer
) の正しい所有権とグループを持っていますが、書き込み権限はありません。
これらのファイルは、rpm 仕様で明示的に定義したプロセスの一部ではありません。私の仕様ファイルは run %setup
、ディレクトリを作成し、そこにファイルをコピーするだけです。抽出されたソース tarball に%setup
は、そのすべてのファイルに対する適切なアクセス許可があります。作成したツリーを抽出して削除できます。これらのファイルは、ソース tarball の一部ではありません。tmp
ファイルは Java ファイル処理に関連していると思います。rpmbuild
ビルドの終わり近くでjarファイルを「再圧縮」するのに長い時間がかかりました。それが何の目的なのかわからないし、私が展開しているアプリにそれが必要かどうかも疑わしい.
質問
これを修正するために、jar ファイルの再圧縮を無効にすることはできますか? 他のアイデアはありますか?
rpm - rpm -e はインストールされたディレクトリを削除しませんでした
全て、
rpm.spec ファイルを使用して RPM パッケージを作成しました。パッケージは正常にインストールされました。rpm -e を使用してパッケージを削除すると、RPM データベースから削除されました
ただし、pkg が作成したディレクトリ構造は削除されませんでした。
この問題を解決するのを手伝ってください。
rpmbuild - Rpmパッケージ情報:自動インクリメントバージョン
rpmパッケージにある情報のバージョン/リリース番号を自動インクリメントする方法があるかどうか誰かが知っているだろうかと思います。
すなわち
rpm -qil'package_name'
次のようなものが返されます:
rpmbuildを実行するたびにリリース番号を自動インクリメントする方法はありますか?rpm情報はスペックファイルにあります。
前もって感謝します!
rpm - tarball の代わりにソースだけを使用して rpm を構築する方法
Linuxディストリビューションのセット用のrpmを作成するこのビルドプロセスがあります。
この作成には非常に時間がかかるため、最適化しています。rpmbuild を調べたところ、rpmbuild は tarball を取得して展開し、ビルド プロセスを開始することがわかりました。
tarball の使用を避ける方法はありますか?? すでにソースからプロセスを開始しているため、それを tarball に圧縮しますが、rpmbuild は tarball ではなくソースで動作するため、これは役に立たないようです。
centos - /var/tmp/rpm-tmp.ajKra4(%prep)からの不正な終了ステータス
私は奇妙なRPMの問題を抱えています、私はそれに慣れていないので私に耐えてください...私はスペックファイルを作成しました、そして私がビルドをするために走るとき私はエラーを受け取ります:
/var/tmp/rpm-tmp.ajKra4:行36:cd:hero-01:そのようなファイルまたはディレクトリエラーはありません:/var/tmp/rpm-tmp.ajKra4(%prep)からの不正な終了ステータス
次に、その一時ファイルを確認し、存在しないディレクトリにCDを挿入しようとしています。スペックファイルにこれを作成する必要がありますか?もしそうならどこ?
これが私のスペックファイルです:
おそらく私は何かが欠けていますか?最初の笑ではないでしょう、ありがとう
そのtmpファイルが出力しているものも次のとおりです。
compression - rpmbuildは圧縮形式を変更します
ジオサーバー用のいくつかのマップファイルを内部rpmパッケージにパックしようとしています。ビルド部分の場合、これはファイルをコピーするためだけのものです。これは期待どおりに機能すると思います。しかし、これらの20GBの画像をパックするには非常に長い時間がかかります。
rpmがデータを内部的に圧縮し、これはいくつかの異なる圧縮アルゴリズムで実行できることを読みました。しかし、rpmがどの圧縮を選択し、これにどのように影響を与えることができるかについての手がかりはありません。rpmbuildコマンド、specfile、またはリストできる一般的なrpmオプションのオプションが見つかりませんでしたrpmbuild --showrc
私はrpmbuildとspecfilesの経験はあまりありませんが、rpm.orgの多くのマニュアルページとチュートリアルを読んだ後、それ以上のアイデアはありません。
私が使用するspecfileは次のようになります。
私はこのようにrpmbuildを呼び出します:
助言がありますか?
rpmbuild - RPM %files、ファイルを同じにするのではなく、異なるビルドおよびインストール パスを指定する方法
ファイルに別のビルド パスとデプロイ パスを指定したいのですが、どうすれば指定できますか? パス A のビルド ボックスにファイルのディレクトリがあり、これらをパス B にインストールしたいと考えています。
アイデアをありがとう
rhel - RHEL 5.7 と RHEL 6.1 での rpmbuild の違い
RHEL 5.7 マシンと RHEL 6.1 マシンの両方で機能する rpmbuild を使用して RPM をビルドしようとしていますが、rpmbuild/SOURCE ディレクトリを構成する方法がわかりません。
私の理解によると、私のパッケージ名が XXX の場合、rpmbuild/SOURCE/XXX.tar.gz を含む tarball を準備する必要があります。 1. XXX という名前のディレクトリ。2. インストールするすべてのディレクトリとファイルは、パスがルート ディレクトリ (つまり /) からの相対パスであるかのように順序付けする必要があります。
たとえば、foo.sh というファイルを /tmp/XXXdir/ にインストールする場合、rpmbuild/SOURCE/XXX.tar.gz に XXX/tpm/xxxdir/foo.sh を含める必要があります。
これは私が理解したことであり、RPM を RHEL 5.7 マシンにインストールすると機能します (つまり、上記の例では、ファイルは /tmp/XXXdir/foo.sh にインストールされます)。しかし、RHEL 6.1 マシンでは、ファイルが新しく作成された /XXX ディレクトリにインストールされるという望ましくない動作が発生し、そこから / に必要な同じツリー構造が取得されます (つまり、上記の例では / にファイルが取得されます)。 XXX/tmp/XXXdir/foo.sh)。
なぜこれが起こるのか分かりますか?おそらく、私の rpmbuild/SOURCE 構造が間違っているのではないでしょうか? どんな洞察も非常に役に立ちます。
前もってどうもありがとう、Lior