「dir-or-file-in-usr-local」が警告ではなくエラーであるのはなぜですか?

「dir-or-file-in-usr-local」が警告ではなくエラーであるのはなぜですか?

私はいくつかのrpmパッケージを構築しrpmlint、 。私たちのパッケージには、社内ソフトウェア、リポジトリのソフトウェアパッチバージョン、公式リポジトリで利用できないソフトウェアなど、さまざまなソフトウェアが含まれています。私たちは/usr/localいくつかの理由でローカルパッケージをインストールします。

  • 公式パッケージとの名前衝突防止
  • yum updateローカルパッケージの損傷を防ぐ
  • ローカルパッケージを別々のパーティションまたはディスクに常駐させることも、NFS経由で共有することもでき、ホスト間でパッケージと構成を共有できます。
  • bin標準インストールパス(、、libなど)includeに従わない公式リポジトリ以外のソースからインストールされたパッケージをより効果的に制御できます。share

ただし、たとえば、GNU Hello Worldのカスタムビルドでは、次のようにrpmlint言う必要があります。/usr/localrpmlint -i

hello.x86_64: E: dir-or-file-in-usr-local /usr/local/hello-2.8/bin/hello
A file in the package is located in /usr/local. It's not permitted for
packages to install files in this directory.

わかりましたファイルシステム階層標準、これによると:

「/usr/local」の元のアイデアは、「/usr」に加えて、各システムに別々の(「ローカル」)「/usr」ディレクトリを置くことでした。このディレクトリは、他の場所からインストールする場合は読み取り専用にすることができます。 "/usr"の構造をコピーします。今日、「/usr/local」は、独自のコンパイルされたプログラムやサードパーティのプログラムを保管するのに最適な場所と広く考えられています。 /usr/local階層は、システム管理者がソフトウェアをローカルにインストールするときに使用します。システムソフトウェアが更新されたら上書きしないでください。ホストグループ間で共有できますが、/usrにはないプログラムやデータに使用できます。ローカルにインストールされているソフトウェアは、/usrのソフトウェアを交換またはアップグレードするためにインストールしない限り、/usrではなく/usr/localになければなりません。

実際には/usr/local、これらの理由から、我々はこれらの規格に準拠し、ローカルソフトウェアをインストールするので、パッケージマネージャを使用して/usr/local。 。ローカルパッケージ間の一貫性に加えて。それでは、rpmlintファイルにエラーが発生するのはなぜですか/usr/local?これは包装業者で決めてはいけませんか?このエラーを無視するか、少なくともrpmlint警告を印刷できますか?

ベストアンサー1

rpmlint特定のパッケージング戦略に基づいてRPMを確認するためのツールです。その構成は通常ディストリビューションによって異なり、パッケージは特定のデプロイメントポリシーで検証されます。あなたが望むものなら、自分のバッグをチェックしてください。

ポリシーが展開ポリシーと異なる場合は、rpmlintそれに応じて構成、使用を避ける、または特定のエラーを無視する必要があります。

/etc/rpmlint/configまたは(テストされていない)に追加されたら、~/.config/rpmlintこのトリックを実行する必要があります。

addFilter("E: dir-or-file-in-usr-local")

源泉:

おすすめ記事