Я сделал несколько пакетов debian, чтобы упростить развертывание конфигураций на новых серверах, и хочу поместить их в систему контроля версий SVN. Проблема в том, что SVN создает каталог .svn для каждого подкаталога в исходном дереве, поэтому я не могу создавать пакеты в исходном дереве 'dpkg-deb --build', потому что каталоги '.svn' будут включены в результирующий пакет. Пока что, когда я хочу создать пакет, мне нужно экспортировать каталог в другое место и строить оттуда.
Есть ли быстрый способ заставить dpkg-deb --build игнорировать каталоги .svn?
Чтобы исключить файлы, помещаемые в исходный пакет debian, вы должны создать файл:
debian/source/options
и введите параметры, которые вы хотите передать dpkg-source, в вашем случае:
tar-ignore = ".svn/*"
См. Man для dpkg-source.
Здесь стоит задокументировать, что если вы собираетесь использовать dpkg-buildpackage
что у него есть -i
переключиться, чтобы игнорировать вещи. IE, используйте -i.svn
игнорировать каталог .svn.
Насколько я понимаю, вы не должны создавать пакет debian с dpkg-deb --build
в первую очередь. Если вы используете dpkg-buildpackage
вместо этого вам не придется беспокоиться о том, что каталоги .svn будут включены в ваш пакет.
Видеть: http://raphaelhertzog.com/2010/12/17/do-not-build-a-debian-package-with-dpkg-b/
Может быть способ получше, но вот тот, который я тщательно не тестировал:
Использовать dh_make
для создания скелета пакета debian. Поместите файлы в каталог над debian
каталог.
отредактируйте полученный dirs
file и укажите пути, по которым вы собираетесь перемещать файлы, например:
/opt/mypackage
/usr/local/bin
Тогда в вашем rules
удалите код $ (MAKE) и установите в разделе install: build примерно следующее:
install: build
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
# Copy files into staging area
rsync --exclude .svn -a mypackage/ debian/tmp/opt/mypackage/