Что делает / usr / bin / install помимо копирования?


11
  1. Работает ли make installс Makefile большую часть времени /usr/bin/install?

  2. Какую необходимую работу выполняет /usr/bin/installпомимо копирования только что скомпилированных файлов /usr/bin/local?

  3. На странице руководства написано, /usr/bin/installкопировать файлы и устанавливать атрибуты. Какие атрибуты так важно установить?

  4. Он просто устанавливает режимы доступа и владельца / группы, которые не нужны?

"Производит ли make install с Makefile большую часть времени, вызывая / usr / bin / install?" Нет, он делает все, что хочет. Это цель сделать. Ваш вопрос по поводу исполняемого файла установки? Или о марке? Не ясно.
Фахим Митха

и то и другое. @FaheemMitha
Тим

Хорошо, ну, 1 и 2 разные вопросы, и ответ на 1, вероятно, нет, но определяют «большую часть времени». Во всяком случае, я не уверен в точке 1.
Фахим Митха

Ответы:


17

install предлагает ряд функций в дополнение к копированию файлов в каталог.

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

Последний пункт, вероятно, объясняет, почему installкоманда была изобретена и почему многие make-файлы ее используют.

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


2
  1. Поскольку то, какие команды используются в make-файле, в основном зависит от разработчиков проекта, здесь сложно дать определенный ответ. Как правило, я бы сказал, что это хорошая практика - использовать installкоманду в make-файле для любых процессов установки, упомянутых в п. 2, но опять же installэто не POSIX, поэтому всегда ее использование может быть не самым переносимым подходом.

    AFAIK большинство инструментов могут быть использованы для автоматического создания make-файлов, как automakeи cmakeбудет использовать install.

  2. Обычно installиспользуется для копирования файлов и установки прав / владельца / группы в одной команде, как вы говорите. Еще одна часто используемая функция состоит в удалении ненужных символов (например, символов отладки) из двоичного файла, который больше не нуждается в них. В нем также есть несколько дополнительных опций для таких вещей, как создание резервных копий перед установкой и работа в контексте SELinux, что может быть полезно.

Какие разрешения выбрать, зависит от самого файла. Большинство установленных файлов доступны для чтения всем, но доступны только для записи root (идея состоит в том, чтобы поместить программные файлы в место, где они доступны всем, но не могут быть изменены). Это не относится ко всему: если файл содержит конфиденциальные данные, то обычно ограничивается доступ к группе или только для пользователя root.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.