web-dev-qa-db-ja.com

FreeBSDでの/ usr / localディレクトリの役割

私が使用したLinuxとは異なり、FreeBSDでは、anyポートを使用しなくても、/usr/localディレクトリは通常のインストールで大量に使用されます。実際、非基本シェル(BashおよびZ-Shell)はそこに配置されます(/usr/local/bin内)。

Linuxでは、カスタムビルドのスクリプトまたはソフトウェアを/usr/localツリーに配置して、配布ソフトウェアから明確に分離できるようにしておくと便利でした(たとえば、/usr/localを使用して、これらの「変更」を簡単に「非アクティブ化」できます)。 $PATHの外)。

これの背後にある理由は何ですか?また、FreeBSDをLinuxのように動作させる方法があるとは思えないので、すべてのユーザーがアクセスできるカスタムビルドソフトウェアとファイルをインストールするためのベストプラクティスは何でしょうか。

6
wolf-revo-cats

Linuxでは、カスタムビルドのスクリプトまたはソフトウェアを/usr/localツリーに配置して、配布ソフトウェアから明確に分離できるようにしたのは良かったです。

そして、それはFreeBSDで得ているものとまったく同じです。 ZシェルやBourneAgainシェルのようなシェルは、FreeBSDの一部ではありません。これらはサードパーティによる追加です。オペレーティングシステムは、スラング名「base」で呼ばれることもあります。一般に、BSDの世界では、「ベース」に加えてサードパーティが追加したものは、/usrにはありません。彼らは/usr/localに住んでいます。

BSDの世界では、これはOpenBSDのような他のBSDオペレーティングシステムにも当てはまりますが、//usrで動作し、/usr/localではオペレーティングシステムではないものを取得します。追加なしでオペレーティングシステムの機能だけが必要な場合は、何をしているのかを考慮せずに/usr/localを取ります。

これへのわずかなひねりは、TrueOSサーバーやTrueOSデスクトップのようなFreeBSD派生物が、FreeBSDの上にそれらの追加がオペレーティングシステムの一部でないと控えめに考えるということです。そのため、オペレーティングシステム以外のものと一緒に/usr/localに存在するTrueOSのすぐに使えるものがたくさんあります。例:ここには、TrueOSディスプレイマネージャーであるPCDMがあります。

逆に、/usr/localは、allオペレーティングシステムの一部ではないカスタムビルドのソフトウェアが使用される場所です。

この分割がどれほど強いかを示すために:

  • オペレーティングシステム以外のもの用のMewburn rcスクリプトは/usr/local/etc/rc.d/に入り、/etc/rc.d/に追加されません。 /usr/local/etc/rc.d/nginxが見つかる場所です。
  • 非オペレーティングシステムの構成ファイルは、/usr/local/etc/ではなく/etc/にあります。 /usr/local/etc/cupsが見つかる場所です。
  • オペレーティングシステムのマニュアルがある/usr/share/manと非オペレーティングシステムのマニュアルがある/usr/local/manには違いがあります。

パッケージマネージャー自体も(現在のところ)適切なオペレーティングシステムの一部ではありません。 「ブートストラップ」パッケージマネージャー、pkg-staticがあります。これにより、/usr/local/etc/pkgに構成ファイルがあり、それ自体がアドオンである実際のパッケージマネージャーであるpkgがインストールされます。

Linuxの「ディストリビューション」の世界から生まれる概念的な飛躍は、「ディストリビューション」が提供するパッケージのミッシュマッシュから選択してオペレーティングシステムを構築することはできないということです。完全なオペレーティングシステムを1つの一貫した単位として取得し(インストーラーによってインストールされ、freebsd-updateでアップグレードされ、ZFSを使用して単一の「ブート環境」として維持されます)、それとは別のポートおよびパッケージとしてすべてのサードパーティのものを取得します。あなた自身が開発者またはシステム管理者であるサードパーティのものを提供している場合は、ポートとパッケージも行うか、単に/usr/localに直接配置するだけです。

一方、オペレーティングシステムのare部分であるカスタムビルドのソフトウェアは、オペレーティングシステムが存在する/および/usrに配置されます。オペレーティングシステム全体のソースおよびビルドシステムは、この1つの自給自足システムの一部として/usr/srcで提供されます。そこでローカルで変更を加え、必要に応じてSubversion(FreeBSD)とgit(TrueOS)を使用して他のユーザーと共有し、「ユーザーランド」だけ、またはオペレーティングシステム全体(両方とも "Shell"と "kernel")を再構築します。 " )それから。

興味深いサイドノート

それでも、独自のマシン用に独自の構造を作成する場合は、オペレーティングシステムのマニュアル自体によると、オペレーティングシステムのマニュアルページに代わるローカルのhierマニュアルページを提供することが期待されます。 ☺

参考文献

8
JdeBP

FreeBSDのインストールでは、PREFIXはデフォルトで/usr/localに設定されます。これは、パッケージからインストールされたファイルに使用されます(もちろん、パッケージはポートによってビルドされています)。 zshとbashはパッケージであり、ベースにないため、/usr/localに移動します。

独自のソフトウェアを/usr/localにインストールすることもできます。ただ注意して、衝突を避けてください。

別の宛先が必要な場合は、宛先を作成し、すべてを新しいPREFIXの下にカスタムインストールします。 /optを使用する人もいます。このPREFIXでバイナリを提供する場合は、ユーザークラスを login.conf(5) で使用し、そこにpathエントリを設定して、それらを含めることができます。 /opt/binのようなもの( cap_mkdb(1) および passwd(5) のユーザーログインクラスの仕様についても参照してください)。

4

/ usr/localは( manページ から)、すべてのローカル実行可能ファイル、ファイルなどのホームです。 「ローカル」とは、1つまたは複数のソフトウェアがOSの動作に固有ではないことを意味します。これは通常、問題のソフトウェアがポートシステムを介して構築されたか、パッケージマネージャーによってインストールされたことを示します。たとえば、bashとzshの両方がオプションで提供され、ベアインストール後に追加する必要があるため、それらはそこに存在します。

OS固有のソフトウェアやその他のソフトウェアの厳密な階層を監視することで、OSの更新とパッチの自動化を管理しやすくなります。このように、カスタムビルドのスクリプトとカスタマイズを区別するためにディレクトリを使用するのと大差ありません。しかし、あなたが見逃しているかもしれないのは、FreeBSDのポートシステムの範囲がはるかに広いということです—それはhow単なるオプションソフトウェアのコレクションではなく、BSDシステムをカスタマイズすることです。

ベストプラクティスは、ポートツリーにまだ存在しないすべてのユーザーにテストされていないソフトウェアをインストールしないようにすることです。独自仕様の場合は、/usr/local/にインストールする必要があります。そうでない場合は、なぜ 独自のポートを作成する

3
Ryder