“安装”命令的目的是什么?

“安装”命令的目的是什么?

我见过install很多 Makefile 中使用的命令,它的存在和用法有点令人困惑。从联机帮助页来看,它似乎是cp功能较少的仿制品,但我认为除非它比cp.这是怎么回事?

答案1

install不仅复制文件,还更改其所有权和权限,并可选择从可执行文件中删除调试符号。它cpchown,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

参考

相关内容