LINUX.ORG.RU

DEB с конфигурационными файлами


0

0

Начал разбираться с построением DEB, решив начать с малого - сделать пакет из кастомных конфигов Астериска.

Подправил control и rules, сгенерированные dh_make

Собрал от юзера и рута с помощью:

debuild -i -us -uc

Все собралось, но:

1. файлы в deb лежат относительно текущей директории (./etc вместо /etc)

2. если подменить стандартные пермишены, генерируемые dh_fixperms, lintian начинает жаловаться

Посмотрел как сделали мейнтенеры в Debian, постарался воспроизвести: ситуация не изменилась.

Пожалуйста, пините меня в направлении правильной доки, в которой было более-менее разжевано как правильно класть файлы и чинить пермишены или в сторону минимальных сборочных deb-файлов, по которым человеку, испорченному rpm легко было сориентироваться :)

там вродь сборка делается через fakeroot, может оно?

Deleted
()

1. cp -r etc $(CURDIR)/debian/asterisk-settings — это не очень хорошо. Посмотрите в сторону dh_install.

Если вкратце: создаете файл debian/package_name.install следующего вида:

source dest
source dest

например (я собирал nginx):

objs/nginx usr/sbin
html/* var/www/nginx-default
debian/conf/* etc/nginx
debian/NEWS.Debian usr/share/doc/nginx
debian/ngensite usr/sbin
debian/ngdissite usr/sbin

Пути относительны — источник берется относительно каталога, в которм лежит каталог debian, приемник — относительно корня (usr/bin вместо /usr/bin)

В правило install Вам нужно будет добавить что-то вроде:

dh_install --exclude=.svn

По поводу прав доступа: очень рекомендую к прочтению Debian Policy Manual, в данном случае — раздел 10.9 «Permissions and owners» (http://www.debian.org/doc/debian-policy/ch-files.html#s10.9). Если уж очень нужно закрутить гайки на правах доступа, я бы сделал это в postinst-скрипте.

Либо можно создать файл debian/package-name.lintian-overrides (посмотрите, например, как это сделано в пакете mysql-5.1-server)

> файлы в deb лежат относительно текущей директории (./etc вместо /etc)


Не совсем понимаю, что Вы имеете в виду. То, что будет скопировано в /etc, лежит в .deb-файле в CONTENTS/etc. По-моему, вполне логично, что путь относительный: если я не ошибаюсь, dpkg перед установкой пакета распаковывает его во временную папку.

> Пожалуйста, пините меня в направлении правильной доки


Debian Policy Manual (http://www.debian.org/doc/debian-policy/). Распечатать и повесить на стенку :-)

> в сторону минимальных сборочных deb-файлов


Если Вы собираете пакеты в Debian, то сделайте apt-get source package_name и смотрите в папку package_name/debian/.

Можете посмотреть в сторону Ubuntu Packaging Guide (https://wiki.ubuntu.com/PackagingGuide/Complete)


sjinks ★★★
()
Ответ на: комментарий от sjinks

спасибо большое за советы, попробую

сейчас смотрю внимательнее дебиановские файлы сборки, там все как Вы и говорите, но скрипты очень уж монструозные :)

> Не совсем понимаю, что Вы имеете в виду. То, что будет скопировано в /etc, лежит в .deb-файле в CONTENTS/etc

dpkg -c blah.deb показывает файлы в виде ./etc/asterisk и прочее

BreadFan ★★
() автор топика
Ответ на: комментарий от BreadFan

> но скрипты очень уж монструозные :)

Посмотрите на WordPress (apt-get source wordpress) — его скрипты, наверное, будут ближе всего к тому, что Вы хотите.

> показывает файлы в виде ./etc/asterisk и прочее

Это нормально.

sjinks ★★★
()
Ответ на: комментарий от sjinks

спасибо за помощь, вроде разобрался

BreadFan ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.