私が使用したLinuxとは異なり、FreeBSDでは、anyポートを使用しなくても、/usr/local
ディレクトリは通常のインストールで大量に使用されます。実際、非基本シェル(BashおよびZ-Shell)はそこに配置されます(/usr/local/bin
内)。
Linuxでは、カスタムビルドのスクリプトまたはソフトウェアを/usr/local
ツリーに配置して、配布ソフトウェアから明確に分離できるようにしておくと便利でした(たとえば、/usr/local
を使用して、これらの「変更」を簡単に「非アクティブ化」できます)。 $PATH
の外)。
これの背後にある理由は何ですか?また、FreeBSDをLinuxのように動作させる方法があるとは思えないので、すべてのユーザーがアクセスできるカスタムビルドソフトウェアとファイルをインストールするためのベストプラクティスは何でしょうか。
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オペレーティングシステムの一部ではないカスタムビルドのソフトウェアが使用される場所です。
この分割がどれほど強いかを示すために:
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
マニュアルページを提供することが期待されます。 ☺
hier
。 §7。FreeBSDマニュアル。FreeBSDのインストールでは、PREFIX
はデフォルトで/usr/local
に設定されます。これは、パッケージからインストールされたファイルに使用されます(もちろん、パッケージはポートによってビルドされています)。 zshとbashはパッケージであり、ベースにないため、/usr/local
に移動します。
独自のソフトウェアを/usr/local
にインストールすることもできます。ただ注意して、衝突を避けてください。
別の宛先が必要な場合は、宛先を作成し、すべてを新しいPREFIX
の下にカスタムインストールします。 /opt
を使用する人もいます。このPREFIX
でバイナリを提供する場合は、ユーザークラスを login.conf(5) で使用し、そこにpath
エントリを設定して、それらを含めることができます。 /opt/bin
のようなもの( cap_mkdb(1) および passwd(5) のユーザーログインクラスの仕様についても参照してください)。
/ usr/localは( manページ から)、すべてのローカル実行可能ファイル、ファイルなどのホームです。 「ローカル」とは、1つまたは複数のソフトウェアがOSの動作に固有ではないことを意味します。これは通常、問題のソフトウェアがポートシステムを介して構築されたか、パッケージマネージャーによってインストールされたことを示します。たとえば、bashとzsh
の両方がオプションで提供され、ベアインストール後に追加する必要があるため、それらはそこに存在します。
OS固有のソフトウェアやその他のソフトウェアの厳密な階層を監視することで、OSの更新とパッチの自動化を管理しやすくなります。このように、カスタムビルドのスクリプトとカスタマイズを区別するためにディレクトリを使用するのと大差ありません。しかし、あなたが見逃しているかもしれないのは、FreeBSDのポートシステムの範囲がはるかに広いということです—それはhow単なるオプションソフトウェアのコレクションではなく、BSDシステムをカスタマイズすることです。
ベストプラクティスは、ポートツリーにまだ存在しないすべてのユーザーにテストされていないソフトウェアをインストールしないようにすることです。独自仕様の場合は、/usr/local/
にインストールする必要があります。そうでない場合は、なぜ 独自のポートを作成する ?