我见过install
很多 Makefile 中使用的命令,它的存在和用法有点令人困惑。从联机帮助页来看,它似乎是cp
功能较少的仿制品,但我认为除非它比cp
.这是怎么回事?
答案1
install
不仅复制文件,还更改其所有权和权限,并可选择从可执行文件中删除调试符号。它cp
与chown
,chmod
和结合strip
。它是一种方便的高级工具,可以完成一系列常见的基本任务。
install
安装可执行文件的一个优点cp
是,如果目标已经存在,它会删除目标文件并创建一个新文件。这消除了任何当前的属性,例如访问控制列表和功能,这既可以被视为优点,也可以被视为缺点。更新可执行文件时,如果该可执行文件正在运行,它们将保持运行不受影响。相反,cp
如果有文件,则就地更新该文件。在大多数 Unix 变体上,如果目标是正在运行的可执行文件,则此操作会失败并显示错误 EBUSY1;在某些情况下,它可能会导致目标崩溃,因为它动态加载代码部分并且修改文件会导致加载无意义的代码。
install
是一个 BSD 命令(添加在4.2BSD,即 20 世纪 80 年代初)。它尚未被 POSIX 采用。
1 “文本文件忙”。在这种情况下,“文本文件”意味着“二进制可执行文件”,例如历史原因不明。
答案2
它提供了一种标准化方法,可以在单个命令中复制文件或创建目录时操作文件或目录的所有权和权限。
答案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
答案4
请参阅手册页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