Що робить / usr / bin / install, крім копіювання?


11
  1. Чи працює make installз Makefile більшу частину часу /usr/bin/install?

  2. Яку необхідну роботу виконує /usr/bin/install, крім копіювання щойно складених файлів /usr/bin/local?

  3. На сторінці чоловіка написано /usr/bin/installкопіювати файли та встановлювати атрибути. Які атрибути так важливі для встановлення?

  4. Чи просто встановлюється режим дозволу та власник / група, які не потрібні?

"Чи робить установку з Makefile більшу частину часу викликом / usr / bin / install?" Ні, він робить все, що хоче. Це ціль зробити. Ваше запитання про виконаний файл встановлення? Або про виготовлення? Незрозуміло.
Faheem Mitha

і те й інше. @FaheemMitha
Тім

Гаразд, 1 і 2 - це різні запитання, і відповідь на 1 - це, мабуть, ні, але визначають "більшу частину часу". Я не впевнений у точці 1, все одно.
Faheem Mitha

Відповіді:


17

install Окрім копіювання файлів у каталог, пропонується ряд функцій.

  • -sопція видаляє таблицю символів з виконуваного, економлячи простір
  • -mопція встановлює біти дозволу. Файли, що знаходяться в каталозі розробника, були створені відповідно до його umask, що може заважати іншим їх виконувати. install -m 755 file1 /usr/local/binгарантує, що кожен може виконати файл, що, ймовірно, те, що розробник хоче для файлу у спільному каталозі.
  • -oі -gопції встановити власника і групу. З cp, власник і група файлу призначення буде встановлено на uid і gid того, хто керував cp, і з cp -p, власник і група цільового файлу були б такими ж, як і файл у каталозі збірки, жоден з яких не може бути тим, що хоче розробник. wallПрограма повинна бути в групі tty, то screenпрограма повинна бути група utmp, і т.д.
  • це зменшує кількість команд, які потрібно включити в рецепт makefile. install -s -m 755 -o root -g bin file1 file2 lib/* $(DESTDIR)більш ємний , ніж чотири команд cp, strip, chmod, і chown.

Остання точка кулі, ймовірно, чому installбула придумана команда і чому її використовують багато makefiles.

Installне завжди використовується, хоча. Я бачив, cp -r lib $(DESTDIR)/libколи для копіювання є ціле дерево, наповнене речами, і ./install.shякщо розробник вважає за краще користувацький сценарій. Багато пакунків мають install.shпохідне від того, що постачається з X11, який схожий, installале підтримує -t(перетворення) варіант перейменування файлів призначення певним чином.


2
  1. Оскільки те, що команди використовуються в makefile, по суті залежить від розробників проекту, важко дати тут однозначну відповідь. Як правило, я б сказав, що добре використовувати installкоманду в makefile для будь-яких процесів установки, згаданих у 2, але знову ж таки installце не POSIX, тому завжди його використання може бути не самим портативним підходом

    AFAIK більшість інструментів можна використовувати для автоматичного генерування таких файлів, як automakeі cmakeбудуть install.

  2. Зазвичай installвикористовується для копіювання файлів та встановлення дозволів / власника / групи в одній команді, як ви говорите. Ще однією часто використовуваною функцією є зняття непотрібних символів (наприклад, налагодження символів) з двійкового файлу, який їм більше не потрібен. У нього також є кілька додаткових варіантів таких речей, як створення резервних копій перед установкою та роботою в контексті SELinux, що може бути корисно.

Які дозволи вибрати, залежить від самого файлу. Здебільшого встановлені файли читаються всіма, але їх можна редагувати тільки під коренем (ідея полягає в тому, щоб розмістити програмні файли там, де вони доступні всім, але не можуть бути підроблені). Це не так у всьому, якщо файл містить конфіденційні дані, то звичайно обмежувати доступ до групи або лише до root.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.