Какова цель команды 'install'?

49

Я видел installкоманду, используемую во многих файлах Makefile, и ее существование и использование сбивают с толку. Из справочных страниц это выглядит как подделка cpс меньшим количеством функций, но я предполагаю, что он не будет использоваться, если у него не будет некоторого преимущества перед cp. В чем дело?

azernik
источник

Ответы:

50

installне только копирует файлы, но также меняет владельца и права доступа, а также удаляет символы отладки из исполняемых файлов. Это сочетается cpс chown, chmodи strip. Это удобный инструмент более высокого уровня, который выполняет общую последовательность элементарных задач.

Преимущество installперед cpустановкой исполняемых файлов заключается в том, что если цель уже существует, она удаляет целевой файл и создает новый. Это избавляет от любых текущих свойств, таких как списки контроля доступа и возможности, которые можно рассматривать как как положительные, так и отрицательные стороны. При обновлении исполняемых файлов, если есть запущенные экземпляры этого исполняемого файла, они продолжают работать без изменений. Напротив, cpобновляет файл на месте, если он есть. В большинстве вариантов Unix это происходит с ошибкой EBUSY¹, если целью является исполняемый файл; в некоторых случаях это может привести к сбою цели, поскольку он динамически загружает фрагменты кода, а изменение файла приводит к загрузке бессмысленного кода.

installкоманда BSD (добавлена ​​в 4.2BSD , т.е. в начале 1980-х) Это не было принято POSIX.

¹ «Текстовый файл занят». В этом контексте «текстовый файл» означает «двоичный исполняемый файл» по неясным историческим причинам .

Жиль "ТАК - перестань быть злым"
источник
Важное замечание (насколько я понимаю) состоит в том, что оно также сочетается rmс cp. Это означает, что он может перезаписывать используемые файлы, сначала отсоединив их ( rm). cpодин даст ошибку.
code_fodder
10

Он обеспечивает стандартизированный способ управления собственностью и разрешениями файла или каталога при копировании файла или создании каталога с помощью одной команды.

Игнасио Васкес-Абрамс
источник
9
Это не атомно. Атомное означает, что нет никаких промежуточных состояний, видимых для других процессов. installделает копию, за которой следуют chown и chmod, все отдельные системные вызовы, и не использует переименование на место (по крайней мере, для coreutils 8.13, версия GNU не использует). Если вы предполагаете, что все происходит атомарно, вы можете получить неприятный сюрприз.
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в этом сценарии

Рахул Патил
источник
1

Смотрите справочную страницу для 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

Рекомендации

SLM
источник
4
Как я сказал в вопросе, я читаю главную страницу; это оставило меня неосведомленным относительно того, что это добавляет к функциональности cp.
Азерник
slm выделил особую функциональность, которая разделяет эти две функции: вы можете установить конкретного владельца, группу и режим для файла назначения install, а не просто сохранить существующие разрешения, как в случае сcp
Джошуа Миллер