Linuxがインストールされたプログラムファイルを構成する方法の利点は何ですか? [閉鎖]

Linuxがインストールされたプログラムファイルを構成する方法の利点は何ですか? [閉鎖]

Windowsでは、システムドライブC:にはディレクトリがあり、program_filesそのディレクトリ内の各プログラムには独自のディレクトリがあります。

Linuxでは、以下/usr/と下などが/usr/local/あります。/bin, /etc, /share, /src

したがって、Windowsでは、各プログラムのすべてのファイルが同じディレクトリにグループ化され、Linuxでは、同じ種類のファイルがすべてのプログラムに対して同じディレクトリにグループ化されます。

私は、Windowsがインストーラを構成する方法がLinuxよりも論理的であるため、インストールされたプログラムを手動で管理する方が簡単だと思います。

Linuxがインストールされたプログラムファイルを構成する方法の利点は何ですか?ありがとうございます。

次の問題に直面したときにこの問題が発生しました。シェルが実行時に検索できるように、$ HOMEにインストールされたプログラムをどのように構成できますか?、Windowsの方法でプログラムを構成しようとしていますが、$HOMEプログラムの検索パスを指定する際にいくつかの問題があります。

答え1

Linux では、適切なメンテナンスを行うと、他の場所にいくつかのロジックが反映されることがよくあります。例えば。 :

  • /bin最も基本的なツール(プログラム)が含まれています。
  • /sbin最も基本的な管理手順が含まれています。

どちらにも、起動と基本的なトラブルシューティングのための基本的なコマンドが含まれています。ここで最初の違いを見ることができます。一部のプログラムは一般ユーザーには適していません。

それから入って見てください/usr/bin。ここでは通常、1000を超えるより多くのコマンド(プログラム)を見つけることができます。これは標準的なツールですが、/binそのツールほど重要ではありません/sbin

/usr/bin構成ファイルが別の場所にある間にコマンドを含めます。これは、機能エンティティ(プログラム)とその設定やその他のファイルを分離しますが、ユーザー機能に関する限り、コマンドが他のものと混在することなく実行可能ファイルを指すPATH変数を使用できるため便利です。また、明確さを紹介します。何でも実行可能でなければなりません。

私のものを見てPATH

$ echo "$PATH" | perl -F: -anlE'$,="\n"; say @F'
/home/tomas/bin
/usr/local/bin
/usr/bin
/bin
/usr/local/games
/usr/games

正確に6つの場所には、直接呼び出すことができるコマンドが含まれています(パスではなく実行可能ファイル名など)。

  • /home/tomas/binパーソナル実行可能ファイル用のマイホームフォルダのプライベートディレクトリ。
  • /usr/local/bin以下でそれぞれ説明します。
  • /usr/bin上記のように。
  • /bin上記も説明されています。
  • /usr/local/games/usr/local(以下の説明)とゲームの組み合わせです。
  • /usr/gamesそれはゲームです。ユーティリティ実行可能ファイルと混在しないでください。独自の場所があります。

/usr/local/binこれは少し滑りやすく、ここで説明されています。/usr/local/binとは何ですか?。これを理解するには、フォルダが/usr多数のコンピュータで共有され、ネットワークの場所からマウントできることに注意してください。前述のように、コマンドとは異なり、これらのコマンドは起動時に必要とされないため、/bin起動プロセスの後の段階で場所をインストールできます。読み取り専用でインストールすることもできます。/usr/local/bin一方、ローカルにインストールされたプログラムのため、書き込みが可能でなければなりません。したがって、多くのネットワークコンピュータは共通ディレクトリを共有できますが、各コンピュータは共通ディレクトリに/usrあります。/usr/local/usr

PATH最後に、私のrootユーザーを見てください。

# echo "$PATH" | perl -F: -anlE'$,="\n"; say @F'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin

これには次の内容が含まれています。

  • /usr/local/sbin、次の種類の管理コマンドが含まれています。/usr/local
  • /usr/local/bin、これは一般ユーザーが使用できるものと同じです。同様に、そのタイプは次のように説明できます/usr/local
  • /usr/sbin必須ではない管理ユーティリティです。
  • /usr/bin必須ではない管理および一般ユーザーユーティリティです。
  • /sbin必須の管理ツールです。
  • /bin管理者や一般ユーザーに必要なツールです。

答え2

今、私はこれが古典的なUNIXの歴史的遺産だと思います。

UNIXの最初のバージョンでは、プログラムは今ほど大きくありませんでした。これらのプログラムは通常、システムライブラリを使用する実行可能ファイルで構成されます。したがって、誰も独自のライブラリで構成されたプログラムを考慮していません。デフォルトライブラリはCライブラリであり、すべてのプログラムはその場所を知っています。

また、UNIX環境は文書を準備するための完成品と見なされます。したがって、すべてのツールのパスは固定されています。

今日、HDD(ハードディスクドライブ)時代の固定パスにはいくつかの利点があります。 FSH(ファイルシステム階層)が別々のディスクパーティションに分割され、バイナリとライブラリのあるパーティションがHDDのメインセクタの近くに配置されると、プログラムの起動時間が少し速くなります。

答え3

/usr/bin/usr/libアプリケーションパッケージ(あるディレクトリにはC ++コンパイラ、別のディレクトリにはイメージ編集プログラム)ではなく、個々のファイルを目的(実行ファイル、ライブラリ用)別に分​​割するスタイルを議論しているようです。 Unixシステムでこれの主な理由は歴史的ですが、今日のUnix系システムでこれを好む傾向がある勢力もあります。つまり、システムのほとんどのプログラムを管理するパッケージマネージャです。

Windowsでは、歴史的にもまだそうです。アプリケーションは独自のインストーラ、特にアンインストーラを提供する必要があり、現在も中央アプリケーションのリストに自分自身を登録しないことがよくあります。この場合、通常、アプリケーションはできるだけ多くのファイルを保持できる「自己」ディレクトリを持つことをお勧めします。これは常に動作するわけではありませんが、他のアプリケーションとの競合を回避するのに役立ちます(特に次の場合)。DLL)。

一方、Unixシステムは1990年代から一般的に認められているパッケージマネージャと、そのパッケージマネージャを通じてよく使われる大量のソフトウェアを提供するグループを持っている。 (さまざまなUnicesの公式パッケージマネージャにはyumLinux aptpkgsrcNetBSD、およびportsFreeBSDが含まれています。商用Unixシステムには、brewMacOSなどの非公式ですが広く使用されているパッケージマネージャがよくあります。)

これらのパッケージマネージャの利点は、システムが「所有」したさまざまなサブディレクトリ内のすべてのファイルを追跡できることです。単一のグループがここで各ファイルの名前と場所を割り当てるため、誰もが互いに共有する小さなディレクトリのセットにアクセスできます。これは、アプリケーション間でファイルを共有し、ライブラリや実行可能ファイルを検索するために必要なパスの数を減らすなど、さまざまな利点を提供します。

つまり、Unixでは通常、「アプリケーションごとに別々のディレクトリ」をインストールする長い伝統があります/opt

答え4

あなたが見る現代のUnixシリーズシステムは、実際には伝統的なシステムではありません。

/通常、システムユーティリティの階層は非常に小さく/usr、プログラムはサブディレクトリに個別にインストールされ、/usr/localシンボリックリンクを作成して使用できるようになります。

GNUソフトウェアの非常に一般的な設定はコンパイルとインストールです。

./configure
make
make install prefix=/usr/local/DIR/program-1
cd /usr/local/DIR
stow program-1

牛に似た一種の栄養お店このユーティリティは、PATH変数にディレクトリを追加せずに標準パスでソフトウェアを使用できるようにシンボリックリンクを作成します(Windowsと同様に、クルフトがそこに蓄積する傾向があります)。

しかし、最新のLinuxディストリビューションはすべてを既製のパッケージとして提供するので、プログラムは「システム」の一部になります。パッケージマネージャはインストールを管理するため、シンボリックリンクは必要なく、プログラムを分離しても役に立ちません(ただし、多くの小さなディレクトリを調べる必要があるため、プログラムの起動が遅くなります)。

ホームディレクトリにソフトウェアをインストールするには、GNU stowも使用することをお勧めします。これはプログラムを別々に保つことができ、パッケージマネージャを使用しない場合は賢明な方法です。

私の伝統的な設定は、~/software/DIRプログラムをディレクトリにインストールしてからstowを使って背中をDIR作成することです。つまり、PATH変数を追加するだけで、インストールされているすべてのソフトウェアを取得できます。~/software/bin~/software/share~/software/bin

使用:

./configure --prefix=~/software
make
make install prefix=~/software/DIR/program-1
cd ~/software/DIR
stow program-1

プログラムがGNU規則に従う場合は、そのプログラムをインストールしてください。

関連情報