私たちは、32ビットおよび64ビットプラットフォーム用の当社製品のRPMをビルドします。 RPM仕様での製品の名前は、私たちは64ビットの回転数を構築するために32ビットの回転数と--target x86_64
を構築するために、コマンドラインをrpmbuildのために--target i586
を渡す特定のアーキテクチャー向けのrpmアップグレード
Name: foo
のようなものを定義しています。 rpm archを製品のインストールディレクトリにエンコードして、32ビット版と64ビット版の両方を同時にインストールできるようにします。
rpmsをうまくインストールできます。例:foo
製品、バージョンV4.1の32ビットおよび64ビットのバリアントのインストール:
rpm -i foo-4.1-i586.rpm
rpm -i foo-4.1-x86_64.rpm
をしかし、私たちがインストールされている製品のバージョン4.2 32ビットのバリアントにアップグレードしようとすると:
rpm -U foo-4.2-i586.rpm
RMPは、両方の32ビットを削除し、 64ビット版のインストール済み製品これは望ましくない。ですから、問題は、選択されたアーキテクチャだけをアップグレードできるように、スペックファイルやrpmコマンドラインをどのように微調整するべきなのでしょうか? 明白な解決策は、このように、スペックファイルにパッケージ名でアーチをエンコードするために、次のようになります。
Name: foo-%{_arch}
をしかし、これはパッケージ名のための共通のアプローチのようにしていません。お知らせ下さい。
rpmbuildはバイナリRPMに正しいアーキテクチャを設定します。だから、他のツールに切り替えても問題は解決しない。 –