Мне нужен мой файл правил Debian, чтобы просто скопировать файлы в его цель
У меня есть большой проект, где у нас есть следующие файлы:
- несколько предварительно скомпилированных бинарных файлов третьей стороны
- наши собственные внутренние двоичные файлы
- набор скриптов Ruby
- значительный проект Ruby on Rails
Этот продукт будет установлен на аппаратном обеспечении устройства, которое мой работодатель уже выбрал, используя Ubuntu Linux (Lucid) в качестве целевой операционной системы, с нашей целью распространения архива в виде пакета Debian для облегчения установки и обновления. Кроме того, у нас есть ряд шаблонов ERB, которые нам нужно "заполнить" соответствующими значениями на основе каждого клиента, поэтому использование сценария postinst будет особенно удобно для наших целей.
В качестве дополнительного замечания, пакеты Debian будут храниться в репозитории сервера, которым мы управляем самостоятельно.
На этом этапе я использовал dh_make для создания каталога debian и связанных с ним файлов (например, правил, элементов управления и т. д.), но файл правил, который генерируется похоже, это перебор для моих целей.
Основываясь на этом описании, все, что мне действительно нужно, чтобы сделать файл "правила", это просто скопировать файлы из исходного каталога( или из архива) в целевые каталоги. ниже :
- /opt / company_product/3rd_party_binaries / bin
- /opt / company_product/3rd_party_binaries / etc
- /opt / company_product/in_hourse_binaries / bin
- /opt / company_product/in_hourse_binaries / etc
- / opt / company_product / ruby
- / opt / company_product / rails_project
- / opt / company_product / etc
- / opt / company_product/shared / logs
- /opt / company_product/shared / tmp
- / opt / company_product/shared / license
- ...И так далее.
Я прочитал руководство по политике Debian и несколько инструкций, которые указывают, что Вы не должны изменять файл правил, чтобы использовать mkdir для создания каталогов, и обычно существует dh_ приложение (например, dh_installdirs, et.al.), который может удовлетворить ваши потребности практически для любых целей установки. Man-страницы для этихdh_ связанных приложений в лучшем случае поверхностны, и я являюсь "примером" типа парня.
Тем не менее, я немного теряюсь в том, что лучший подход-это получить мой файлrules для установки моих различных предварительно скомпилированных двоичных файлов и текстовых файлов Ruby/Rails в нужные места.
Вот мой исходный файлПравил . Это в значительной степени стандартный шаблонный файл правил, который создает dh_make. Я думаю, что я должен закомментировать все разделы, за исключением install , а затем найти соответствующие команды для создания каталогов, копирования файлов и т. д. в пределах этого раздела.
Любой совет или предложения очень ценятся.
#!/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
2 ответа:
Хотя у вас уже есть свой собственный ответ, я укажу на пару вещей.
Вы, кажется, делаете это очень сложным образом. Если вам просто нужно скопировать файлы в определенные каталоги, напишите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 может иметь различные требования.mypackage.install
должен выглядеть следующим образом:src/bin/* usr/bin src/etc/* etc/