У меня есть крупный проект, где у нас есть следующие файлы:
Этот продукт будет установлен на аппаратном обеспечении, которое мой работодатель уже выбрал, с помощью Ubuntu Linux (Ясный) как целевой O.S., с нашей целью распределения архива как пакет Debian для упрощения установки и обновлений. Кроме того, у нас есть много шаблонов ERB, в которых мы нуждаемся к "временной замене" с соответствующими значениями на основе на клиента, таким образом, использование postinst сценария будет особенно удобно в наших целях.
Как примечание стороны, пакеты Debian будут сохранены на репозитории сервера, которым мы управляем внутренний.
На данном этапе я использовал dh_make для создания debian каталога и связал файлы (например, правила, управление, и т.д.), но файл правил, который сгенерирован, походит на излишество в моих целях.
На основе этого описания все мне действительно нужен файл "правил", чтобы сделать, просто скопировать файлы с исходного каталога (или в архиве) к целевым каталогам, показанным ниже:
Я прочитал Руководство политики Debian и несколько Практических руководств, которые указывают, что Вы не должны изменять файл правил для использования mkdir для создания каталогов и обычно существует dh_ приложение (например, dh_installdirs, et.al.), который может удовлетворить Вашим потребностям почти в любых целях установки. Страницы справочника для этих dh_ имели отношение, приложения являются поверхностными в лучшем случае и я - вид "в качестве примера" парня.
Тем не менее я немного потерян на том, что лучший подход к тому, чтобы заставлять мой файл правил установить мои различные предварительно скомпилированные двоичные файлы и текстовые файлы Ruby/направляющих к желаемым местоположениям.
Вот мой начальный файл правил. Это - в значительной степени стандартный шаблонный файл правил, который создает dh_make. Мои взгляды состоят в том, что я должен прокомментировать все разделы за исключением установки и затем найти, что соответствующая команда (команды) делает каталоги, файлы копии, и т.д. в том разделе.
Любой совет или предложения значительно ценятся.
#!/usr/bin/make -f package = testapp CC = gcc CFLAGS = -g -Wall ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O2 endif #export DH_VERBOSE=1 clean: dh_testdir dh_clean rm -f build install: build dh_clean dh_installdirs echo "Place the Install Script here" cp $(CURDIR)/testapp-2.0.tar.gz $(CURDIR)/debian/$(package)/opt/testapp-2.0 echo "Finished copying folders" build: touch build binary-indep: install # There are no architecture-independent files to be uploaded # generated by this package. If there were any they would be # made here. binary-arch: install dh_testdir -a dh_testroot -a dh_installdocs -a dh_installchangelogs -a dh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a binary: binary-indep binary-arch .PHONY: binary binary-arch binary-indep clean checkroot
Хотя вы уже получили свой собственный ответ, я отмечу пару вещей.
Похоже, что вы делаете это очень сложным способом. Если вам нужно просто скопировать файлы в определенные каталоги, напишите debian/mypackagename.install
в следующем формате:
path/to/file/relative/to/source/root path/to/install/relative/to/system/root
(не добавляйте /
перед /usr
, или /opt
, или любой другой целевой каталог. Читайте man dh_install
для дополнительной информации)
Тогда ваш debian/rules
может быть таким:
#!/usr/bin/make -f
%:
dh $@
Если у вас есть какой-то makefile и т.д. в корне исходников, то добавьте это к вышеуказанному rules
файлу:
override_dh_auto_build:
override_dh_auto_install:
Не забудьте поместить 7
в debian/compat
.
Также не стоит устанавливать файлы в /opt/
или /usr/local/
и т.д. Они предназначены для файлов, не устанавливаемых пакетами Debian. Debian рекомендует устанавливать в /usr/share/yourcompany/
. Как juzzlin указывает ниже, Ubuntu Software Center может иметь другие требования.
Более конкретно, ваш mypackage.install
файл должен выглядеть так:
src/bin/* usr/bin
src/etc/* etc/