Мне нужен мой файл правил 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 29

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/

Вы можете установить 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