興味深い注意事項

興味深い注意事項

私が使用しているLinuxとは異なり、FreeBSDでは通常、インストールされて/usr/localいるディレクトリが使用されていないときにもたくさん入力されます。どのポート。実際、デフォルト以外のシェル(BashとZ-Shell)はそこ(/usr/local/bin)に配置されます。

/usr/localLinuxでは、カスタムスクリプトやソフトウェアをツリーに置き、配布ソフトウェアから明確に分離することをお勧めします(たとえば、これらの/usr/local「修正」を削除して簡単に「無効にする」$PATH)。

その理由は何ですか? FreeBSDをLinuxのように動作させる方法があるかどうか疑わしいので、すべてのユーザーがアクセスできるカスタムソフトウェアとファイルをインストールするベストプラクティスは何ですか?

答え1

/usr/localLinuxでは、分散ソフトウェアとは明確に区別できるように、ツリーにカスタマイズされたスクリプトまたはソフトウェアを配置することをお勧めします。

それはFreeBSDで得られるものとまったく同じです。。 ZシェルやBourne AgainシェルなどのシェルFreeBSDの一部ではありません。第三者によって追加されます。オペレーティングシステムは時々「base」というスラングと呼ばれます。通常、BSDの世界では、「基本」の上に第三者が追加したものはありません/usr/usr/local

BSDの世界では(OpenBSDなどの他のBSDオペレーティングシステムでも同様です)、オペレーティングシステム自体はおよび/にあり、/usrOS以外の項目はにあります/usr/local。誰かがアドオンなしでオペレーティングシステムの機能だけを望むなら、自分が/usr/local何をしているのか考えないのです。

わずかに異なる点で、TrueOS ServerやTrueOS DesktopなどのFreeBSD派生製品は、FreeBSDの上に追加することがオペレーティングシステムの一部ではないことを謙虚に考えています。したがって、/usr/localオペレーティングシステム以外のエントリですぐに使用できるTrueOSエントリがたくさんあります。たとえば、ここでPCDM(TrueOSディスプレイマネージャ)を見つけることができます。

一方、/usr/localどこみんなオペレーティングシステムの一部ではないカスタムソフトウェアは削除されます。

この部門がどれほど強力であるかを示すために:

  • rcOS以外のアイテムのMewburnスクリプト/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インストールします。pkg/usr/local/etc/pkg

Linuxの「配布」世界で行わなければならない概念的な飛躍は、「配布者」が提供する混乱したパッケージからパッケージを選択してオペレーティングシステムを構築しないことです。完全なオペレーティングシステムは一貫したデバイス(インストールプログラムによってインストールされますfreebsd-updateあなた自身開発者でもシステム管理者でも、サードパーティのエントリを提供すると、ポートやパッケージを実行したり、/usr/local何らかの方法で直接配置したりできます。

一方、カスタマイズされたソフトウェアははいオペレーティングシステムの一部は、オペレーティングシステムがある場所に移動します/。オペレーティングシステム全体のソースコードとビルドシステムは、この自給自足システムの一部として提供されています/usr/usr/srcそこでローカルの変更を行い、必要に応じてSubversion(FreeBSD)とgit(TrueOS)を使用して他の人と共有し、「ユーザーゾーン」を個別にまたは全体のOS(両方)を再構築できます。「シェル」と「コア」)その時から。

興味深い注意事項

それでもシステムに独自の構造を作成する場合は、オペレーティングシステムのマニュアル自体に応じて、オペレーティングシステムのマニュアルページのhier代わりにローカルのマニュアルページを提供する必要があります。 ☺

追加読書

答え2

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

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

別のターゲットが必要な場合は、1つを作成して新しいターゲットで実行してくださいPREFIX。一部のユーザーは、/optこの下でバイナリを提供したい場合は、PREFIX次のユーザークラスを使用できます。login.conf(5)path次に、次の項目を含めるように項目を設定します/opt/bincap_mkdb(1)およびユーザーログイン仕様パスワード(5))。

答え3

/usr/ローカルからマニュアルページ)、すべてのローカル実行ファイル、ファイルなどの場所「ネイティブ」とは、ソフトウェアまたはシステムの動作がオペレーティングシステムに限定されないことを意味する。通常、これは問題のソフトウェアがシステムのポートを介して構築されたか、パッケージマネージャによってインストールされたことを示します。たとえば、bashとbashのzsh両方がオプションで提供され、デフォルトのインストール後に追加する必要があります。

オペレーティングシステム固有のソフトウェアや他のソフトウェアの厳密な階層を観察することで、オペレーティングシステムの更新とパッチの自動化を管理するのが簡単になります。これを行うと、ディレクトリを使用してカスタムスクリプトとカスタムコンテンツを区別するのとは大きく異なります。しかし、見落としているのは、FreeBSDのポートシステムがはるかに広範であるということです。どのように単にオプションのソフトウェアコレクションではなく、BSDシステムをカスタマイズできます。

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

答え4

混乱の一部は/usr/local以下から来ています。目的地usrlocal(つまり、コンテキスト)。

Linuxでは、これは「ユーザーが作成してグローバルに使用できるすべてのもの」(たとえば、「ユーザーがグローバルにアクセスできる「localマシン」)を意味します。usr

BSDでは、これは「基本(BSD)オペレーティングシステムの一部ではないすべてのビルド」(つまり、「オペレーティングシステムではありませんが」「local基本usrオペレーティングシステムの拡張」)を意味します。

私は疑う基本ビルドスクリプト(./configureおよびMakefile)のデフォルトの99.9%/usr/localが存在する理由は、Unixを「デフォルトで」提供するためであり、Linuxはそれを採用しています(デフォルトのコンテキストが少し異なりますが)。 BSDでは、このデフォルト値は次のとおりです。強制/usr/local何でもいいえ「基本オペレーティングシステム」の一部とみなされます。

usrそれを覚えて普段着「ドライブ」により由来(おそらく他のものである可能性が高い)サイズ制限時間、そして必要シングルのため容量もっと受け入れるために。例えば。/sbin別の容量ある時点では、5MBの「ドライブ」が使用可能な最大容量であり、残りはすべて/同じ制限を超えました(含まれていません/usr)。

usr(*)K&Rの起源を読んだ後、私は彼らがいつも構築していると言います。最終版オペレーティングシステムや利用可能なサービスに特に属していないソフトウェア、つまり「ネイティブ」ソフトウェア(ある時点では他のソフトウェア/usr/localに属することもあります)です。volumeそしてそのBSD合格した「コンテキスト」は、ソフトウェアの量が増加し、オペレーティングシステム//usrオペレーティングシステムの拡張、および非オペレーティングシステムソフトウェア間の区別を維持する必要があるという哲学的ニーズのために現れました。/usr/local

(*)(ここでは/ urlを参照すると便利です)。


FWIW Debianブレーカでは、混乱が拡大します。

lrwxrwxrwx 1 root root 7 Jan 12  2021 /bin -> usr/bin
lrwxrwxrwx 1 root root 7 Jan 12  2021 /lib -> usr/lib
lrwxrwxrwx 1 root root 8 Jan 12  2021 /sbin -> usr/sbin

関連情報