私が使用しているLinuxとは異なり、FreeBSDでは通常、インストールされて/usr/local
いるディレクトリが使用されていないときにもたくさん入力されます。どのポート。実際、デフォルト以外のシェル(BashとZ-Shell)はそこ(/usr/local/bin
)に配置されます。
/usr/local
Linuxでは、カスタムスクリプトやソフトウェアをツリーに置き、配布ソフトウェアから明確に分離することをお勧めします(たとえば、これらの/usr/local
「修正」を削除して簡単に「無効にする」$PATH
)。
その理由は何ですか? FreeBSDをLinuxのように動作させる方法があるかどうか疑わしいので、すべてのユーザーがアクセスできるカスタムソフトウェアとファイルをインストールするベストプラクティスは何ですか?
答え1
/usr/local
Linuxでは、分散ソフトウェアとは明確に区別できるように、ツリーにカスタマイズされたスクリプトまたはソフトウェアを配置することをお勧めします。
それはFreeBSDで得られるものとまったく同じです。。 ZシェルやBourne AgainシェルなどのシェルFreeBSDの一部ではありません。第三者によって追加されます。オペレーティングシステムは時々「base」というスラングと呼ばれます。通常、BSDの世界では、「基本」の上に第三者が追加したものはありません/usr
。/usr/local
BSDの世界では(OpenBSDなどの他のBSDオペレーティングシステムでも同様です)、オペレーティングシステム自体はおよび/
にあり、/usr
OS以外の項目はにあります/usr/local
。誰かがアドオンなしでオペレーティングシステムの機能だけを望むなら、自分が/usr/local
何をしているのか考えないのです。
わずかに異なる点で、TrueOS ServerやTrueOS DesktopなどのFreeBSD派生製品は、FreeBSDの上に追加することがオペレーティングシステムの一部ではないことを謙虚に考えています。したがって、/usr/local
オペレーティングシステム以外のエントリですぐに使用できるTrueOSエントリがたくさんあります。たとえば、ここでPCDM(TrueOSディスプレイマネージャ)を見つけることができます。
一方、/usr/local
どこみんなオペレーティングシステムの一部ではないカスタムソフトウェアは削除されます。
この部門がどれほど強力であるかを示すために:
rc
OS以外のアイテムの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
代わりにローカルのマニュアルページを提供する必要があります。 ☺
追加読書
- 」第4章アプリケーションのインストール:パッケージとポート」。 FreeBSDマニュアル。 2016. FreeBSD文書化プロジェクト。
- FreeBSD ポーターマニュアル。 2016. FreeBSD文書化プロジェクト。
hier
。 §7。 FreeBSDマニュアル。- 」Linuxユーザー向けのTrueOS」。 TrueOSユーザーガイド。 2016.
- https://unix.stackexchange.com/a/332441/5132
答え2
FreeBSDでは、インストール設定がデフォルトにPREFIX
設定されています/usr/local
。これはパッケージからインストールされたファイルに使用されます(もちろん、パッケージはポートを介して構築されます)。 zshとbashはパッケージであり、デフォルトにはないので/usr/local
。
独自のソフトウェアをインストールすることもできます/usr/local
。注意して衝突を避けてください。
別のターゲットが必要な場合は、1つを作成して新しいターゲットで実行してくださいPREFIX
。一部のユーザーは、/opt
この下でバイナリを提供したい場合は、PREFIX
次のユーザークラスを使用できます。login.conf(5)path
次に、次の項目を含めるように項目を設定します/opt/bin
。cap_mkdb(1)およびユーザーログイン仕様パスワード(5))。
答え3
/usr/ローカルからマニュアルページ)、すべてのローカル実行ファイル、ファイルなどの場所「ネイティブ」とは、ソフトウェアまたはシステムの動作がオペレーティングシステムに限定されないことを意味する。通常、これは問題のソフトウェアがシステムのポートを介して構築されたか、パッケージマネージャによってインストールされたことを示します。たとえば、bashとbashのzsh
両方がオプションで提供され、デフォルトのインストール後に追加する必要があります。
オペレーティングシステム固有のソフトウェアや他のソフトウェアの厳密な階層を観察することで、オペレーティングシステムの更新とパッチの自動化を管理するのが簡単になります。これを行うと、ディレクトリを使用してカスタムスクリプトとカスタムコンテンツを区別するのとは大きく異なります。しかし、見落としているのは、FreeBSDのポートシステムがはるかに広範であるということです。どのように単にオプションのソフトウェアコレクションではなく、BSDシステムをカスタマイズできます。
ベストプラクティスは、ポートツリーにまだ存在していないすべてのユーザーに対してテストされていないソフトウェアをインストールしないことです。独自の場合は、インストールする必要があります/usr/local/
。そうでなければ、なぜできないのですか?独自のポートを作成?
答え4
混乱の一部は/usr/local
以下から来ています。目的地usr
とlocal
(つまり、コンテキスト)。
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