自分でコンパイルしたソフトウェアはどこに置くべきですか?


回答:


90

経験則、少なくともDebian風味のシステムでは:

  • /usr/local「システム全体」であるもののため-ieは、/usr/localディストリビューションのデフォルトになる傾向があり$PATH、かつで標準のUNIXのディレクトリ階層をたどる/usr/local/bin/usr/local/libなど、

  • /optもののためにあなたがあたりアプリプレフィックス-すなわちで、システム全体の作るために信頼していない/opt/firefox-3.6.8/opt/mono-2.6.7など。ここでの作業には、より慎重な管理が必要ですが、システムを破損する可能性は低く、フォルダーを削除するだけで削除されるため、削除も簡単です。


興味深いことに、多くのプログラム/アプリケーションは、インストールする/opt場合にインストール先を自動的に提案しますsudo
HongboZhu

50

本当に干渉したくない場合は、のどこにも置かないでください$PATH

必要な場合は$PATH、少なくともにインストールしないでください/usr/local。ディストリビューションによってにインストールされていても、多くのソフトウェアがそこにあることがわかりました/usr

カスタムコンパイルされたソフトウェアをインストールするための私のお気に入りの方法は、私の中にある$HOMEディレクトリ。そうすればsudo、何にも使用する必要がなく、システムの他の部分から非常にうまく分離されます。例えば:

mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install

必要に応じて、に追加でき/home/username/stage/binます$PATH


1
間違いなく、ホームディレクトリを使用するのが最適なオプションです。IMO。
-bitek

1
+1合意。bash / ruby​​ / pythonスクリプトには〜/ sbinが、コンパイル済みインストールには〜/ opt / ...が、エイリアスは〜/ binにあります。
クリス

4
物事を簡単にするため、ホームディレクトリを使用して+1。-1は$ PATHを避けるための提案です。実際には、標準(たとえば、/usr/local)に従って「ローカルインストール用に予約済み」のディレクトリがあります。
リッカルドムリ

1
/ usr / localを避けるという私の提案は、パッケージ化されたソフトウェアに干渉しないという元のポスターの(やや曖昧な)欲求に基づいていました。/ usr / localまたは$ PATHを調べることで「役立つ」パッケージ化されたソフトウェアがたくさんあるので、私はそれが干渉と見なされると考えました。しかし、それは本当に個人の個々のニーズと目標に依存します。/ usr / localは、多くの状況で完全に適切な選択となります。
サンディ

コメント#2の文字「s」の完全な誤解に気づいた人はいませんでした。削除する必要があります
-meffect

20

FHSは、/ usr / localにそれを置くために述べているディストリビューションは、それに触れるべきではないところ。 ソースおよびライブラリ/usr/local/binのバイナリ/usr/local/src/usr/local/lib。詳細については、FHS仕様を参照してください


構成はどうですか?パッケージマネージャーを使用せずにMySQLをインストール/etc/mysqlしたとします。構成に引き続き使用する必要がありますか?
ウブロ

/usr/local/etcデフォルトでフォルダがあることに気付いたので、それを使用すべきだと思います... :
Hubro

10

ほとんどの場合、私は自分でコンパイルしたものをに配置するのが好き/optです。それは一種の疑似標準的な場所です。を検討することもできますが/usr/local、私は自分のものを100%隔離しておくことを好みます。


1
のは、/ OPT(通常は独自のパッケージ)にかなりの数のものを入れる傾向にあるディストリビューション/ optがディストリビューションは、それに触れることができないと言うことはありません。ただし、/ usr / local
xenoterracide

1
私は、中のものを入れたディストリビューションを見たことがない/optが、私は何度も見てきた、/usr/localディストリビューションから来るんジャンクが散らばっているが
スコット・アンダーソン

私が使用しているディストリビューションは/ optにjavaを配置するのに使用します。アクロバットリーダーも見ました。/ usr / localにファイルを置いている場合、システムの更新時に上書きされないようにする必要があると言うFHSは無視されます。
xenoterracide

それぞれに、私は推測する。FHSは素晴らしいですが、時々無視されると思います。
スコットアンダーソン

ディストリビューションパッケージが配置され/usr/localているのは、標準ツリーのディレクトリ階層に対応するディレクトリ階層と、TeXなどのインデックスファイルだけです。
フィルミラー

9

それらを置きます/usr/local/src

私がしていることは、このディレクトリでソースを抽出することです。次のようなパスを作成します

/usr/local/src/postgresql-8.3.7

次に、シンボリックリンクを作成します。

/usr/local/src # ln -s  postgresql-8.3.7 postgresql

すべての建物をでしてください/usr/local/src/postgresql

このようにすることは、バージョン間でポップする必要があるときに役立ち、使用しているバージョンを文書化します。


1
根拠とバージョン管理を含むOPの適用方法を示す+1。
-samt


5

可能性がある場合-ソフトウェアをコンパイルしてからFCパッケージを作成することをお勧めします(yumを使用してソフトウェアパッケージをインストールしていると思われます)。その後、コンパイルしたソフトウェアのパッケージをインストールし、システム全体を台無しにすることなく削除できます。


5

自分で作成した複数のアプリケーションを簡単にインストールおよび削除できるようにしたい場合は、単純なパッケージマネージャーとしてStowを使用できます。


5

パーFHS/usr/local/一方で、ソースからコンパイルされたアプリケーションのために使用されている/opt/オペレーティング・システム・ベンダーによってサポートされていないサードパーティのアプリケーションに使用されます。


4

私がお勧めする2つのこと:

システム全体:stowを使用して、/ usr / local / stow / package-versionの下にインストールします。その後、バージョンを簡単に切り替えることができます。

私の家で、または/ usr / localの書き込み権限がない場合は、プログラムを〜/ .localに個人的にインストールします。これは、XDG標準で示唆されています

ローカルでstowを使用することもできますが、私は決してしませんでした:)


3

私は多くの開発を行っているため、ほとんどの人とは少しセットアップが異なります。ものをインストールする/ home / jackson / bin /ディレクトリがあり、これを追加して.bashrcを編集しました:

export PATH=/home/jackson/bin/bin::$PATH
export LD_LIBRARY_PATH=/home/jackson/bin/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/jackson/bin/lib/pkgconfig:$PKG_CONFIG_PATH

私はすべてのためにこれをするわけではありませんが、開発中にそれは素晴らしいです。


3

実際には、ソースtarballからdebやrpmを作成するのはそれほど難しくありません。そうすれば、ディストリビューションのパッケージマネージャーの機能を使用して、システムをクリーンに保つことができます。これはほとんどの場合、私がすることです。ちょっとしたrpmを作成するだけです。


2

アプリケーションをコンパイルする場合は、実行可能ファイルのパスをPATH環境変数に追加できます。これは他のユーザーには影響しません。


どうして反対票を投じるのかな?「バランスオフ」のようなものに+1
プネヘヘ

私もなぜ疑問に思っています:-)。私はインストール許可を持っていないcscopeを使用するために同じソリューションを使用しました。
ヘマント

@phuneheheおそらく質問に答えようとさえしないからです。質問はソフトウェアをどこに配置するかを尋ねます。この答えは、どこかに置いた後にできることのヒントを提供します。どのフォルダを使用するかについていくつかの提案をすることで改善できます。
JBentley

2

「所属する場所に置く」オプションは常にありますが、最初に単純なrpmを記述します。


1

システム上のすべてのユーザーがアプリケーションを使用できるようにし、必要な権限がある場合は、/ optを使用します。アプリケーション(およびroot)のみがアプリケーションを使用できるようにするには、/ home / usernameを使用します


0

これを行う最も簡単な方法は、ソースパッケージ(.src.rpmRPMiteの場合)を取得し、それを解凍し、新しいソース/構成などをハックし、バージョンを適切に変更してビルドすることです。これをインストールすると、パッケージマネージャーが新しいパッケージを認識し、依存関係とアンインストール/更新を考慮できるようになります。

これは初めての面倒な作業ですが、新しいバージョン(または重要なパッチ)がリリースされた場合は、更新が簡単になります。もう1つの利点は、ローカルソフトウェアを使用して独自のリポジトリを作成し、ラボのマシンなどで共有できることです。


0

RPMを書くことは難しくありません。物を置く場所に関するガイドラインがあり、アンインストールが簡単になります。

これを行う場合は、パッケージングシステムを経由する他のすべてのファイルと同様に、の下/usrではなく下にファイルをインストールします/usr/local

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