Задача, о которой идет речь, определяется как функция оболочки.Команда install
, используемая внутри, является командой оболочки, а не чем-то специфичным для Yocto или BitBake, поэтому вам следует взглянуть на ее документы для просветления, а не полагаться на документацию или примеры BitBake.В частности, в контексте Yocto вам следует ознакомиться с документацией для версии install
программы GNU coreutils (см. Ссылку выше), которую вы обязательно найдете в системах Linux. *
Из моего чтения о Yocto и выполнения do_install я подумал, что опция -m
предназначена только для установки файлов, а не каталогов.
Яне уверен, что заставит вас думать, что, кроме того, что раньше вы не видели, что это применимо к каталогам.
Каков эффект от выполнения install -m 0755 -d
, и параметров -m
и -d
скоманда установки?
Опция -m
устанавливает режим (биты контроля доступа) установленного объекта (объектов).Каталоги имеют режимы, аналогичные обычным файлам, и параметр -m
имеет то же значение для установки каталогов, что и для установки обычных файлов.
Параметр -d
указывает, что имена, указанные для установки, должныбыть взятым как каталоги, которые будут созданы, наряду с любыми отсутствующими каталогами в указанном пути.Как заметил @jww в комментариях, эффект аналогичен эффекту mkdir -p
.
. Эти параметры ортогональны.При совместном использовании их эффекты естественным образом объединяются: создаются указанные каталоги, при необходимости с родительскими каталогами, и всем созданным каталогам назначается указанный режим.Однако установка режимов явно на 0755
является излишней, потому что это по умолчанию.Возможно, поэтому вы не привыкли видеть опции -m
, используемые для каталогов.
Кроме того, почему нет переменной $ {D}, как в большинстве других установок каталогов, которые я вижу?
В спецификациях Yocto для do_install
сказано, что он должен устанавливать файлы, относящиеся к ${D}
, тогда как переменная DEPLOY_DIR_IMAGE
относится к местоположению, готовому к установкеизображений.Кажется, что установка на ${DEPLOY_DIR_IMAGE}
была бы неправильной, но это не обязательно означает, что она не даст желаемого конечного эффекта.Или, возможно, рецепт был просто написан для какой-то более старой версии BitBake, где он имел больше смысла.В любом случае, выяснение деталей будет гораздо более глубоким и сложным анализом, чем я готов выполнить для вас.
*install
не стандартизированпо POSIX.IIRC, версия GNU была основана на одноименной программе BSD, и текущие версии имеют схожие параметры и поведение, в том числе в отношении параметров -m
и -d
.