Самый простой ответ; в директории исходного уровня Makefile.am: вверху
# Install my_script in $(bindir) and distribute it.
dist_bin_SCRIPTS = my_script
Итак, $(bindir)
по умолчанию для сценариев.
-
Для более надежной реализации, которая фактически охватывает сценарии для демонами/услуг (первой ссылкой на авторитетный источник):
Там нет необходимости для EXTRA_DIST или любого правила сборки : Automake передает их из AC_CONFIG_FILES (см. Требования). CLEANFILES по-прежнему полезен, потому что по умолчанию Automake очистит цели AC_CONFIG_FILES в distclean, а не чист.
Ссылка на источник (http://www.gnu.org/software/automake/manual/html_node/Scripts.html):
Примеры:
Установите в другое место:
# Yes, even though its `init_d_SCRIPTS`, we use `init_ddir`,
# with-out a second underscore.
init_ddir = $(sysconfdir)/rc.d/init.d
init_d_SCRIPTS = <yourscript>
# CLEANFILES = $(init_d_SCRIPTS)
Обратите внимание, что $(sysconfdir)
$(prefix)/etc
представляет; базовый путь до init.d
или rc.d/init.d
, и вы можете/должны (?) un -комментировать строку CLEANFILES
в любом примере, если ваш скрипт инициализации создается Autotools.
Или установить местоположение по умолчанию:
bin_SCRIPTS = <yourscript>
# CLEANFILES = $(bin_SCRIPTS)
Какой будет $(bindir)
EDIT:
Обе приведенные выше примеры предполагают, что Вы имеете Autotools генерировать init_d_SCRIPTS
файлы, но что, если мы хотим распространять уже созданный скрипт и установить это в наш $(init_ddir)
местоположение?
init_ddir = $(sysconfdir)/init.d
dist_init_d_SCRIPTS = <yourscript>
Хитрость заключается в том, что dist
не нужно следовать _bin_SCRIPTS
, это может быть dist_<your_var>_SCRIPTS
. Первичный SCRIPTS
позволяет Autotools знать, что значение является скриптом и как его обрабатывать, а ключевое слово dist
в начале предупреждает Automake о том, что он не собирается создавать файл для нас - и инструктирует Automake не искать makefile в исходном каталоге скрипта.
Я хотел добавить это небольшое редактирование, так как мне просто пришлось внести исправление самостоятельно для сценария, который я распространяю с моим источником.
-
Extra
Для тех, кто будет следующим беспокоиться об их инициализации сценарии в отношении упаковки (в частности Debian упаковки) - что делает это напоминание для себя более или менее -> внешнего вида здесь:
https://www.debian.org/doc/manuals/maint-guide/dother.en.html#initd
Погрешность (s) я получал включен debuild пытается установить файл init.d и файл конф непосредственно в /etc
и /etc/init.d
в корне моей файловой системы, а не в debian/<package>/<location>
, как это предполагается во время сборки пакета.
Я обнаружил, что в конечном итоге мне пришлось удалить добавленное правило, которое было предоставлено в учебниках по упаковке для Debian, где они переопределяют dh_auto_install
. В частности, этот бит в debian/rules
:
#!/usr/bin/make -f
%:
dh [email protected]
# If installing an upstream init.d script:
override_dh_installinit:
dh_installinit --name=<scriptname> --onlyscripts
# Remove the following:
# override_dh_auto_install:
# $(MAKE) DESTDIR=$$(pwd)/debian/<package> prefix=/usr install
После удаления этого правила (что не было необходимости, чтобы удалить только после добавления моего init.d скрипт и файл конф) все генерируемый и скомпилированы абсолютно прекрасно .... В том числе - в факт - сброс бункеров в их пункт назначения с использованием префикса /usr
, что и было желательным эффектом переопределения в первую очередь.
Переопределение вызова dh_installinit
говорит debuild о том, чтобы не устанавливать скрипт инициализации в качестве make-файла и указывать только на вызовы update-rc.d для регистрации скрипта с системой. Я решил назвать сценарий, отличный от пакета; и поэтому мне нужно было передать параметр --name =.
Надеюсь, что это поможет кому-то, я знаю, что это поможет мне в будущем, если этот ответ будет разрешен для существования.
Это хороший вопрос, надеюсь, вы не возражаете против дополнительной информации, о которой вы не просили.Поскольку есть промежуток времени и нет принятого ответа, я опубликовал очень подробный ответ, который также должен служить напоминанием для меня. Когда я сам ищу эти данные, ваш вопрос один из первых появится в Google для моего перефразирования. – Rik