make install
ほとんどの場合、Makefileを使用して呼び出されますか/usr/bin/install
?/usr/bin/install
コンパイルされたファイルをコピーするだけでなく、どのような必要な作業を行う必要がありますか/usr/bin/local
?マニュアルページには、ファイルの
/usr/bin/install
コピーとプロパティの設定が表示されます。どの属性を設定することが重要ですか?- 不要な特権モードと所有者/グループのみを設定しますか?
ベストアンサー1
install
ディレクトリにファイルをコピーすることに加えて、多くの機能を提供します。
- この
-s
オプションは、実行可能ファイルからシンボルテーブルを削除してスペースを節約します。 - この
-m
オプションは許可ビットを設定します。開発者ディレクトリのファイルはumaskに基づいて作成されるため、他の人がそのファイルを実行できない可能性があります。install -m 755 file1 /usr/local/bin
誰もがファイルを実行できることを確認してください。これはおそらく、開発者が共有ディレクトリのファイルに望むものです。 - 所有者とグループを設定する
-o
オプションがあります。-g
使用時にcp
ターゲットファイルの所有者とグループはコマンドを実行するユーザーのuidとgidに設定されcp
、使用時ターゲットファイルcp -p
の所有者とグループはビルドディレクトリのファイルと同じになります。どちらも商人が望む開発ではないでしょう。プログラムをwall
グループ化する必要がありtty
、screen
プログラムをグループ化する必要があるutmp
式です。 - makefileレシピに入れる必要があるコマンドの数が減ります。 、および
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