い
make install
時間コールのほとんどのMakefileで/usr/bin/install
?/usr/bin/install
コンパイルしたばかりのファイルをにコピーする以外に必要な作業は何/usr/bin/local
ですか?manページには、
/usr/bin/install
ファイルのコピーと属性の設定が記載されています。設定するのにとても重要な属性は何ですか?- 必要のない許可モードと所有者/グループを設定するだけですか?
いmake install
時間コールのほとんどのMakefileで/usr/bin/install
?
/usr/bin/install
コンパイルしたばかりのファイルをにコピーする以外に必要な作業は何/usr/bin/local
ですか?
manページには、/usr/bin/install
ファイルのコピーと属性の設定が記載されています。設定するのにとても重要な属性は何ですか?
回答:
install
は、ファイルをディレクトリにコピーすることに加えて、いくつかの機能を提供します。
-s
オプションは、実行可能ファイルからシンボルテーブルを削除し、スペースを節約します。-m
オプションは、許可ビットを設定します。開発者のディレクトリにあるファイルは、開発者のumaskに従って作成されたため、他のユーザーがそれらを実行できない可能性があります。install -m 755 file1 /usr/local/bin
誰もがファイルを実行できることを保証します。これは、開発者が共有ディレクトリ内のファイルに対して望んでいることです。-o
および-g
オプションは、所有者とグループを設定します。cp
先のファイルの所有者とグループは、uidと走った誰のGIDに設定されるだろうcp
、としてcp -p
、コピー先のファイルの所有者とグループは、ビルドディレクトリ内のファイルと同じになり、どちらもかもしれませんの開発者が望むものである。wall
プログラムは、グループ内にする必要がありtty
、screen
グループとしてのプログラムのニーズをutmp
など、install -s -m 755 -o root -g bin file1 file2 lib/* $(DESTDIR)
4つのコマンドよりも簡潔でcp
、strip
、chmod
、とchown
。最後の箇条書きは、install
コマンドが発明された理由と、多くのメイクファイルがそれを使用する理由です。
Install
ただし、常に使用されるわけではありません。cp -r lib $(DESTDIR)/lib
コピーするものでいっぱいのツリー全体があるとき、そして./install.sh
開発者がカスタムスクリプトを使用することを好むかどうかを見てきました。多くのパッケージには、install.sh
X11に付属するパッケージから派生したパッケージがあります。これは、指定した方法で宛先ファイルの名前を変更install
する-t
(変換)オプションに似ていますが、サポートしています。
makefileで使用されるコマンドは基本的にプロジェクト開発者次第なので、ここで明確な答えを出すのは困難です。一般にinstall
、2で説明したインストールプロセスでは、makefileでコマンドを使用することをお勧めしますが、install
POSIXではないため、常に使用することは、最も移植性の高い方法ではない可能性があります。
私の知る限りほとんどのツールのは、自動的にのようなmakefileを生成するために使用することができますautomake
し、cmake
使用しますinstall
。
一般的にinstall
、ファイルのコピーと、パーミッション/所有者/グループの設定に、あなたが言うように1つのコマンドで使用されます。もう1つの一般的に使用される機能は、不要になったバイナリから不要なシンボル(デバッグシンボルなど)を取り除くことです。また、SELinuxコンテキスト内にインストールして作業する前にバックアップを作成するなどの便利なオプションがいくつかあります。
選択する権限は、ファイル自体によって異なります。ほとんどの場合、インストールされたファイルは誰でも読み取り可能ですが、rootのみが書き込み可能です(誰もがアクセスできるが改ざんできない場所にプログラムファイルを配置するという考えです)。これはすべてに当てはまるわけではありません。ファイルに機密データが含まれている場合は、グループまたはルートのみへのアクセスを制限するのが一般的です。