TL;DR: пробелы и другие метасимволы не поддерживаются для каталогов, которые попадут в /USR/местный
.
/usr/local/Диспетчер хранилища MegaRAID
содержит пробелы. Очевидно, что этот пакет не следует передовой практике в мире *nix (во всем виноваты LSI/Broadcom).
Вместо этого вы можете конвертировать инопланетян в tar или извлекать напрямую, используя rpm2cpio
, выясните, как используются сценарии установки, и узнайте, как их повторно использовать, при желании посмотрите, возможно ли переименовать каталог с пробелами, если любая ссылка на него также может быть легко заменена, и создайте непосредственно двоичный пакет, используя dpkg-deb -b
который не будет затронут такой проблемой, но создаст пакет, который не соответствует политике Debian.
пояснения ниже...
Политика Debian требует, чтобы ничего не устанавливалось пакетом в /USR/местный
кроме некоторых каталогов косвенным методом:
9.1.2. Программы для конкретных сайтов
Согласно предписанию FHS, пакеты не должны размещать какие-либо файлы в
/USR/местный
, либо поместив их в архив файловой системы
распаковал дпкг
или манипулируя ими в своих сценариях поддержки.
Однако, пакет может создавать пустые каталоги ниже /USR/местный
так
чтобы системный администратор знал, где размещать
файлы. Это не каталоги в /USR/местный
, но дети
каталоги в /USR/местный
. Эти каталоги (/usr/местный/*/каталог/
)
должны быть удалены при удалении пакета, если они пусты.
Обратите внимание, что это относится только к каталогам ниже /USR/местный
, нет
в /USR/местный
.
[...]
Таким образом, этот пакет все равно не может быть совместим, например, файл /usr/local/Диспетчер хранилища MegaRAID/startmonitorhelp.sh
не соответствует: это файл упакован где-то в /USR/местный
.
инопланетянин
использует dh_usrlocal
build helper для автоматического преобразования (все еще совместимых) каталогов для добавления в сценарии сопровождающего (например, в Debian преинст
, постинста
и т.д. скрипты, которые заархивированы отдельно в .deb ар архив и будет храниться в /var/lib/dpkg/информация/
позже), который затем выполнит несколько мкдир
команды при установке:
dh_usrlocal
это программа debhelper, которую можно использовать для сборки
пакеты, которые предоставят подкаталог в /USR/местный когда
установлен.
Он находит подкаталоги usr/местный в каталоге сборки пакета,
и удаляет их, заменяя фрагментами скрипта сопровождающего
(пока не -н
используется) для создания каталогов во время установки и
удалить их при удалении пакета в соответствии с
Политика Дебиана. Эти фрагменты вставляются в скрипты сопровождающего.
к dh_installdeb
.
Содержание /usr/bin/dh_usrlocal
Perl-скрипт включает в себя:
# Обнаружение некоторых очевидных случаев «это не закончится
# well". Мы полагаемся на то, что "while read dir ... ; делать"
# может обрабатывать для корректности.
if ($fn =~ m{[\s!'"\$()*#;<>?@\[\]\`|]}) {
error("Невозможно сгенерировать корректный сценарий оболочки для $fn из-за метасимволов оболочки");
}
\с
что означает, что любой пробел в PCRE является частью запрещенных метасимволов и вызывает ошибку при разборе /usr/local/Диспетчер хранилища MegaRAID
.