パッケージが/ optにインストールされたのはなぜですか?


8

しばらく前に、debianマシンのソースからcouchdbをインストールしました。正常にインストールされているようで、すべてが機能しました。

数週間後、dpkgを使用して.debからアップグレードしてインストールしたいと思いました。現在、すべてがにインストールされているよう/optです。すべて正常に動作しているようですが、なぜにインストールされているのかよくわかりません/opt/usr/local/binand /etcとに直接インストールしたときのように「スムーズ」に感じません/var/log。/ etc / couchdbにインストールされている構成ファイルを以前編集したばかりのときよりも、構成するのが面倒です。

なぜへのインストール/optが「良いこと」で、なぜこれがソースからの以前のインストールよりも優れた方法であるのかを誰かに説明してもらえますか?

私はこれがかなり漠然とした質問であることを知っていますが、私はLinuxに精通していて専門家ではなく、インストールの背後にある考え方を理解していません /opt


たぶん/ debianタグが欠けているのでしょうか?
D4RIO 2011年

/ optにインストールされたDebianパッケージと言っていますか?もしそうなら、それは間違ったことをしています。/ optにインストールされているGoogle Chromeアプリケーション(現在はインストールされていません)もあります。パッケージシステムによって管理されるすべてのものは、メインシステムに入る必要があります。
Faheem Mitha、2011年

これをより注意深く見たところ、Debianパッケージのインストール(公式かどうかに関係なく)を/ optにインストールしてはならないという明確な声明は見つかりませんでしたが、これを行うべきではないという強い印象があります。ネット上でそうするのは間違っているというさまざまなコメントがあります。もっと明確なことがあれば、投稿します。申し訳ありませんが、Debianは非公式パッケージを公式パッケージとは別の場所にインストールすることを期待または要求していません。
Faheem Mitha、2011年

回答:


10

Filesystem Hierarchy Standardには、これらの定義を与えます:

  • /opt :アドオンアプリケーションソフトウェアパッケージ
  • /usr/local :ローカル階層(システム管理者がソフトウェアをローカルにインストールするときに使用)

私がそれを読む方法:

  • 標準のシステムアプリケーションを使用する必要が/binあります/usr/bin(暗黙)
  • サードパーティのパッケージを入れる必要があります /opt
  • /usr/localシステム管理者が希望する場合にのみ、何かをインストールする必要があります

拡張機能により、システム管理者がdpkgまたはを使用して何かをインストールする場合、デフォルトでrpmは実行さ/usr/localれません。

したがって、間違いなく正しいことを行っています。


IBMのWebsphereアプリサーバーは/ optに配置されます。また、IBM JDKなどをインストールする場合は、/ opt / javaに配置します。
djangofan

5

Debianポリシーによると

9.1.2サイト固有のプログラム

FHSで義務付けられているように、パッケージは/usr/local、dpkgによって解凍されるファイルシステムアーカイブにファイルを配置するか、メンテナースクリプトでそれらを操作することによって、ファイルをに配置しないでください。

に対するそのような特定の禁止事項はありません/opt。ポリシーにも追加

インストールされているすべてのファイルとディレクトリの場所は、ファイルシステム階層標準(FHS)バージョン2.3に準拠している必要があります。ただし、以下に示す例外を除き、そうすることでDebianポリシーの他の条件に違反する場合を除きます。

ファイル階層標準は言う

ディレクトリは/opt/bin/opt/doc/opt/include/opt/info/opt/lib、および /opt/manローカルのシステム管理者の使用のために予約されています。

そしてさらに下へ

ディストリビューションはにソフトウェアをインストールできますが/opt、ローカルシステム管理者の同意なしに、ローカルシステム管理者がインストールしたソフトウェアを 変更または削除してはなりません。

ポリシーはDebian自体を対象としていますが、通常はベストプラクティスの推奨事項に対応しています。正解は、これを正しく読んでいる場合、バイナリ(deb)パッケージを/usr/localにインストールする/optことは問題ありませんが、システム管理者によるスペースの使用を妨げない限り、インストールすることは問題ありません。

私の個人的な意見では、/usr/localまたはのいずれかにdebパッケージを含めることは悪い考え/optです。彼が言うとき、私はD4RIOに同意しません:

DebianのためのCouchDBパッケージ(私が意味する、公式の)、あなたは別のものをダウンロードした場合ので、それは[OK]を、それがインストールされている必要がありますあります/opt/usr/local/binのいずれかで。

インストールされた同じソフトウェアに対応する2つの異なるdebパッケージが一般的に必要になることはありません。それらが実際に同じパッケージ名である場合、dpkgはそれを許可しません。公式パッケージとして利用可能なソフトウェアの非公式Debianパッケージは、一般に(常にではないが)公式パッケージと同じ名前を持っています。両方ではなく、どちらか一方のみをインストールします。

価値があることについては、私はdebパッケージを入れるの/optは悪い考えだと思います、そして私が見たこの唯一の最近の発生はGoogle Chromeでです。ただし、Googleは常にベストプラクティスに従うわけではありません。


特に/ usr / binのように他の場所にファイルを配置する場合は、パッケージを/ optにインストールしないでください。Imho / optには完全に自己完結型のソフトウェアが含まれている必要があるので、単に/ optから削除するだけで、軌道からそれを核にできます。
Arrowmaster

素晴らしい応答ありがとうございますが、デフォルトでは/ optにインストールされています。/ optを使用しない場合、どこにインストールすればよいですか?そして、どのようにdpkgを使用してそうするのですか?

@Duke:debパッケージのソースを入手できる場合は、通常のパッケージのようにdebを再ビルドしてシステムにインストールできます。手順に慣れていない場合は、少し作業が必要になりますが、ここではimoが適切です。
Faheem Mitha、2011年

1
この答えに同意しないでください。2つのバージョンのソフトウェアをインストールする必要がある状況はたくさんあります。特定のアプリケーション用に特定のpythonを簡単に作成できます。ローカルのシステム管理者は、このpythonをパッケージ化したいと思うかもしれませんが、どこに行くべきですか?ローカルにインストールされた(make install)ソフトウェアは/ usr / localに、3番目のパッケージソフトウェアは/ opt /に入れられます-パッケージの定義は広く保たれます:dpkg経由、インストーラー経由、PIP経由、(選択したパッケージシステムを挿入)。自己完結型の「プロバイダー/パッケージ」の良い習慣であることに同意します。
ashwoods

4

/optサードパーティのソフトウェア用です。DebianのためのCouchDBパッケージ(私が意味する、公式の)、あなたは別のものをダウンロードした場合ので、それは[OK]を、それがインストールされている必要がありますあります/opt/usr/local/binのいずれかで。


2

Debianではありませんが、Fedoraパッケージングガイドラインはこれについてかなり明確です:

…Fedoraパッケージは/ optまたは/ usr / localの下にファイルまたはディレクトリを持つことができません…

パッケージが/ optに物を入れない理由は非常に単純です。前に指摘したように、ファイル階層標準は次のように述べています…

ディストリビューションは/ optにソフトウェアをインストールできますが、ローカルシステム管理者の同意なしに、ローカルシステム管理者がインストールしたソフトウェアを変更または削除してはなりません。

これは、インストールまたは更新によってそのようなデータが変更される可能性があるため、パッケージでは保証できないものです。

私はFedoraがDebianではないことを知っていますが、この場合、それらは非常に似ていると思います。特に、DebianのパッケージチェックツールであるLintianには、これに関する特別なエラーがあります。dir -or-file-in-opt

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