linux install command
Makefile 中尽量使用install 命令。
1、最重要的一点,如果目标文件存在,cp会先清空文件后往里写入新文件,而install则会先删除掉原先的文件然后写入新文件。这是因为往正在 使用的文件中写入内容可能会导致一些问题,比如说写入正在执行的文件可能会失败,比如说往已经在持续写入的文件句柄中写入新文件会产生错误的文件。而使用 install先删除后写入(会生成新的文件句柄)的方式去安装就能避免这些问题了;
2、install命令会恰当地处理文件权限的问题。比如说,install -c会把目标文件的权限设置为rwxr-xr-x;
3、install命令可以打印出更多更合适的debug信息,还会自动处理SElinux上下文的问题。
例如
@install -d /usr/bin
@install -p -D -m 0755 targets /usr/bin
相当于
@mkdir -p /usr/bin
@cp targets /usr/bin
@chmod 755 /usr/bin/targets
@touch /usr/bin/tagets <---- 更新文件时间戳,@前缀的意思是不在控制台输出结果。
install -d a/b/c e/f 结果和 mkdir -p a/b/c e/f 一样.
install -D x a/b/c # 效果类似 mkdir -p a/b && cp x a/b/c
有用选项
-b :自动备份.
-m : 设置安装文件的权限
-p :保留文件的timestamps. 也就是说文件的timestaamps 和 source 文件一样. 当我们想要利用安装文件的mtime来跟踪文件的build时间而不是 安装时间.
-s : Strip the symbol tables from installed binary executables.
-S : 备份文件的后缀.
install -S .bak new old #old 文件自动被 mv 为 old.bak.
-v: verbose ,打印install 的文件的详细信息.
`-c'
Ignored; for compatibility with old Unix versions of `install'. #用来兼容旧版的unix.
-C: (大写)
安装文件, 但是如果目标文件和源文件一样( 判断方法需要看看代码确认) 就跳过, 这样的好处是 能够保持一样文件的mtime.

浙公网安备 33010602011771号