2013-03-18 2 views
7

Я действительно застрял в этом вопросе (я уверен), поэтому любая помощь будет очень признательна. Я создал стандартный пакет ubuntu с dh_make. Цель этого пакета - создать пакет, который будет устанавливать все связанные с ldap пакеты, которые требуется системе, включая конфигурацию. Одним из шагов, которые я пытаюсь сделать, является копирование файла /etc/ldap.conf при создании резервной копии существующего файла. Как мне это сделать? Я попытался создать postinst-скрипт, который выглядит по существу следующим образом, но я не понимаю, как пакет хранит файлы, и я получаю сообщение об ошибке с отсутствующим файлом etc/ldap.conf. Каков наилучший способ сделать это? Вот мой postinst сценарий:Создание пакета Debian. Как установить файлы конфигурации?

#!/bin/bash -xv

install -v -b etc/ldap.conf /etc/ldap.conf > /tmp/tst 2>&1 

Вот мой скелет структура:

 
    [email protected]:~/navldapubuntu-0.1/debian# tree 


    ├── changelog 
    ├── compat 
    ├── control 
    ├── copyright 
    ├── docs 
    ├── etc 
    └── ldap.conf 
    ├── install 
    ├── postinst 
    ├── README.Debian 
    ├── README.source 
    ├── rules 
    ├── source 
    └── format 
    ├── navldapubuntu 
    └── etc 
    ├── navldapubuntu.debhelper.log 
    ├── navldapubuntu.dirs 
    └── navldapubuntu.doc-base.EX 

Вот некоторая дополнительная информация о пакете я создал.

 
    dpkg --contents tnoldapubuntu_0.1-1_all.deb (truncated output) 
    ./usr/ 
    ./usr/share/ 
    ./usr/share/doc
./usr/share/doc/navldapubuntu/ ./usr/share/doc/navldapubuntu/copyright ./usr/share/doc/navldapubuntu/README.Debian ./usr/share/doc/navldapubuntu/changelog.Debian.gz ./etc/ldap.conf

+0

резервное копирование в postinst? возможно, в preinst? файл проверки существует: 'if [-f /etc/ldap.conf], затем cp /etc/ldap.conf /etc/ldap.conf.dist fi', правильно? – mkjasinski

+0

Проблема не в логике cp. Проблема в том, что источник /etc/ldap.conf не существует. Как включить это в пакет, чтобы мой скрипт postinstall увидел файл /etc/ldap.conf? Теперь я получаю сообщение об ошибке в моем скрипте: install: can not stat '/navldap-0.1/debian/etc/ldap.conf ': Нет такого файла или режиссера – user2175757

+0

странно, у вас нет файла в'/и т. д. и выбрасывание ошибки, которой у вас нет в другом каталоге? сценарий не может запускать 'stat' в файле в вашем пакете, из которого вы запускаете установку? – mkjasinski

ответ

3

Вам необходимо создать файл «conffiles» в каталоге DEBIAN рядом с файлом «control» и объявить в нем /etc/ldap.conf. Таким образом, этот файл будет автоматически считаться конфигурационным файлом, и изменения в нем вызовут «новый файл конфигурации, который вы хотите переписать, yadda yadda».

+0

Большое вам спасибо. Теперь я получаю ошибку при создании после создания файла conffiles с /etc/ldap.conf. Кроме того, можно передать флаг для создания файла резервной копии /etc/ldap.conf? : dpkg-deb --build debian/navldapubuntu .. dpkg-deb: ошибка: conffile '/etc/ldap.conf 'не отображается в пакете dh_builddeb: dpkg-deb --build debian/tnoldapubuntu .. возвращенный код выхода 2 – user2175757

+0

На самом деле, файл conffiles выглядит так, как будто он сохраняет файл. Я хочу, чтобы пакет включал версию файла ldap.conf, которая устанавливается, когда я устанавливаю apt-get install. Например: (1) Создайте пакет с настраиваемым файлом ldap.conf (2) apt-get install «имя пакета», и этот настраиваемый ldap.conf также будет установлен. Надеюсь, это имеет смысл? – user2175757

+0

Имеет смысл, поэтому вы должны включить /etc/ldap.conf в свой пакет. Что произойдет, если вы это сделаете? – wazoox

7

Существует специальный инструмент, который предназначен для создания пакетов конфигурации: http://debathena.mit.edu/config-packages

Вот простой шаблон, который может быть полезным для быстрого старта.

Список файлов

  • шаблона (каталог)
  • шаблона/Debian (каталог)
  • шаблона/Debian/управление
  • шаблона/Debian/изменения
  • шаблон/Debian/вытеснять
  • шаблон/debian/правила
  • шаблон/debian/postinst
  • шаблон/Debian/установка
  • шаблон/Debian/DOCS
  • шаблон/Debian/Compat
  • шаблон/README
  • шаблон/BUILD
  • шаблон/файлов (каталог)
  • шаблон/файлы/и т.д./ldap.conf.MyCompanyName

Содержание

шаблон/Debian/контроль:

Source: PACKAGE_NAME 
Section: morpho/misc 
Priority: optional 
Maintainer: MAINTAINER 
Build-Depends: debhelper, config-package-dev (>= 5.0~) 

Package: PACKAGE_NAME 
Architecture: all 
Depends: ${misc:Depends}, DEPENDENCY [, DEPENDENCY ...] 
Provides: ${diverted-files} 
Conflicts: ${diverted-files} 
Description: PACKAGE_DESCRIPTION_SHORT 
PACKAGE_DESCRIPTION_LONG. 

шаблон/Debian/вытеснять

/etc/ldap/ldap.conf.mycompanyname 

шаблон/Debian/установка

files/*/

шаблон/Debian/postinst

#!/bin/sh 
set -e 
#DEBHELPER# 

POSTINST_SCRIPT 

шаблон/Debian/правила

#!/usr/bin/make -f 

# Exclude *.svn* from building 
# you probably don't need this if don't use SVN 
export DH_ALWAYS_EXCLUDE=.svn 

# Core (check http://debathena.mit.edu/config-packages for more information) 
%: 
     dh [email protected] --with=config-package 

# Prevent dh_installdeb of treating files in /etc as configuration files 
# you need this if need configuration files been always rewritten 
# even if changed 
override_dh_installdeb: 
     dh_installdeb 
     rm debian/*/DEBIAN/conffiles 

шаблон/Debian/документы

README 
BUILD 

И, наконец, вы можете построить этот пакет с помощью следующей команды:

dpkg-buildpackage -us -uc -I.svn 
+0

Спасибо, что предоставили полный пример, это именно то, что я искал! – Magnus

+0

Я обнаружил, что суффикс смещенного файла «mycompanyname» должен быть префиксом имени пакета (например, «mycompanyname-ldap-config») с 'config-package-dev' 5.1.2 – Lucas

Смежные вопросы