Работает ли
make install
с Makefile большую часть времени/usr/bin/install
?Какую необходимую работу выполняет
/usr/bin/install
помимо копирования только что скомпилированных файлов/usr/bin/local
?На странице руководства написано,
/usr/bin/install
копировать файлы и устанавливать атрибуты. Какие атрибуты так важно установить?- Он просто устанавливает режимы доступа и владельца / группы, которые не нужны?
11
Ответы:
install
предлагает ряд функций в дополнение к копированию файлов в каталог.-s
опция удаляет таблицу символов из исполняемого, экономя пространство-m
опция устанавливает биты разрешения. Файлы, находящиеся в каталоге разработчика, были созданы с учетом его или ее маски, что может помешать другим выполнить их.install -m 755 file1 /usr/local/bin
гарантирует, что каждый может выполнить файл, что вполне вероятно, что разработчик хочет для файла в общем каталоге.-o
и-g
опции установить владельца и группу. Приcp
этом для владельца и группы целевого файла будут заданы uid и gid того, кто их запускалcp
, а сcp -p
владельцем и группой целевого файла будут те же, что и у файла в каталоге сборки, ни один из которых не может будь тем, что хочет разработчик.wall
Программа должна быть в группеtty
, тоscreen
программа должна быть группаutmp
, и т.д.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
(трансформировать) опцию для переименования файлов назначения указанным способом.источник
Поскольку то, какие команды используются в make-файле, в основном зависит от разработчиков проекта, здесь сложно дать определенный ответ. Как правило, я бы сказал, что это хорошая практика - использовать
install
команду в make-файле для любых процессов установки, упомянутых в п. 2, но опять жеinstall
это не POSIX, поэтому всегда ее использование может быть не самым переносимым подходом.AFAIK большинство инструментов могут быть использованы для автоматического создания make-файлов, как
automake
иcmake
будет использоватьinstall
.Обычно
install
используется для копирования файлов и установки прав / владельца / группы в одной команде, как вы говорите. Еще одна часто используемая функция состоит в удалении ненужных символов (например, символов отладки) из двоичного файла, который больше не нуждается в них. В нем также есть несколько дополнительных опций для таких вещей, как создание резервных копий перед установкой и работа в контексте SELinux, что может быть полезно.Какие разрешения выбрать, зависит от самого файла. Большинство установленных файлов доступны для чтения всем, но доступны только для записи root (идея состоит в том, чтобы поместить программные файлы в место, где они доступны всем, но не могут быть изменены). Это не относится ко всему: если файл содержит конфиденциальные данные, то обычно ограничивается доступ к группе или только для пользователя root.
источник