Мне нужен файл правил Debian, чтобы просто скопировать файлы на него.
У меня есть большой проект, где у нас есть следующие файлы:
- Несколько сторонних предварительно скомпилированных двоичных файлов
- Наши собственные внутренние файлы
- Коллекция рубиновых скриптов
- Значительный проект Ruby on Rails
Этот продукт будет установлен на аппаратном оборудовании, которое мой работодатель уже выбрал, используя Ubuntu Linux (Lucid) в качестве целевого O.S., с нашей целью распространять архив как пакет Debian для упрощения установки и обновления. Кроме того, у нас есть несколько шаблонов ERB, которые нам нужно "заполнить" соответствующими значениями для каждого клиента, поэтому использование postinst script будет особенно полезно для наших целей.
В качестве дополнительной заметки пакеты Debian будут храниться в репозитории сервера, который мы управляем внутри компании.
На этом этапе я использовал dh_make для создания каталога debian и связанных файлов (например, правил, элементов управления и т.д.), но созданный файл правил кажется излишним для моих целей.
Основываясь на этом описании, , мне действительно нужен файл правил, который нужно сделать, это просто скопировать файлы из исходного каталога (или в архив) в целевые каталоги, показанные ниже:
- /Opt/company_product/3rd_party_binaries/бен
- /Opt/company_product/3rd_party_binaries/и т.д.
- /Opt/company_product/in_hourse_binaries/бен
- /Opt/company_product/in_hourse_binaries/и т.д.
- /Opt/company_product/рубин
- /Opt/company_product/rails_project
- /Opt/company_product/и т.д.
- /Opt/company_product/общий/журналы
- /Opt/company_product/общий/TMP
- /Opt/company_product/общие/лицензии
- ... И так далее.
Я прочитал Руководство по политике Debian и несколько инструкций, которые указывают, что вы не должны изменять файл правил, чтобы использовать mkdir для создания каталогов, и, как правило, a dh _ (например, dh_installdirs, et.al.), который может удовлетворить ваши потребности практически для любых целей установки. Страницы руководства для этих связанных приложений 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
Ответы
Ответ 1
Хотя у вас уже есть свой собственный ответ, я укажу несколько вещей.
Вы, кажется, делаете это очень сложным образом. Если вам просто нужно скопировать файлы в определенные каталоги, напишите 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 [email protected]
Если у вас есть какой-то make файл и т.д. в исходном корне, добавьте его в вышеуказанный файл 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/
Ответ 2
Вы можете установить cdbs и изменить файл правил, как этот
#!/usr/bin/make -f
include /usr/share/cdbs/1/rules/debhelper.mk
binary-install/package_name::
mkdir debian/$(cdbs_curpkg)/destination_path
cp path_of_your_files debian/$(cdbs_curpkg)/destination_path