Руководство начинающего разработчика Debian - Изменение исходных текстов

Установка в необходимый каталог


В большинстве случаев, программы устанавливаются в существующую иерархию каталогов вашей системы таким образом, чтобы исполняемый файл попал в один из каталогов, указанных в переменной среды $PATH, а файлы документации и страницы Руководства оказались в стандартных местах. Вы должны убедиться, что операция установки выполняется правильно, но при этом вы должны сделать так, чтобы все необходимые файлы могли быть установлены во временный каталог, который будет создан в каталоге debian/ (обычно этот временный каталог называется debian/tmp), это позволит стандартным программам разработчика построить результирующий пакет. Все, что находится в этом временном каталоге, появится в системе пользователя при установке вашего пакета. Единственное отличие состоит в том, что программа dpkg будет устанавливать эти файлы по отношению к корневому каталогу.

Вообще говоря, вам нужно установить программу в каталог debian/tmp, но при этом она должна себя правильно вести, если ее поместить в корневой каталог, то есть, если установить пакет. Если процесс построения использует программы GNU autoconf, то программа dh_make добавит необходимые команды с тем, чтобы необходимое действие выполнялось автоматически, а вы можете пропустить данный раздел. В других случаях вам, скорее всего, понадобится просмотреть и поправить make-файлы.

Вот, например, соответствующая часть файла Makefile программы gentoo[4]: # Куда поместить исполняемые файлы по команде 'make install'? BIN = /usr/local/bin # Куда поместить значки по команде 'make install'? Внимание: если вы # поменяете это значение, при старте программа gentoo может не найти # этих значков. Вам придется поменять значение параметра 'путь к значкам' # (в окне настроек страничка "Пути"). ICONS = /usr/local/lib/gentoo/

Прежде всего вы должны добавить две строчки, которые говорят: # Добавлено для Debian GNU/Linux. DESTDIR =

так как процесс построения требует что-то подобное (об этом вы можете прочитать в раздел Файл rules, раздел 4.4).

В файле Makefile был указан каталог, куда будет установлена программа. Вам необходимо заменить ту строчку на: # Куда поместить исполняемые файлы по команде 'make install'? BIN = $(DESTDIR)/usr/X11R6/bin


Вы можете спросить «почему в этот каталог, а не в какой-нибудь другой?» Потому что существуют определенные правила, говорящие куда должны быть установлены программы. Об этом можно почитать в стандарте «Иерархии файловой системы» (см. /usr/share/doc/debian-policy/fhs/). Поэтому мы должны устанавливать программу в каталог /usr/X11R6/bin вместо каталога /usr/local/bin, а страницу Руководства (в нашем случае она отсутствует, но так как для большинства программ они существуют, мы создадим ее позже) в каталог /usr/share/man/man1, а не в каталог /usr/local/man/man1.

Следующий шаг несколько сложнее. Если вы произведете следующее изменение: ICONS = $(DESTDIR)/usr/share/gentoo/

что соответствует стандарту, вам придется изменить исходные тексты программы. Но где и что искать? Вы можете попробовать выполнить команду: grep -n usr/local/lib *.[ch]

(ее нужно выполнить в каждом каталоге, в котором присутствуют файлы с расширением .c или .h). Программа grep выведет названия файлов и номера строк, в которых присутствует ‘usr/local/lib’. Теперь измените в этих строчках ‘usr/local/lib’ на ‘usr/share’ — и готово. Только будьте внимательны и не измените что-нибудь другое, особенно, если вы не слишком много знаете о программировании на языке C. :-)

Теперь вам нужно найти цель ‘install’ (поищите в файле Makefile строчку, содержащую ‘install:’) и переименуйте все ссылки на каталоги, не использующие переменные, описанные в начале файла. В нашем случае, мы несколько улучшим то, что было. Если раньше было: # ----------------------------------------- Установка

# Для того, чтобы выполнить это, вы должны иметь права пользователя root! install: gentoo install ./gentoo $(BIN) install icons $(ICONS) install gentoorc-example $(HOME)/.gentoorc

После необходимого изменения, он будет выглядеть так: # ----------------------------------------- Установка

# Для того, чтобы выполнить это, вы должны иметь права пользователя root! install: gentoo-target install -d $(BIN) $(ICONS) $(DESTDIR)/etc install ./gentoo $(BIN) install -m644 icons/* $(ICONS) install -m644 gentoorc-example $(DESTDIR)/etc/gentoorc install -d $(DESTDIR)/usr/share/doc/gentoo/html cp -a docs/* $(DESTDIR)/usr/share/doc/gentoo/html

Внимательный читатель заметит, что мы поменяли ‘gentoo’ на ‘gentoo-target’ в строчке, где указано ‘install:’. Это называется исправлением ошибки. :-)

Каждый раз, когда вы вносите изменения, не связанные непосредственно с созданием пакета Debian, обязательно отправьте их авторам программы с тем, чтобы они могли быть включены в следующий выпуск программы. Заметьте, что вы не должны посылать содержимое каталоге debian, однако вы должны посылать любые другие изменения. И попытайтесь не создавать авторам лишних проблем, внося изменения, имеющие отношения только к Linux (или даже Unix!).


Содержание раздела