「インストール」コマンドの目的は何ですか?


49

install多くのMakefileでコマンドが使用されているのを見てきましたが、その存在と使用法はやや紛らわしいものです。マンページから見ると、cp機能の少ない見落としのように見えますが、に勝る利点がなければ使用されないと思いcpます。どうしたんだ?

回答:


50

installファイルをコピーするだけでなく、その所有権と許可を変更し、オプションで実行可能ファイルからデバッグシンボルを削除します。それは組み合わせcpchownchmodそしてstrip。これは、基本的なタスクの共通シーケンスを達成するための便利な高レベルのツールです。

利点installを超えるcp実行可能ファイルをインストールするためには、ターゲットがすでに存在する場合、それは目的のファイルを削除し、新しいものを作成することです。これにより、アクセス制御リストや機能など、現在のプロパティはすべて取り除かれ、利点と欠点の両方として見ることができます。実行可能ファイルを更新するときに、この実行可能ファイルの実行中のインスタンスがある場合、それらは影響を受けずに実行を続けます。対照的にcp、ファイルがある場合はその場所でファイルを更新します。ほとんどのUnixバリアントでは、ターゲットが実行中の実行可能ファイルである場合、これはエラーEBUSY¹で失敗します。コードセクションを動的に読み込み、ファイルを変更すると無意味なコードが読み込まれるため、ターゲットがクラッシュする場合があります。

installBSDコマンドです(4.2BSD、つまり1980年代初期に追加されまし)。POSIXでは採用されていません。

¹ 「テキストファイルがビジー」。このコンテキストでは、「テキストファイル」とは、歴史的な理由不明なため、「バイナリ実行可能ファイル」を意味します。


重要な注意点(私が理解できる限り)は、rmとともに結合されることcpです。これは、使用中のファイルをrm最初にリンク解除()することで上書きできることを意味します。cp単独でエラーが発生します。
code_fodder

10

これは、ファイルのコピーまたはディレクトリの作成中に、単一のコマンドでファイルまたはディレクトリの所有権と許可を操作する標準化された方法を提供します。


9
アトミックではありません。アトミックとは、他のプロセスに見える中間状態がないことを意味します。installchownとchmodが続くコピーを実行し、すべて個別のsyscallsを使用し、rename-into-placeを使用しません(少なくともcoreutils 8.13ではGNUバージョンは使用しません)。すべてがアトミックに発生すると仮定すると、厄介なサプライズが発生する可能性があります。

3

ではinstallコマンド我々は欲望の権限でファイルをコピーすることができます

LDAPのセットアップ時に主に使用する例

install -o ldap -g ldap /etc/openldap/DB_CONFIG_EXAMPLE  /var/lib/ldap/DB_CONFIG

これをchown ldap. /var/lib/ldap/DB_CONFIG使用cpするとchown、このシナリオでもする必要があります。


1

次のマニュアルページを参照してくださいinstall

$ man install

抜粋

SYNOPSIS
       install [OPTION]... [-T] SOURCE DEST
       install [OPTION]... SOURCE... DIRECTORY
       install [OPTION]... -t DIRECTORY SOURCE...
       install [OPTION]... -d DIRECTORY...


DESCRIPTION
       This  install  program  copies  files  (often just compiled) into 
       destination locations you choose.  If you want to download and
       install a ready-to-use package on a GNU/Linux system, you should instead 
       be using a package manager like yum(1) or apt-get(1).

       In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to 
       the existing DIRECTORY, while  setting  permission  modes and 
       owner/group.  In the 4th form, create all components of the given 
       DIRECTORY(ies).

       Mandatory arguments to long options are mandatory for short options too.

特定の所有権、アクセス許可を使用したインストール、元のファイルのタイムスタンプの保存など、その他の便利な機能もを使用して実現できますinstall

   -g, --group=GROUP
          set group ownership, instead of process' current group

   -m, --mode=MODE
          set permission mode (as in chmod), instead of rwxr-xr-x

   -o, --owner=OWNER
          set ownership (super-user only)

   -p, --preserve-timestamps
          apply access/modification times of SOURCE files to corresponding 
          destination files

参照資料


4
質問で言ったように、私はメインページを読みました。これによりcpの機能に何が追加されるかについて、私は未理解のままになりました。
アゼルニク

SLMは離れて2を設定し、特定の機能を強調した:あなたが持つ先のファイルに対して特定の所有者、グループ、およびモードを設定することができますinstallだけではなく、のように既存のアクセス許可を保持するcp
ジョシュア・ミラーを
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.