Яка мета команди «встановити»?


49

Я бачив installкоманду, яку використовують у багатьох Makefiles, і її існування та використання є дещо заплутаними. З боку manpages, здається, що це перешкода cpз меншими можливостями, але я припускаю, що вона не буде використана, якщо б не мала певної переваги над cp. Яка угода?

Відповіді:


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

Список літератури


4
Як я вже говорив у запитанні, я читав головну сторінку; це залишило мене непросвітленим щодо того, що це додає функціональності cp.
azernik

slm виділив специфічну функціональність, яка роз'єднує два: ви можете встановити конкретного власника, групу та режим для цільового файлу за допомогою install, а не просто зберегти існуючі дозволи, як уcp
Джошуа Міллер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.