Макрос AC_PROG_MKDIR_P
представляет собой макрос тестирования функций. Он расширяется до шелл-кода, который проверяет наилучшую доступную команду mkdir -p
-. Он использует MKDIR_P
иac_cv_path_mkdir
(«переменную кэша» ), чтобы выяснить, какую команду использовать.
Вы можете установить значение MKDIR_P
для команды, которую хотите использовать для создания каталогов. Используемая вами команда должна иметь возможность создавать не только один каталог, но и родительские каталоги, если они еще не существуют (, точно так же, как mkdir -p
делает ).
Нормальный:
$./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/local/bin/gmkdir -p
checking for gawk... gawk
...
При установке MKDIR_P
:
$./configure MKDIR_P='install -d -m 0755'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... install -d -m 0755
checking for gawk... gawk
...
Согласно документации , можно сделать это «постоянным», установив переменную кэша ac_cv_path_mkdir
в требуемую команду. Эту переменную можно установить непосредственно в скрипте configure
(уродливый )или изменив созданный файл config.cache
после однократного запуска configure
с опцией -C
. Однако , я обнаружил, что configure
добавляет опцию -p
к значению этой команды, которая может быть нежелательной (значение этой опции отличается между mkdir
и install
).
Если вас устраивает повторно -генерация configure
скрипта из его configure.ac
источника, вы можете установить MKDIR_P
в значение сразу после вызова AC_INIT
. Затем запуститеautoconf
(или autoreconf
), чтобы воссоздать configure
.
Наиболее гибким способом было бы установить переменную окружения MKDIR_P
в текущем сеансе оболочки с помощьюexport MKDIR_P='install -d'
(или чего угодно ). Это не потребует изменения каких-либо файлов, но повлияет на все сценарии configure
, которые вы запускаете в этом сеансе оболочки.
Проблема вызвана тем, что systemd -fsck печатает '\r'
в /dev/console
. Таким образом, терминал tty1 должен ждать, пока systemd -fsckd не станет неактивным. Мое предварительное исправление в моей системе Ubuntu 18.04.4 включает файл/etc/systemd/system/getty@tty1.service.d/override.conf
:
[Unit]
After=boot-efi.mount
After=systemd-fsckd.service
[Service]
ExecStart=
ExecStart=-/usr/local/bin/delaytty1.sh $TERM
Type=idle
Скрипт /usr/local/bin/delaytty1.sh читает:
#!/bin/sh
a="active"
while [ $a = "active" ]; do
sleep 1
a=$(/bin/systemctl is-active systemd-fsckd.service)
done
/sbin/agetty --noclear tty1 $1