Расположение служебного файла Systemd для локально созданного программного обеспечения
Возможно, это в основном эстетическая проблема, но она меня настолько беспокоила, что я приложил немного больше усилий для ее решения.
В моей рабочей среде мы очень сильно полагаемся на программное обеспечение собственной разработки для рабочих станций и серверов Linux, и я потратил некоторое время на работу над некоторыми инструментами сборки, которые обеспечивают согласованный процесс сборки и установки и сокращают количество шаблонов для каждого проекта. Я старался придерживаться существующих стандартов, насколько это было возможно. В результате у меня есть система установки, которая помещает выходные файлы в /usr/local при установке непосредственно из исходного кода и в /usr при упаковке (например, при сборке RPM). Большая часть нашего программного обеспечения в настоящее время устанавливается непосредственно из исходного кода, хотя в будущем ситуация, вероятно, изменится.
Таким образом, при непосредственной установке исполняемые файлы помещаются в /usr/local/bin и /usr/local/libexec, библиотеки — в /usr/local/lib64 (это среда RHEL), включают файлы в /usr/local/include и т. д. вперед. Это работает практически для всего — файлов .desktop, значков, файлов pkg-config, документации, файлов конфигурации... это либо просто работает, либо его можно легко настроить для работы с помощью простых изменений системы. Но мне не удалось добиться успеха с файлами модулей systemd.
Мои инструменты сборки в настоящее время помещают эти файлы в /usr/lib/systemd/system, что, следовательно, является жестко запрограммированным исключением из нормального поведения.
Есть ли способ настроить systemd для поиска файлов сервисных модулей в /usr/local (т. е. /usr/local/lib/systemd/system), чтобы процесс установки мог быть более последовательным, я могу избежать времени установки предупреждения о непереносимых жестко запрограммированных целевых каталогах установки, и файлы могут попасть в то, что кажется более канонически «правильным» местом? Я согласен добавить конфигурацию в систему (в идеале в виде дополнительных модулей), чтобы это заработало.
Мы здесь не особо этим занимаемся, но я полагаю, что этот вопрос может также относиться к программному обеспечению, установленному с пользовательским префиксом, например. /opt/Мое программное обеспечение.