web-dev-qa-db-ja.com

install-cとcpの違いは何ですか

Install -cとcpの違いは何ですか?ほとんどのインストールはinstall-cを使用する傾向がありますが、manページからは、cpとは異なることをしているようには聞こえません(パーミッションの設定を除く)。いつinstall-cを使用し、いつcpを使用する必要がありますか?

20
sligocki

重要な違いの1つは、cpが宛先ファイルを切り捨てて、ソースから宛先ファイルへのデータのコピーを開始することです。

一方、installは、最初に宛先ファイルを削除します。

宛先ファイルがすでに使用されている場合、そのファイルの上に新しいファイルをcpすると、そのファイルを使用している人に悪いことが起こる可能性があるため、これは重要です。例えば実行中の実行可能ファイルの上書きは失敗する可能性があります。既存のプロセスが読み取り/書き込みでビジー状態のデータファイルを切り捨てると、かなり奇妙な動作が発生する可能性があります。インストールのように、最初に宛先ファイルを削除するだけの場合、通常と同じように処理が続行されます。削除されたファイルは、すべてのプロセスがそのファイルを閉じるまで実際には削除されません。

18
nos

技術的には、install -ccpの違いは、installがターゲットファイルのアクセス許可をrwxr-xr-xに設定することです。 cpは、ソースファイルからumaskを除いた権限を保持します。これらのデフォルトの動作は、さまざまな状況で役立ちます。明らかに、cpinstallの両方が現在提供しているすべてのオプションにより、機能は収束しました。

現在、installはメイクファイルで一般的に使用されており、他の場所ではcpが使用されています。一部のオペレーティングシステムまたはインストールシステムでは、installプログラムにフックして、インストールされたパッケージを登録できるため、この区別が役立つ場合があります。最新のパッケージ管理システムはこの種のものを時代遅れにしますが、一部の人々はまだそれを使用しています。また、ターゲットファイルのアクセス許可を同時に設定する可能性は非常に便利です。

7

installユーティリティは、基本的には派手なcpです。ただし、ツールは特にインストールするため、cpにはない機能がいくつか含まれています。ぼくの /usr/bin/install from GNU coreutilsはコピーするだけでなく、権限/所有権を引数フラグとして変更することもできます(chgrpchownchmodを保存します)呼び出し)デバッグ情報を削除するオプション(strip呼び出しを保存)およびSELinuxコンテキスト用のいくつかのmojo。

ソフトウェアのインストールに役立つ便利なアクションを提供するだけです。人生を変えるものはなく、すべてが便利で、スクリプトをよりクリーンにします。

4
Rich Homolka