19

В чем разница между установкой -c и cp? Большинство установок, как правило, используют install -c, но со страницы руководства это не похоже на то, что она делает что-то отличное от cp (кроме, возможно, установки разрешений). Когда я должен использовать install -c и когда cp?

3 ответа3

18

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

install, с другой стороны, сначала удаляет файл назначения.

Это важно, потому что, если целевой файл уже используется, с тем, кто использует этот файл, могут случиться плохие вещи, если вы cp новый файл поверх него. Например, перезапись исполняемого файла, который выполняется, может привести к ошибке Усечение файла данных, который существующий процесс занят чтением / записью, может вызвать довольно странное поведение. Если вы сначала просто удалите файл назначения, как это делает установка, все будет продолжаться как обычно - удаленный файл фактически не будет удален, пока все процессы не закроют этот файл.

7

Технически, разница между install -c и cp том, что install устанавливает права доступа к целевому файлу как rwxr-xr-x . cp сохраняет права доступа к исходному файлу за вычетом umask. Такое поведение по умолчанию полезно в разных ситуациях. Очевидно, что со всеми опциями, которые сегодня предлагают cp и install , функциональные возможности слились.

В настоящее время install обычно используется в make-файлах, cp везде. Это различие иногда полезно, потому что некоторые операционные системы или системы установки позволяют вам подключиться к программе install для регистрации установленных пакетов. Современные системы управления пакетами делают этот вид устаревшим, но некоторые люди все еще используют его. Также очень удобна возможность установки прав доступа к целевому файлу.

4

Утилита install , в своей основе, представляет собой фантастический cp . Но поскольку инструмент специально устанавливает, он содержит несколько функций, которых нет у cp . Мой /usr/bin/install из GNU coreutils не только копирует, но и может изменять perms/ владельца как флаги arg (сохранение вызовов chgrp , chown , chmod ), возможность убрать отладочную информацию (сохранение вызова strip ), а также некоторые mojo для Контексты SELinux.

Это просто обеспечивает удобные действия, полезные для установки программного обеспечения. Ничто не меняет жизнь, все полезно и делает ваши сценарии чище.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .