У меня есть большой проект, в котором у нас есть следующие файлы:
- Несколько сторонних предварительно скомпилированных двоичных файлов
- Наши собственные двоичные файлы
- коллекция Ruby-скриптов
- Крупный проект Ruby on Rails
Этот продукт будет установлен на оборудовании, которое уже выбрал мой работодатель, используя Ubuntu Linux (Lucid) в качестве целевой ОС, с нашей целью распространять архив в виде пакета Debian для упрощения установки и обновления. Кроме того, у нас есть несколько шаблонов ERB, которые нам нужно «заполнить» соответствующими значениями для каждого клиента, поэтому использование сценария postinst будет особенно удобным для наших целей.
В качестве примечания: пакеты Debian будут храниться в серверном репозитории, которым мы управляем сами.
На этом этапе я использовал dh_make для создания каталога Debian и связанных файлов (например, правил, элементов управления и т. д.), но сгенерированный файл правил кажется излишним для моих целей.
Основываясь на этом описании, все, что мне действительно нужно, чтобы файл "rules" делал, это просто копировать файлы из исходного каталога (или внутри архива) в целевые каталоги, показанные ниже:
/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 и др.), которые могут удовлетворить ваши потребности практически для любых целей установки. Справочные страницы для этих приложений, связанных с dh_, в лучшем случае поверхностны, а я являюсь "примером".
Тем не менее, я немного не понимаю, как лучше всего получить мой файл rules для установки моих различных предварительно скомпилированных двоичных файлов и текстовых файлов Ruby/Rails в нужные места.
Вот мой исходный файл rules. Это в значительной степени стандартный шаблонный файл правил, который создает 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