Мне нужен файл правил Debian, чтобы просто скопировать файлы в свою цель - PullRequest
33 голосов
/ 09 июля 2010

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

  • Несколько сторонних скомпилированных двоичных файлов
  • Наши собственные собственные двоичные файлы
  • Коллекция сценариев 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.), которая может удовлетворить ваши потребности практически для любых целей установки.Страницы руководства для этих 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

Ответы [ 2 ]

58 голосов
/ 10 июля 2010

Хотя у вас уже есть свой ответ, я укажу пару вещей.

Кажется, вы делаете это очень сложным образом.Если вам просто нужно скопировать файлы в определенные каталоги, напишите 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 $@

Если у вас есть какой-то make-файл и т. д. в исходном корне,добавьте это к вышеуказанному 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/
0 голосов
/ 26 декабря 2013

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