Мне нужен мой файл правил Debian для простого копирования файлов в, он - цель

У меня есть крупный проект, где у нас есть следующие файлы:

  • Некоторые третья сторона предварительно скомпилировали двоичные файлы
  • Наши собственные внутренние двоичные файлы
  • Набор сценариев Ruby
  • Значительный проект Ruby on Rails

Этот продукт будет установлен на аппаратном обеспечении, которое мой работодатель уже выбрал, с помощью Ubuntu Linux (Ясный) как целевой O.S., с нашей целью распределения архива как пакет 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.), который может удовлетворить Вашим потребностям почти в любых целях установки. Страницы справочника для этих 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
33
задан tripleee 16 September 2011 в 07:03
поделиться

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 $@

Если у вас есть какой-то 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/
59
ответ дан 27 November 2019 в 18:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: